DSE Advanced Replication(DSE拡張レプリケーション)のCQLクエリー
DSE Advanced Replication(DSE拡張レプリケーション)でサポートされている、ソース・クラスターとデスティネーション・クラスターのクエリー実行についてのCQLクエリーとベスト・プラクティスのガイドライン。
ここでは、DSE Advanced Replication(DSE拡張レプリケーション)でサポートされているCQLクエリーとレプリケーションの概念の概要として、サポートされているCQLクエリーとベスト・プラクティスのガイドラインについて説明します。
DSE Advanced Replication(DSE拡張レプリケーション)は、ソース・クラスターからデスティネーション・クラスターにデータをレプリケートします。レプリケーションは、ソースでCQLクエリーを受け取り、変更バージョンのクエリーを再作成して、デスティネーションでそれを実行します。DataStax Enterpriseでは、データ操作のための有効なCQLクエリーの制限リストがサポートされています。DSE Advanced Replication(DSE拡張レプリケーション)では、デスティネーションにデータをレプリケートするために使用される生成されたCQLクエリーにも同じ制限が適用されます。
制限はプライマリ・キーに適用されます。プライマリ・キーは、パーティション・キーとクラスター化キーの2つの部分で構成されています。プライマリ・キー部分と任意指定のフィールド値がデータベース行を構成します。
ソース・テーブルのプライマリ・キーとデスティネーション・テーブルのプライマリ・キーに相違がある場合は、CQLクエリーがサポートされている制限が適用されます。
ベスト・プラクティス
- ソース・テーブルとデスティネーション・テーブルのスキーマ構造
-
- 同一のプライマリ・キー(パーティション・キーとクラスター化キー)形式を同じ順序、同じカラムで維持します。
- 任意指定の
source_id
を最初のクラスター化カラムとして追加します。 - フィールド値のすべてまたはサブセットを維持します。
注:source_id
カラムがソース・テーブル・スキーマに含まれていても、そのカラムに挿入される値は無視されます。レコードをレプリケートするときには、構成されているsource-id値が使用されます。 - パーティション・キー・カラム
- パーティション・キーのサポートと制限の詳細を以下に示します。
- デスティネーション・テーブルでは、追加の任意指定の
source_id
カラムのみがパーティション・キーでサポートされています。その他のデスティネーション・テーブルのパーティション・キー・カラムはサポートされていません。source_id
には、クラスター化カラムとパーティション・キーのいずれかを指定できますが、両方を指定することはできません。 - デスティネーション・テーブルのソース・テーブル・パーティション・キー・カラムのサブセットを使用すると、上書きされる可能性があります。行エントリーには多対一のマッピングがあります。
- 順序はレプリケーションに関係ありません。すべての配列がサポートされています。
- CQL
UPDATE
クエリーでは、すべてのパーティション・キー・カラムが完全に制限されている必要があります。=またはIN
(単一カラム)制限を使用してパーティション・キー・カラムを制限します。 - CQL
DELETE
クエリーでは、すべてのパーティション・キー・カラムが完全に制限されている必要があります。=またはIN
(単一カラム)制限を使用してパーティション・キー・カラムを制限します。
- デスティネーション・テーブルでは、追加の任意指定の
クラスター化カラム
- デスティネーション・テーブルでは、追加の任意指定の
source_id
カラムのみがクラスター化カラムでサポートされています。その他のデスティネーション・テーブルのパーティション・キー・カラムはサポートされていません。source_id
には、クラスター化カラムとパーティション・キーのいずれかを指定できますが、両方を指定することはできません。 - デスティネーション・テーブルのソース・テーブル・クラスター化カラムのサブセットを使用すると、上書きされる可能性があります。行エントリーには多対一のマッピングがあります。
- CQL
INSERT
クエリーとUPDATE
クエリーを使用する場合、順序はレプリケーションに関係ありません。すべての配列がサポートされています。 - CQL
DELETE
クエリーを使用する場合、順序はレプリケーションに関係あります。配列のサポートには制限があり、すべての配列がサポートされているわけではありません。 - CQL
UPDATE
クエリーでは、すべてのクラスター化カラムが完全に制限されている必要があります。=またはIN
(単一カラム)制限を使用してパーティション・キー・カラムを制限します。 - CQL
DELETE
クエリーでは、最後に指定されたクラスター化カラムが=/>/>=/</<=(1つまたは複数のカラム)またはIN
(1つまたは複数のカラム)を使用して制限されている必要があります。最後に指定されたクラスター化カラムに先行するすべてのクラスター化カラムも、=またはIN
を使用して制限されている必要があります。 - クラスター化カラムの制限は任意です。ただし、クラスター化カラムを制限する場合は、制限する最初と最後(この順番で)のクラスター化カラムの間にあるすべてのクラスター化カラムが制限されている必要があります。
フィールド値
- ソース上のフィールド値のサブセットまたはすべてが、デスティネーションへのレプリケーションでサポートされています。
- ソースには存在するが、デスティネーションには存在しないフィールドは、レプリケートされません。
- デスティネーションには存在するが、ソースには存在しないフィールドに、データは追加されません。
ソースID(source_id)
source_id
は、ソース・クラスターと、そのソース・クラスターからのすべての挿入を識別します。source_id
のサポートと要件の詳細を以下に示します。- source_id構成キーがメタデータに存在し、正しくなければなりません。
source_id
は、クラスター化カラムの最初の位置にあるか、またはパーティション・キーのいずれかでなければなりません。そうでない場合、CQLの
INSERT
クエリーとUPDATE
クエリーは動作しますが、クラスター化カラムの一部が制限されているCQLDELETE
クエリーは失敗する可能性があります。source_id
は、CQLのDELETE
クエリーとUPDATE
クエリーでは、常に制限されます。クラスター化キーが完全に制限されておらず、source_id
が最初のクラスター化カラムでないDELETE文は、サポートされていません。