共用方式為


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 的一部分。 與具體化檢視相比,此方法有兩個優點:

  • 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