Cassandraを起動し、cqlshもしくはDataStax DevCenterで接続を行ってください。 以下では cqlsh を利用していきます。
キースペースとテーブル
キースペースはCassandraにおいて、一番大きいデータのまとまりです。すべてのデータはどれかひとつのキースペースに所属します。キースペースの主な役割はどのようにデータの複製を配置するか(レプリケーション)を決定することです。
早速キースペースを作成しましょう。
cqlsh> CREATE KEYSPACE my_app WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
今回は1台のノードでCQLを試すため、レプリケーション戦略に SimpleStrategy を、レプリケーション数(replication_factor)は1にします。
レプリケーションについては後の連載においてCassandraのクラスターを構築する際に詳しく見ていきます。
次にテーブルを作ります。 まず、今作ったばかりのキースペースに切り替えましょう。 USE 文を利用します。
cqlsh> USE my_app; cqlsh:my_app>
cqlsh を利用している場合、プロンプトが切り替わりましたね。 現在 my_app キースペースで作業をしていることを示しています。
Cassandraのテーブルは、リレーショナルデータベースのテーブルに似ており、格納するデータのカラム名やデータ型を定義します。 早速一つテーブルを作成してみましょう。
cqlsh:my_app> CREATE TABLE user ( user_id varchar PRIMARY KEY, first_name varchar, last_name varchar );
user という名前のテーブルを my_app キースペース内に作成しました。 SQLの CREATE TABLE 文によく似ていますね。 PRIMARY KEY (プライマリーキー)はSQLではレコードを一意に識別する主キーを設定するために利用されますが、CQLでも同様です。 CQLのプライマリーキーにはもうひとつ重要な役割があります。 それは、データをクラスター内のどのノードに格納するかを決めることです(そのためのキーを パーティションキー と呼びます)。 CQLではプライマリーキーがひとつの場合、それがパーティションキーになります。 そのため、SQLとは違い、CQLでは必ず PRIMARY KEY を指定しなければなりません。
CQLのデータ型
CQLは以下の様々なデータ型をサポートします。
種類 | データ型 |
数値 | int bigint float double decimal varint |
文字列 | text ascii varchar |
時間 | timestamp timeuuid |
コレクション | list set map |
その他 | uuid blob inet counter |
特徴的なものとしてはコレクションのサポートです。複数の値をひとつのカラムに入れることができます。