Materialiserade vyer i Azure Managed Instance för Apache Cassandra
Azure Managed Instance för Apache Cassandra är en fullständigt hanterad tjänst för rena Apache Cassandra-kluster med öppen källkod. Tjänsten tillåter också att konfigurationer åsidosätts, beroende på de specifika behoven för varje arbetsbelastning, vilket ger maximal flexibilitet och kontroll där det behövs. I den här artikeln beskrivs hur du aktiverar materialiserade vyer.
Stöd för materialiserad vy
Materialiserade vyer är inaktiverade som standard, men användarna kan aktivera dem i klustret. Vi avråder dock användare av Azure Managed Instance för Apache Cassandra från att använda materialiserade vyer. De är experimentella (se Materialiserade vyer markerade experimental-Apache Mail Archives och förslaget att göra det). Framför allt:
- Implementeringen av materialiserade vyer är distribuerad systemdesign som inte har modellerats och simulerats i stor utsträckning. Det har inte funnits några formella bevis om dess egenskaper.
- Det går inte att avgöra om en materialiserad vy är osynkroniserad med bastabellen.
- Det finns ingen övre gräns för hur lång tid det tar för en materialiserad vy att synkroniseras när bastabellen ändras.
- Om ett fel uppstår och en materialiserad vy inte är synkroniserad är det enda sättet att reparera det att släppa den materialiserade vyn och återskapa den.
Microsoft kan inte erbjuda något serviceavtal eller support i problem med materialiserade vyer.
Alternativ till materialiserade vyer
Precis som de flesta NoSQL-butiker är Apache Cassandra inte utformat för att ha en normaliserad datamodell. Om du behöver uppdatera data på mer än en plats bör programmet skicka alla nödvändiga instruktioner som en del av en BATCH. Detta har två fördelar jämfört med materialiserade vyer:
- BATCH garanterar att alla instruktioner i batchen har checkats in eller inte.
- Alla instruktioner har samma kvorum och incheckningssemantik.
Om din arbetsbelastning verkligen behöver en normaliserad datamodell bör du överväga ett skalbart relationslager som Azures Hyperscale PostgreSQL.
Så här aktiverar du materialiserade vyer
Du måste ange enable_materialized_views: true
i fältet rawUserConfig
i ditt Cassandra-datacenter. Det gör du genom att använda följande Azure CLI-kommando för att uppdatera varje datacenter i klustret:
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