Share via


Azure Managed Instance for Apache Cassandra 中的具體化檢視

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

具體化檢視支援

具體化檢視預設為停用,但使用者可以在其叢集上加以啟用。 不過,不建議 Azure Managed Instance for Apache Cassandra 的使用者使用具體化檢視。 這個功能仍在實驗階段 (請參閱標記為實驗性的具體化檢視 - Apache Mail Archives如何執行的提案)。 特別是:

  • 具體化檢視在實作上採用分散式系統設計,目前尚未廣泛模型化和模擬。 其屬性沒有任何正式證明。
  • 無法判斷具體化檢視是否與其基底資料表不同步。
  • 當基底資料表變更時,具體化檢視的同步處理時間長度沒有上限。
  • 如果發生錯誤且具體化檢視不同步,唯一的修復方式就是卸除具體化檢視並重新建立。

Microsoft 無法針對具體化檢視的問題提供任何 SLA 或支援。

具體化檢視的替代方案

就像大部分的 NoSQL 存放區一樣,Apache Cassandra 並非設計成具有正規化的資料模型。 如果您需要在多個位置更新資料,您的程式應將所有必要的陳述式作為 BATCH 的一部分傳送。 如此一來有兩點優於具體化檢視:

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

如果您的工作負載真的需要正規化的資料模型,請考慮使用可調整的關聯式存放區,例如 Azure 的超大規模資料庫 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

下一步