Azure 受控執行個體 for Apache Cassandra 中的具體化檢視

Azure 受控執行個體 for Apache Cassandra 是純開放原始碼 Apache Cassandra 叢集的完全受控服務。 服務也允許根據每個工作負載的特定需求來覆寫設定。 此功能可在需要時提供最大的彈性和控制。 本文討論如何啟用具體化檢視。

具體化檢視支援

具體化檢視預設為停用,但您可以在叢集上加以啟用。 我們不建議 Azure 受控執行個體 for Apache Cassandra 的使用者使用具體化檢視。 他們是實驗性的。 尤其是:

  • 具體化檢視的實作是分散式系統設計,不會廣泛模型化和模擬。 沒有關於其屬性的正式證明。
  • 無法判斷具體化檢視是否與其基底資料表不同步。
  • 當基底資料表變更時,具體化檢視的同步處理時間長度沒有上限。
  • 如果發生錯誤且具體化檢視不同步,解決問題的唯一方法是卸除具體化檢視並重新建立它。

如需詳細資訊,請參閱 標示為實驗性 Apache 郵件封存的具體化檢視要這樣做的建議

Microsoft 不會針對具體化檢視的問題提供任何服務等級協定或支援。

具體化檢視的替代方案

和大部分的 NoSQL 存放區一樣,Apache Cassandra 並非設計成具有正規化數據模型。 如果您需要在多個位置更新數據,請將所有必要的語句傳送為 BATCH 的一部分。 與具體化檢視相比,此方法有兩個優點:

  • BATCH 可以保證批次中的所有陳述式都已認可或為無。
  • 所有陳述式都有相同的仲裁和認可語意。

如果您的工作負載確實需要標準化的數據模型,請考慮可調整的關係型存放區,例如 適用於PostgreSQL的 Azure Cosmos DB

啟用具體化檢視

在您的 Cassandra 資料中心的enable_materialized_views: true欄位中設定rawUserConfig。 使用下列 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