Azure Managed Instance for Apache Cassandra 是純開放原始碼 Apache Cassandra 叢集的完全受控服務。 服務也允許根據每個工作負載的特定需求來覆寫設定。 此功能可在需要時提供最大的彈性和控制。 本文討論如何啟用具體化檢視。
具體化檢視支援
具體化檢視預設為停用,但您可以在叢集上加以啟用。 我們不建議 Azure Managed Instance for Apache Cassandra 的使用者使用具體化檢視。 他們是實驗性的。 尤其是:
- 具體化檢視的實作是分散式系統設計,不會廣泛模型化和模擬。 沒有關於其屬性的正式證明。
- 無法判斷具體化檢視是否與其基底資料表不同步。
- 當基底資料表變更時,具體化檢視的同步處理時間長度沒有上限。
- 如果發生錯誤且具體化檢視不同步,解決問題的唯一方法是卸除具體化檢視並重新建立它。
如需詳細資訊,請參閱 標示為實驗性 Apache 郵件封存的具體化檢視 和 要這樣做的建議。
Microsoft 不會針對具體化檢視的問題提供任何服務等級協定或支援。
具體化檢視的替代方案
和大部分的 NoSQL 存放區一樣,Apache Cassandra 並非設計成具有正規化數據模型。 如果您需要在多個位置更新數據,請將所有必要的語句傳送為 BATCH 的一部分。 與具體化檢視相比,此方法有兩個優點:
BATCH可以保證批次中的所有陳述式都已認可或為無。- 所有陳述式都有相同的仲裁和認可語意。
如果您的工作負載確實需要標準化的數據模型,請考慮可調整的關係型存放區,例如 適用於PostgreSQL的 Azure Cosmos DB。
啟用具體化檢視
在您的 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