Zmaterializowane widoki w wystąpieniu zarządzanym platformy Azure dla systemu Apache Cassandra

Azure Managed Instance for Apache Cassandra to w pełni zarządzana usługa dla czystych klastrów Apache Cassandra typu open source. Usługa umożliwia również zastępowanie konfiguracji w zależności od konkretnych potrzeb każdego obciążenia, co pozwala na maksymalną elastyczność i kontrolę w razie potrzeby. W tym artykule omówiono sposób włączania zmaterializowanych widoków.

Obsługa zmaterializowanego widoku

Zmaterializowane widoki są domyślnie wyłączone, ale użytkownicy mogą je włączyć w klastrze. Odradzamy jednak użytkownikom usługi Azure Managed Instance for Apache Cassandra korzystanie z zmaterializowanych widoków. Są one eksperymentalne (zobacz zmaterializowane widoki oznaczone jako eksperymentalne archiwum Apache Mail i propozycję , aby to zrobić). W szczególności:

  • Implementacja zmaterializowanych widoków to rozproszony projekt systemu, który nie został szeroko modelowany i symulowany. Nie było formalnych dowodów na jego właściwości.
  • Nie ma możliwości określenia, czy zmaterializowany widok nie jest zsynchronizowany z jej tabelą bazową.
  • Nie ma górnej granicy, jak długo trwa synchronizowanie zmaterializowanego widoku w przypadku zmiany w tabeli podstawowej.
  • Jeśli wystąpi błąd i zmaterializowany widok nie jest zsynchronizowany, jedynym sposobem naprawy jest usunięcie zmaterializowanego widoku i ponowne utworzenie go.

Firma Microsoft nie może zaoferować żadnej umowy SLA ani pomocy technicznej w przypadku problemów z zmaterializowanymi widokami.

Alternatywy dla zmaterializowanych widoków

Podobnie jak w przypadku większości magazynów NoSQL, platforma Apache Cassandra nie jest zaprojektowana tak, aby model danych był znormalizowany. Jeśli musisz zaktualizować dane w więcej niż jednym miejscu, program powinien wysłać wszystkie niezbędne instrukcje w ramach usługi BATCH. Ma to dwie zalety w stosunku do zmaterializowanych poglądów:

  • Usługa BATCH gwarantuje, że wszystkie instrukcje w partii są zatwierdzane lub żadne.
  • Wszystkie instrukcje mają te same semantyka kworum i zatwierdzenia.

Jeśli obciążenie naprawdę potrzebuje znormalizowanego modelu danych, rozważ skalowalny magazyn relacyjny, taki jak Hiperskala PostgreSQL platformy Azure.

Jak włączyć zmaterializowane widoki

Musisz ustawić enable_materialized_views: true w rawUserConfig polu centrum danych Cassandra. W tym celu użyj następującego polecenia interfejsu wiersza polecenia platformy Azure, aby zaktualizować każde centrum danych w klastrze:

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

Następne kroki