Share via


Azure Managed Instance for Apache Cassandra の具体化されたビュー

Azure Managed Instance for Apache Cassandra は、純粋なオープンソースの Apache Cassandra クラスター用のフル マネージド サービスです。 このサービスでは、各ワークロードの特定のニーズに応じて構成をオーバーライドすることもできます。これにより、必要に応じて最大限の柔軟性と制御が可能になります。 この記事では、具体化されたビューを有効にする方法について説明します。

具体化されたビューのサポート

具体化されたビューは既定で無効になっていますが、ユーザーが各自のクラスターで有効にすることができます。 ただし、Azure Managed Instance for Apache Cassandra のユーザーは、具体化されたビューを使用しないことをお勧めします。 まだ実験段階であるためです (Apache Mail Archives の「実験的とされている具体化されたビュー」およびそうするための提案を参照)。 特に次の点に違いがあります。

  • 具体化されたビューの実装は、広範囲にモデル化およびシミュレートされていない分散システム設計です。 その特性に関する正式な証拠はありません。
  • 具体化されたビューがそのベース テーブルと同期していないかどうかを判断する方法はありません。
  • 具体化されたビューのベース テーブルに変更があったときに、ビューが同期されるまでにかかる時間の上限はありません。
  • エラーが発生し、具体化されたビューの同期が取れなくなった場合、具体化されたビューを修復するには、ビューを削除して作成し直すしかありません。

具体化されたビューに関して、Microsoft は一切の SLA またはサポートを提供できません。

具体化されたビューの代替手段

ほとんどの NoSQL ストアと同様、Apache Cassandra は、正規化されたデータ モデルを持つように設計されていません。 複数の場所でデータを更新する必要がある場合、プログラムでは、必要なすべてのステートメントを BATCH の一部として送信する必要があります。 これには、具体化されたビューよりも有利な点が 2 つあります。

  • BATCH では、バッチのすべてのステートメントがコミットされるか、1 つもコミットされないかの保証があります。
  • すべてのステートメントで、クォーラムとコミットのセマンティクスが同じです。

正規化されたデータ モデルがワークロードで本当に必要な場合は、Azure の Hyperscale PostgreSQL のようなスケーラブルなリレーショナル ストアを検討してください。

具体化されたビューを有効にする方法

Cassandra データ センターの rawUserConfig フィールドで enable_materialized_views: true を設定する必要があります。 これを行うには、次の Azure CLI コマンドを使用して、クラスター内の各データ センターを更新します。

FRAGMENT="enable_materialized_views: true"
ENCODED_FRAGMENT=$(echo "$FRAGMENT" | base64 -w 0)
# or
# ENCODED_FRAGMENT="ZW5hYmxlX21hdGVyaWFsaXplZF92aWV3czogdHJ1ZQo="
resourceGroupName='MyResourceGroup'
clusterName='cassandra-hybrid-cluster'
dataCenterName='dc1'
az managed-cassandra datacenter update \
    --resource-group $resourceGroupName \
	--cluster-name $clusterName \
	--data-center-name $dataCenterName \
	--base64-encoded-cassandra-yaml-fragment $ENCODED_FRAGMENT

次のステップ