Udostępnij za pomocą


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. Ta funkcja umożliwia 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 można je włączyć w klastrze. Odradzamy użytkownikom usługi Azure Managed Instance for Apache Cassandra korzystanie z zmaterializowanych widoków. Są eksperymentalne. W szczególności:

  • Implementacja zmaterializowanych widoków to rozproszony projekt systemu, który nie jest szeroko modelowany i symulowany. Nie ma 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 zostanie zsynchronizowany, jedynym sposobem rozwiązania tej sytuacji jest usunięcie zmaterializowanego widoku i ponowne utworzenie go.

Aby uzyskać więcej informacji, zobacz zmaterializowane widoki oznaczone jako eksperymentalne w archiwach Apache Mail oraz propozycję dotyczącą realizacji tego.

Firma Microsoft nie oferuje żadnej umowy dotyczącej poziomu usług ani pomocy technicznej dotyczącej 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, wyślij wszystkie niezbędne instrukcje w ramach usługi BATCH. Takie podejście ma dwie zalety w stosunku do zmaterializowanych widoków:

  • BATCH gwarantuje, że wszystkie polecenia w wsadzie 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 Azure Cosmos DB for PostgreSQL.

Włączanie zmaterializowanych widoków

Ustaw enable_materialized_views: true w rawUserConfig polu centrum danych Cassandra. 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