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