次の方法で共有


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

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

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

具体化されたビューは既定では無効になっていますが、クラスターで有効にすることはできます。 Azure Managed Instance for Apache Cassandra のユーザーが具体化されたビューを使用することはお勧めしません。 これらは試験的です。 特に次の点に違いがあります。

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

詳細については、 実験用 Apache メール アーカイブとマークされた具体化されたビュー、それを行う提案を参照してください。

Microsoft は、具体化されたビューに関する問題に関するサービス レベルアグリーメントやサポートを提供していません。

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

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

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

ワークロードに正規化されたデータ モデルが本当に必要な場合は、 Azure Cosmos DB for 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