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