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