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クエリーがサポートされている制限が適用されます。

ベスト・プラクティス

DataStaxは、レプリケーションをシームレスに行うため、以下のベスト・プラクティスを推奨しています。
ソース・テーブルとデスティネーション・テーブルのスキーマ構造
  • 同一のプライマリ・キー(パーティション・キーとクラスター化キー)形式を同じ順序、同じカラムで維持します。
  • 任意指定の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クエリーは動作しますが、クラスター化カラムの一部が制限されているCQL DELETEクエリーは失敗する可能性があります。

  • source_idは、CQLのDELETEクエリーとUPDATEクエリーでは、常に制限されます。クラスター化キーが完全に制限されておらずsource_idが最初のクラスター化カラムでないDELETE文は、サポートされていません。