テーブルの作成
CQLテーブルの作成方法。
WITH
句とキーワード引数を使用します。テーブルのプロパティは、「table settings(テーブルの設定)」に示したようにテーブルごとに指定されます。cqlshを使用したスキーマの作成
cqlsh
を使用してテーブル・スキーマを作成します。動的スキーマ生成はサポートされていません。複数のクライアントがテーブルを同時に生成しようとすると、衝突が発生する可能性があります。間違って衝突を発生させてしまった場合、問題を修正するには、「schema collision fix」の手順を参照してください。
プライマリ・キー
プライマリ・キーは、データ・ストレージの場所と順序を特定します。プライマリ・キーはテーブルの作成時に定義され、変更することはできません。プライマリ・キーを変更する必要がある場合は、新しいテーブル・スキーマを作成し、新しいテーブルにデータを書き込みます。Cassandraは、パーティション行ストアであり、プライマリ・キーのコンポーネントであるパーティション・キーは特定のテーブル行を格納するノードを特定します。作成後のテーブルの変更の詳細については、「ALTER TABLE」を参照してください。
プライマリ・キーは、最低でも1つのパーティション・キーで構成される必要があります。複合パーティション・キーは、関連データがそれぞれ別々のパーティションに保存されるように、データ・セットを分割できます。複合プライマリ・キーには、パーティション上のデータを順序付けるクラスター化カラムが含まれます。
Cassandraではテーブルのプライマリ・キーの定義は非常に重要です。どのカラムでプライマリ・キーを定義するかを選択する前に、テーブル内でのデータの挿入と取得の方法を慎重にモデリングしてください。パーティションのサイズ、パーティション内のデータの順序、クラスターのノード間のパーティションの配分などをすべてを考慮することにより、テーブルに最も効果的なプライマリ?キーの選択が決まります。
テーブルの特性
- ドット表記を使用してテーブル名を指定します。ピリオドで区切ったテーブル名から分離したキースペース名を使用してテーブルを作成します。キースペースは現在のキースペースに維持されますが、指定されたキースペースにテーブルが作成されます。
- 現在のキースペースを使用します。テーブル名のみを使用してテーブルを作成します。
カラムの特性
CREATE TABLE cycling.cyclist_alt_stats ( id UUID PRIMARY KEY, lastname text, birthday timestamp, nationality text, weight text, height text );
CREATE TABLE cycling.whimsey ( id UUID PRIMARY KEY, lastname text, cyclist_teams set<text>, events list<text>, teams map<int,text> );
現在、コレクション型をネストすることはできません。コレクションにはfrozenデータ型を含めることができます。例と使用方法については、「コレクション型」を参照してください。CREATE TABLE cycling.route (race_id int, race_name text, point_id int, lat_long tuple<text, tuple<float,float>>, PRIMARY KEY (race_id, point_id));
frozen <tuple <int, tuple<text, double>>>
ユーザー定義型(UDT)は、CREATE TYPEを使用して複数のフィールドのデータ型が作成されている場合にカラム型に使用できます。UDTは、複数のテーブル定義に使用される場合に作成されます。カラム型ユーザー定義型(UDT)にはfrozenキーワードが必要です。 frozen値は、複数のコンポーネントを1つの値にシリアライズします。frozen以外の型では、個々のフィールドを更新できます。Cassandraでは、frozen型の値はBLOBとして扱われます。値全体を上書きしなければなりません。 ユーザー定義型は、それを定義したキースペース内で有効です。その範囲外のキースペースから型にアクセスするには、ドット表記を使用します。キースペース名の後にピリオドを付け、その後に型の名前を記述します。Cassandraは、指定されたキースペース内でその型にアクセスしますが、現在のキースペースは変更しません。キースペースを指定しないと、Cassandraは現在のキースペース内のその型にアクセスします。例と使用方法については、「ユーザー定義型の使用」を参照してください。
カウンターは、インクリメントで変化する数値の格納に使用される特別なカラムです。カウンターは、counter data typeカラムを含む専用のテーブルでのみ使用できます。例と使用方法については、「カウンターの使用」を参照してください。