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};