[NoSQL/Cassandra] NoSQL의 대표주자 Cassandra 설치하기

사용자 삽입 이미지
요즘들어 NoSQL이라는 말들을 많이 듣게 됩니다. 대용량 데이터베이스의 한계점을 넘어들 수 있는 것(?)들 쯤으로 인식이 되더군요. 좀 더 자세한것을 알아보기 위해서는 사용을 해볼 필요가 있을것 같습니다. 앞으로는 카산드라에 대해 몇개의 글을 작성해 보겠습니다.

최신버전의 카산드라는 [이곳]에서 다운받을 수 있습니다. 이글을 쓰고 있는 시점에서 보기엔 아직 1.0도 가지 못한 상태입니다만 그래도 Facebook과 Twitter등에서 멀쩡하게 사용중인것을 보면 능력에서 만큼은 인정 받을정도이지 않을까 생각이 됩니다. 카산드라는 일반적인 키/밸류 시스템보다 좀더 진화된 형태인 컬럼패밀리(ColumnFamily) 기반의 데이터 모델을 지원합니다. 이 개념은 쉬우면서도 쉽지 않은 개념이더군요. 계속해서 관련글을 작성해 보도록 하겠습니다.

지금부터 작성하는 설치에 관련된 글은 리눅스 기반에서 설명을 할 것입니다.

1. 필요조건 확인

카산드라는 구동하기 위해서는 단지 Java 1.6 이상의 버전이 설치되어있으면 됩니다.

2. 설치 방법

다음의 간단한 설치 방법은 기본적인 하나의 노드 클러스터를 구동하는 방법만을 설명할 것입니다.
[code]tar -zxvf apache-cassandra-$VERSION.tar.gz
cd apache-cassandra-$VERSION
sudo mkdir -p /var/log/cassandra
sudo chown -R `whoami` /var/log/cassandra
sudo mkdir -p /var/lib/cassandra
sudo chown -R `whoami` /var/lib/cassandra[/code]
로그가 쌓이는 위치나 데이터가 저장되는 공간의 위치를 변경하고 싶을 경우 conf/cassandra.yaml 파일의 설정을 변경하면 됩니다.

3. 실행

[code] bin/cassandra -f[/code]
위의 명령을 통해 카산드라를 foreground에서 구동할 수 있습니다. -f 옵션을 사용하지 않을 경우 기본적으로 백그라운드 형태로 구동을 하게 됩니다.

4. 클라이언트 접속하기

[code]bin/cassandra-cli –host localhost[/code]
[code]Connected to: “Test Cluster” on localhost/9160
Welcome to cassandra CLI.

Type ‘help;’ or ‘?’ for help. Type ‘quit;’ or ‘exit;’ to quit.
[default@unknown] [/code]

위와같은 명령을 사용하면 현재 구동중인 서버에 접속할 수 있습니다. 물론 원격지라면 적절한 아이피나 호스트명을 적어주면 접속이 가능하겠죠. –host옵션 없이 구동할 경우 클라이언트만 실행이 됩니다. 이후에 connect명령을 이용하여 호스트에 접속을 하여야 합니다.

5. 간단히 사용해 보기

4번과 같이 정상적으로 접속이 된다면 이후에 help;?명령을 통해 실행가능한 명령어 목록을 볼 수 있습니다. quit;exit;를 입력하면 접속이 종료됩니다. 몇가지 예시를 통해 카산드라를 느껴보도록 합시다.
[code][default@unknown] create keyspace Keyspace1;
ece86bde-dc55-11df-8240-e700f669bcfc
[default@unknown] use Keyspace1;
Authenticated to keyspace: Keyspace1
[default@Keyspace1] create column family Users with comparator=UTF8Type and default_validation_class=UTF8Type;
737c7a71-dc56-11df-8240-e700f669bcfc

[default@KS1] set Users[jsmith][first] = ‘John’;
Value inserted.
[default@KS1] set Users[jsmith][last] = ‘Smith’;
Value inserted.
[default@KS1] set Users[jsmith][age] = long(42);
Value inserted.
[default@KS1] get Users[jsmith];
=> (column=last, value=Smith, timestamp=1287604215498000)
=> (column=first, value=John, timestamp=1287604214111000)
=> (column=age, value=42, timestamp=1287604216661000)
Returned 3 results.[/code]
위와 같은 과정을 통해 키스페이스를 생성하고 컬럼패밀리를 생성하고 컬럼을 추가할 수 있습니다. 이 예는 jsmith라는 키와 거기에 속한 몇가지 속성값을 입력하는 예제입니다. 위의 예제에서의 User는 컬럼패밀리(Column Family)이며 jsmith는 키(Key)이고 first, last, age는 컬럼(Column)이고 ‘John’, ‘Smith’, 42는 값(Value)입니다.