Sdílet prostřednictvím


Materializovaná zobrazení ve službě Azure Managed Instance pro Apache Cassandra

Azure Managed Instance for Apache Cassandra je plně spravovaná služba pro čistě opensourcové clustery Apache Cassandra. Služba také umožňuje přepsání konfigurací v závislosti na konkrétních potřebách jednotlivých úloh, což umožňuje maximální flexibilitu a kontrolu tam, kde je to potřeba. Tento článek popisuje, jak povolit materializovaná zobrazení.

Podpora materializovaného zobrazení

Materializovaná zobrazení jsou ve výchozím nastavení zakázaná, ale uživatelé je můžou povolit ve svém clusteru. Nedoporučujeme ale uživatelům služby Azure Managed Instance for Apache Cassandra používat materializovaná zobrazení. Jedná se o experimentální (viz materializovaná zobrazení označená jako experimentální archivy Apache Mail a návrh k tomu). Zejména jde o toto:

  • Implementace materializovaných zobrazení je návrh distribuovaného systému, který nebyl široce modelován a simulován. Neexistují žádné formální doklady o jeho vlastnostech.
  • Neexistuje způsob, jak určit, jestli materializované zobrazení není synchronizované se základní tabulkou.
  • Neexistuje žádná horní mez, jak dlouho trvá synchronizace materializovaného zobrazení, když dojde ke změně základní tabulky.
  • Pokud dojde k chybě a materializované zobrazení přestane být synchronizované, jediným způsobem, jak ho opravit, je odstranit materializované zobrazení a znovu ho vytvořit.

Microsoft nemůže v případě problémů s materializovanými zobrazeními nabízet žádnou smlouvu SLA ani podporu.

Alternativy k materializovaným zobrazením

Stejně jako většina úložišť NoSQL není Apache Cassandra navržená tak, aby měla normalizovaný datový model. Pokud potřebujete aktualizovat data na více místech, měl by program odeslat všechny potřebné příkazy jako součást služby BATCH. Toto má dvě výhody oproti materializovaným zobrazením:

  • Služba BATCH zaručuje, že všechny příkazy v dávce jsou potvrzené nebo žádné.
  • Všechny příkazy mají stejné kvorum a sémantiku potvrzení.

Pokud vaše úloha skutečně potřebuje normalizovaný datový model, zvažte škálovatelné relační úložiště, jako je Hyperscale PostgreSQL v Azure.

Povolení materializovaných zobrazení

Musíte nastavit enable_materialized_views: true v rawUserConfig poli datového centra Cassandra. K tomu použijte následující příkaz Azure CLI k aktualizaci jednotlivých datových center v clusteru:

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

Další kroky