Keyspaceを新しく作る

Cassandraにはキースペースという概念がある.
それは言ってしまえばMySQLにおけるデータベースのようなものだ.
インストールした時点でKeyspace1というものが用意されているが,そのままずっと使うのも気持ち悪い.
そこで,新たなキースペースを作る.

初期設定

設定ファイルはstorage-conf.xmlで,こいつをひたすら編集する.

vi /etc/cassandra/storage-conf.xml

具体的には↓のような書き方をする.Keyspace1の設定を参考にしてみた.もっと詳しい情報はここを参照.

<Keyspace Name="MyKeyspace">
  <!-- スーパーカラムあり & UTF-8と見なしてソート -->
  <ColumnFamily Name="Scores"
                ColumnType="Super"
                CompareWith="UTF8Type"
                CompareSubcolumnsWith="UTF8Type"/>
  <!-- レプリカ配置 (レプリカがデータセンター間にまたがる場合はRackUnawareStrategyで) -->
  <ReplicaPlacementStrategy>org.apache.cassandra.locator.RackAwareStrategy</ReplicaPlacementStrategy>
  <!-- レプリカ数 -->
  <ReplicationFactor>3</ReplicationFactor>
  <!-- よくわからない...レプリカが同一ラックにあればデフォルトでよさそう -->
  <EndPointSnitch>org.apache.cassandra.locator.EndPointSnitch</EndPointSnitch>
</Keyspace>

動作確認

ファイルを保存したらCassandraを起動.

# サーバ起動
cassandra -f

# 別ウィンドウでクライアントも起動しておく
cassandra-cli -host localhost -port 9160

クライアントから認識されているか確認.

show keyspaces
=>Keyspace1
  system
  MyKeyspace

describe keyspace MyKeyspace
=>MyKeyspace.Scores
  Column Family Type: Super
  Columns Sorted By: org.apache.cassandra.db.marshal.UTF8Type@13d9460

  Column Family Type: Super
  Column Sorted By: org.apache.cassandra.db.marshal.UTF8Type
  flush period: null minutes
  ------