EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

第3回 CQL(Cassandra Query Language)の基礎

edited by DB Online   2015/08/24 13:00

 今回はCassandraにデータを格納したり、Cassandraからデータを取り出したりするための言語であるCQLで何ができるかを見ていきます。

 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

 特徴的なものとしてはコレクションのサポートです。複数の値をひとつのカラムに入れることができます。

※この続きは、会員の方のみお読みいただけます(登録無料)。


※この続きは、会員の方のみお読みいただけます(登録無料)。


著者プロフィール

  • 森下雄貴(モリシタユウキ)

    DataStax社ソフトウェアデベロッパーおよびApache Cassandraコミッター。 仕事では毎日ほぼ100%、Cassandraのコードをいじっています。 Spotifyで音楽を聞きながらコードを書き、iPhoneでメールをチェックし、 オフはNetflixで映画を見たり、プレイステーション4でオンラインゲームを楽しみます。 (全部Cassandraが使われているサービスです。)

バックナンバー

連載:こんにちはCassandra!―米国でApache Cassandraを開発している日本人コミッターが教える、1から始めるCassandra
All contents copyright © 2007-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5