본문으로 건너뛰기

2. 키스페이스 생성하기(데이터베이스)

mysql에서 어떠한 Database를 여러개 생성해서 사용 가능 한데,
그것처럼 카산드라도 Keyspace를 여러개 생성해서 사용 가능하다.

카산드라에서는 RDB의 Database의 개념을 Keyspace라고 한다.

키스페이스 생성시 여러가지 옵션의 의미

이름 (Name): 키스페이스의 이름을 지정합니다. 이름은 유일해야 하며, 대소문자 구분 없이 사용 가능합니다.

  • Replication Strategy (복제 전략): 데이터의 복제 전략을 설정합니다. 카산드라는 데이터를 여러 노드에 분산하여 저장하므로, 복제 전략은 데이터의 가용성과 내고장성에 영향을 미칩니다. 주요한 복제 전략으로는 SimpleStrategy와 NetworkTopologyStrategy가 있습니다.

  • SimpleStrategy: 단순한 복제 전략으로, 모든 노드에 동일한 데이터 복사본을 저장합니다. 데이터의 가용성을 보장하지만, 한 노드에 장애가 발생하면 데이터 손실이 발생할 수 있습니다.

  • NetworkTopologyStrategy: 네트워크 토폴로지에 기반한 복제 전략으로, 데이터 센터와 랙(장비 그룹) 단위로 데이터를 복제합니다. 데이터 센터와 랙 간에 복제된 데이터의 복사본을 유지하여 데이터의 가용성과 내고장성을 향상시킵니다.

  • Replication Factor (복제 팩터): 데이터의 복제 팩터를 설정합니다. 복제 팩터는 데이터를 몇 개의 노드에 복제할지 결정하는 값으로, 데이터의 가용성과 내고장성에 영향을 줍니다. 예를 들어, 복제 팩터를 3으로 설정하면 데이터가 3개의 노드에 복제됩니다.

  • Durable Writes (내구 쓰기): 내구 쓰기 옵션을 설정하면 카산드라가 데이터를 디스크에 저장할 때 확인 절차를 수행합니다. 이는 데이터의 내구성을 향상시키는데 도움이 됩니다. 내구 쓰기 옵션을 활성화하면 성능에 약간의 영향을 미칠 수 있습니다.

각종 기타 옵션: 예를 들어, 카산드라 3.0부터는 키스페이스 레벨에서 Time To Live (데이터의 수명)과 같은 TTL 설정을 지원합니다. 이 외에도 압축, 복제 전략 옵션 등 다양한 설정을 키스페이스 생성 시 지정할 수 있습니다.

예제와 설명

CREATE KEYSPACE my_keyspace
WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 };
  • 위 예시에서는 my_keyspace라는 이름의 키스페이스를 생성합니다.
  • SimpleStrategy를 사용하여 복제 전략을 설정하고, replication_factor를 3으로 설정합니다. 이는 데이터를 3개의 노드에 복제하는 것을 의미합니다.
CREATE KEYSPACE my_keyspace
WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'dc1' : 3, 'dc2' : 2 };
  • 위 예시에서는 my_keyspace라는 이름의 키스페이스를 생성합니다.
  • NetworkTopologyStrategy를 사용하여 복제 전략을 설정합니다.
  • dc1과 dc2는 각각 데이터 센터의 이름이며, dc1은 3개의 노드에, dc2는 2개의 노드에 데이터를 복제합니다.
CREATE KEYSPACE my_keyspace
WITH DURABLE_WRITES = false;
  • 위 예시에서는 my_keyspace라는 이름의 키스페이스를 생성합니다.
  • DURABLE_WRITES 옵션을 false로 설정하여 내구 쓰기를 비활성화합니다. 이는 데이터를 디스크에 저장할 때 확인 절차를 수행하지 않는 것을 의미합니다.
CREATE KEYSPACE my_keyspace
WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'dc1' : 3, 'dc2' : 2 }
AND DURABLE_WRITES = true;
  • 위 예시에서는 my_keyspace라는 이름의 키스페이스를 생성합니다.
  • NetworkTopologyStrategy를 사용하여 복제 전략을 설정합니다.
  • dc1과 dc2는 각각 데이터 센터의 이름이며, dc1은 3개의 노드에, dc2는 2개의 노드에 데이터를 복제합니다.
  • DURABLE_WRITES 옵션을 true로 설정하여 내구 쓰기를 활성화합니다. 위 예시들은 각각의 옵션을 독립적으로 설정한 것이지만, 실제로는 다양한 조합과 설정이 가능합니다. 필요에 맞게 옵션들을 조합하여 키스페이스를 생성할 수 있습니다. 또한, 예시에서는 키스페이스의 이름을 my_keyspace로 설정하였지만, 실제 사용 시에는 원하는 이름으로 변경하실 수 있습니다.

엘라산드라 공홈의 예제

엘라산드라에서는 네트워크 토폴로지는 기본으로 사용하도록 하고 있다.
노드가 여러개이면 DC1:n 으로 하는것이 맞다.

CREATE KEYSPACE IF NOT EXISTS test WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1': 1};