[Window] NoSql 서버 Caasandra를 설치하는 방법


Development note/Window  2020. 7. 8. 17:35

안녕하세요. 명월입니다.


이 글은 Window에서 NoSql 서버 Caasandra를 설치하는 방법에 대한 글입니다.


최근의 프로그램 프로젝트를 작성 함에 있어서 데이터베이스는 거의 필수적입니다. 데이터베이스는 프로그램에서 사용되는 데이터를 수집하고 효율적으로 검색하고 관리하기 위한 시스템입니다.

그런 데이터베이스는 알고리즘의 특성과 보관 방식에 따라 여러가지 형태로 있는데, 그중 대표적이 RDBMS(관계형 데이터베이스)입니다.

간단하게 이야기해서 MS sql server, mysql, MariaDB, Postgres..의 데이터베이스가 RDBMS입니다.


RDBMS형 데이터베이스는 여러 가지 장점이 있고 사용하기 편리합니다만, 한가지 치명적인 약점이 있으니 그것이 확장성이 매우 약합니다.

이 확장성이란 데이터베이스가 커지면 커질수록 데이터베이스의 크기를 키워야 하는데 이게 힘듭니다. 확장성 뿐 아니라 데이터베이스가 커지면 기하급수적으로 느려지는 단점이 있습니다. 최근에는 PC 성능이 좋아서 웬만한 varchar가 20컬럼 이상인 테이블 기준으로 약 1억 건까지는 무난하게 검색이 됩니다만, 몇억 건이 되면 엄청 느려집니다.

최근 빅 데이터의 이슈가 많습니다만 RDBMS의 데이터 수용력으로는 조금 힘들 것 같습니다.


NoSql의 경우는 RDBMS 처럼 관계형 트리 구조가 아니라 확장성이 좋고, 데이터 크기와 상관없는 성능의 속도를 보여지는 장점이 있습니다. 그러면 이 Nosql이 가장 좋은 DB의 선택이 될 것처럼 보이나 실제는 Nosql는 RDBMS에 익숙해져 있는 유저라면 개념적으로 이해하기 어려운 부분도 많고 관계형에 대한 제약(reference)이 약하기 때문에 무결성이나 데이터 중복등이 자주 발생할 수 있고, 그 결과 데이터의 신뢰성이 떨어지는 상황이 발생할 수도 있습니다.

그렇게 때문에, Nosql만을 사용하는 경우는 드물고 대부분 인덱싱에 관계된 부분은 RDBMS에서 설계하고 그 키를 이용해 데이터의 용량이 큰 부분은 Nosql에서 넣는 식으로 설계하게 됩니다.


Nosql도 여러가지 종류가 많이 있습니다만, 저의 경우는 Apache 재단의 Caasandra를 자주 사용합니다. Caasandra를 사용하는 이유는 일단 무료이고 커뮤니티가 크기 때문에 많은 정보를 쉽게 얻을 수 있는 장점이 있어서 사용합니다.

예전에는 Linux 환경에서 Caasandra를 설치한 적이 있습니다.

링크 - [CentOS] Linux환경에서 Cassandra(NoSql DB)를 설치하는 방법(DBeaver로 접속하기)


이번에는 Window 환경에서 설치해 보도록 하겠습니다.

먼저 윈도우 환경에 Java와 Python이 설치되어 있어야 합니다.

링크 - [Java] 01. Java 설치와 Eclipse 설치

링크 - [Python] Python 3 설치하기(Anaconda 3 설치)


위 링크에서는 Java는 1.8를 설치합니다.

링크 - https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

그리고 Python이 3.x이 설치되어 있는데 Caasandra는 Python의 2.x를 지원합니다. 즉, Anaconda를 2.x로 설치합니다.

(Cassandra가 무료 버전이나 좋은데 Java 버전이나 Python 버전이 참.... 귀찮네요.. 이것 때문에 Java와 Python을 다시 설치했습니다.;;;)

이제는 apache 홈페이지로 가서 cassandra를 다운 받습니다.

링크 - https://cassandra.apache.org/download/

mirror는 적당한 곳에서 다운로드 받습니다.

그리고 tar.gz 파일로 압축이 되어 있는데 7z 압축 해제 프로그램을 이용하면 해제가 가능합니다.

그리고 Window 키 + pause/break 키를 눌러서 환경 설정을 합니다.

