Cassandra CQLテーブル:作成、変更、切り捨ての例
⚡ スマートサマリー
Cassandra テーブル操作には、作成、変更、削除が含まれます。ping、および CQL を使用した列ファミリーの切り捨てについて説明します。このページでは、各コマンド、データ分布を決定する 3 つの主キー形式、および行の削除とテーブルの削除の違いについて説明します。
の構文 Cassandra クエリ言語(CQL)は SQL 言語。
でテーブルを作成する方法 Cassandra
の列ファミリー Cassandra RDBMSテーブルに似ています。列ファミリーはデータの保存に使用されます。
コマンド「テーブルの作成」は、列ファミリーを作成するために使用されます。 Cassandra.
構文
CREATE TABLE KeyspaceName.TableName ( ColumnName DataType, ColumnName DataType, ColumnName DataType, PRIMARY KEY (ColumnName) ) WITH PropertyName = PropertyValue;
1. 主キー: 2つのタイプがあります 主キー.
- 単一の主キー: 単一の主キーは次の構文で指定されます。
構文
PRIMARY KEY (ColumnName)
単一の主キーには単一の列のみが存在します。 その列はパーティション化キーとも呼ばれます。 データはその列に基づいてパーティション化されます。 データはパーティション キーに基づいてさまざまなノードに分散されます。
2. 複合主キー: 複合主キーは次の構文で指定されます。
構文
PRIMARY KEY (ColumnName1, ColumnName2, ...)
上記の構文では、ColumnName1 がパーティション化キー、ColumnName2 がパーティション化キーです。 Clustering キー。データは ColumnName1 に基づいてパーティション化され、データは ColumnName2 に基づいてクラスター化されます。 Clustering は、パーティション内のデータを並べ替えるプロセスです。
3. 複合パーティション化キー: 複合パーティション キーは次の構文で指定されます。
構文
PRIMARY KEY ((ColumnName1, ColumnName2), ColumnName3)
上記の構文では、ColumnName1 と ColumnName2 が複合パーティションキーです。データは ColumnName1 と ColumnName2 の両方の列に基づいてパーティション分割され、ColumnName3 に基づいてクラスタリングされます。単一のパーティションに大量のデータがある場合は、複合パーティションキーが使用されます。複合パーティションキーは、データの複数のパーティションを作成するために使用されます。
- 条項あり
「With 句」は、定義されたテーブルのプロパティとその値を指定するために使用されます。たとえば、圧縮したい場合は、 Cassandra テーブルデータ。「With句」で圧縮アルゴリズムのプロパティ値を指定することで、圧縮プロパティを設定できます。同じ句では、クラスタリング列のソート方向を反転させるCLUSTERING ORDER BYと、各行を自動的に期限切れにするdefault_time_to_liveも設定されます。
例:
ここでは、「Create table」コマンドを実行して、キースペース「University」にテーブル名「Student」を作成します。
CREATE TABLE University.Student ( RollNo int, Name text, dept text, PRIMARY KEY (RollNo) );
「CREATE TABLE」コマンドが正常に実行されると、キースペース「University」内に「Student」テーブルが作成されます。このテーブルには、「RollNo」、「Name」、「dept」の3つの列があります。「RollNo」は主キーです。また、「RollNo」はパーティションキーでもあるため、各学生はそれぞれ独立した単一行のパーティションに保持されます。
Cassandra 他の机
コマンド「テーブルの変更」は、列の削除、新しい列の追加、列名の変更、列タイプの変更、およびテーブルのプロパティの変更に使用されます。
構文
以下はコマンド「Alter Table」の構文です。
ALTER TABLE KeyspaceName.TableName ADD ColumnName ColumnDataType; ALTER TABLE KeyspaceName.TableName DROP ColumnName; ALTER TABLE KeyspaceName.TableName RENAME ColumnName TO NewColumnName; ALTER TABLE KeyspaceName.TableName WITH PropertyName = PropertyValue;
各フォームは個別の明細書として発行されます。現在のところ、2つの制限が適用されます。 Cassandra リリース:既存の列のデータ型は変更できなくなり、RENAME は主キーのクラスタリング列に対してのみ機能します。
例:
これは、Student テーブルに新しい列を追加するコマンド「Alter Table」のスナップショットです。
ALTER TABLE University.Student ADD Semester int;
コマンド「Alter Table」が正常に実行されると、「int」データ型の新しい列「Semester」がテーブル Student に追加されます。
これは、更新された Student テーブルを示すスクリーンショットです。
Cassandra ドロップテーブル
コマンド「Drop table」は、キースペースからすべてのデータを含む指定されたテーブルを削除します。削除前にping テーブル、 Cassandra スキーマではなくデータのスナップショットをバックアップとして取得します。
構文
DROP TABLE IF EXISTS KeyspaceName.TableName;
例:
これは、キースペース「University」からテーブル Student を削除する、実行されたコマンド「Drop Table」のスナップショットです。
DROP TABLE University.Student;
コマンド「Drop Table」が正常に実行されると、テーブル Student がキースペース University から削除されます。
これは、によって返されたエラーを示すスナップショットです。 Cassandra 存在しない Student テーブルにアクセスしようとしたとき。
Cassandra テーブルの切り捨て
コマンド「Truncate table」は、指定されたテーブルからすべてのデータを削除します。 データを切り捨てる前に、 Cassandra データのスナップショットをバックアップとして取得します。
構文
TRUNCATE KeyspaceName.TableName;
例:
Student テーブルには XNUMX つのレコードがあります。 これらはテーブル内のレコードです。
これは、Student テーブルからすべてのデータを削除する、実行されたコマンド「Truncate table」のスナップショットです。
コマンド「Truncate Table」が正常に実行されると、テーブル Student からすべてのデータが削除されます。
以下は、テーブル Student にレコードが存在しないデータベース状態のスナップショットです。
Truncateコマンドはクラスタ全体で同時に実行されるため、すべてのノードにアクセス可能である必要があります。いずれかのノードがダウンしている場合、このステートメントは失敗します。これは、部分的なデータが残ってしまうことを防ぐための意図的な安全対策です。
ドロップ vs 切り捨て vs 削除 Cassandra
データを削除するコマンドは3つあり、間違ったコマンドを選択すると、スキーマが破壊されるか、パフォーマンスの問題が残る可能性があります。
| Command | 除去するもの | スキーマは保持されています | 費用 |
|---|---|---|---|
| ドロップテーブル | すべての行とテーブル定義 | いいえ | 安価。SSTableはスナップショットが作成された後、破棄されます。 |
| 切り捨てる | すべての行 | はい | 安価だが、すべてのノードが稼働している必要がある。墓石は作成されない。 |
| DELETE | 選択された行または列 | はい | 大規模になるとコストがかさむ。除去するたびに「圧縮されるまでスキップしなければならない」という墓碑銘が刻まれる。 |
実務上のルールとしては、テーブル全体をクリアする場合、バルク DELETE よりも TRUNCATE を優先します。なぜなら、数千ものトゥームストーンが存在すると、そのパーティションの以降のすべての読み取りが遅くなるからです。行レベルの削除については、 CQLによる挿入、更新、削除 チュートリアル。