실행하기 전에 cassandra/conf 폴더로 가서 설정을 합니다. cassandra.yaml 파일을 메모장에서 엽니다.

중간 쯤에 가보면 authenticator가 있습니다.

이 부분을 PasswordAuthenticator로 수정합니다. AllowAllAuthenticator의 경우는 패스워드 없이 접근 가능한 것인데 패스워드로 접근 가능하게 수정하는 것입니다.

이번에는 원격 접속을 허용하는 것입니다.


초기 설정은 localhost로 설정되어 있고, broadcast_rpc_address가 주석 처리되어 있습니다.

이 부분을 rpc_address를 0.0.0.0으로 설정하고 broadcast_rpc_address의 주석을 해제하면 1.2.3.4로 설정됩니다.

이제 설정은 끝났습니다. Cassandra를 기동하겠습니다. cassandra/bin 폴더로 가서 cassandra.bat를 실행합니다.


nodetool status를 실행하고 cassandra가 실행되어 있는 것을 확인할 수 있습니다.

cassandra가 작동되는 것을 확인할 수 있습니다.

여기까지 문제없이 되면 설치가 완료 된 것입니다.


이제 데이터 베이스(Keyspace)를 작성하고 유저를 만들겠습니다.

초기 유저와 비밀번호는 cassandra//cassandra입니다.

cqlsh -u cassandra -p cassandra

먼저 유저를 작성하겠습니다. 그리고 cassandra의 id를 제거합니다.

-- 유저 추가, SUPERUSER 권한 추가
CREATE USER nowonbun WITH PASSWORD 'a12345' SUPERUSER;
-- 비밀번호 변경과 권한 해제
ALTER USER cassandra WITH PASSWORD 'a12345' NOSUPERUSER;
-- 유저 삭제
DROP USER cassandra;

참고로 접속 중인 상태에서는 유저를 삭제할 수 없습니다. 그래서 유저 생성 후에 종료해서 다른 아이디로 로그인 한 후에 유저를 제거합니다.


이제 데이터 베이스를 작성해 보겠습니다. Nosql에서는 데이터 베이스를 Keyspace라고 이야기합니다.

-- 하나의 Data Center를 이용
CREATE KEYSPACE Test WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor' : 3};
-- 두 개 이상의 Data Center를 이용
CREATE KEYSPACE Test WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1};

여기까지 카산드라 설치와 설정은 끝났습니다.


이제부터 Query browser에서 접속해서 사용하는 방법입니다.

Nosql이 사용하기 힘든 이유 중 하나가 좋은 Query browser가 없습니다. 제가 예전에는 sql developer나 A5M2를 자주 사용했는데... 이 Nosql때문에 DBeaver로 바꾸었습니다.

가장 큰 이유는 이 Nosql를 지원한다는 것입니다.

링크 - Dbeaver (무료 데이터 베이스 접속 툴)


막상 실행하면 Nosql connection이 없습니다. 드라이버를 추가해야 합니다.

저는 이미 추가가 되어 있지만 처음 사용하시는 분들은 없을 것입니다. new로 추가합니다.

Driver Name은 적당하게 작성하시고 Class Name과 Url Template는 아래와 같이 작성합니다.

# Class Name
org.apache.cassandra2.cql.jdbc.CassandraDriver
# Url Template
jdbc:cassandra://{host}[:{port}]/{database}

그리고 port는 9042로 설정합니다.

그리고 Add Artifact를 클릭해서 드라이버를 설정합니다.

링크 - https://mvnrepository.com/artifact/com.github.adejanovski/cassandra-jdbc-wrapper/3.1.0

Driver를 생성하고 Connection을 생성하면 우리가 추가한 Cassandra가 있습니다.

그리고 우리가 설치한 Cassandra를 설정합니다.

Tset Connection을 실행해 봅니다.(Driver Download화면이 나오면 설치하면 됩니다.)

그리고 테이블을 하나 만들고 테스트를 합니다.

-- Ketspace 설정
use test;
-- 테이블 생성
create table test(
	idx bigint,
	contents text,
	primary key(idx)
);
-- 데이터 입력
insert into test.test (idx,contents) values(1, 'hello world');
-- 검색
select * from test.test;

Cassandra가 제대로 실행되는 게 확인이 됩니다.


여기까지 Window에서 NoSql 서버 Caasandra를 설치하는 방법에 대한 글이었습니다.


궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.