Vues matérialisées dans Azure Managed Instance pour Apache Cassandra
Azure Managed Instance pour Apache Cassandra est un service entièrement managé pour de purs clusters Apache Cassandra open source. Le service permet également de remplacer des configurations, en fonction des besoins spécifiques de chaque charge de travail, ce qui permet une flexibilité et un contrôle optimaux, le cas échéant. Cet article explique comment activer des vues matérialisées.
Prise en charge de la vue matérialisée
Les vues matérialisées sont désactivées par défaut, mais les utilisateurs peuvent les activer sur leur cluster. Toutefois, nous déconseillons aux utilisateurs d’Azure Managed Instance pour Apache Cassandra d’utiliser des vues matérialisées. Ces vues sont expérimentales (voir l’article Materialized Views marked experimental-Apache Mail Archive et la proposition correspondante). En particulier :
- L’implémentation de vues matérialisées est une conception de système distribuée qui n’a pas été modélisée et simulée de façon approfondie. Ses propriétés n’ont pas été formellement vérifiées.
- Il n’existe aucun moyen de déterminer si une vue matérialisée n’est pas synchronisée avec sa table de base.
- Il n’y a aucune limite supérieure sur le temps nécessaire à la synchronisation d’une vue matérialisée lorsqu’une modification est apportée à sa table de base.
- Si une erreur se produit et qu’une vue matérialisée est désynchronisée, la seule façon de la réparer consiste à supprimer la vue matérialisée puis à la recréer.
Microsoft ne peut pas offrir de contrat de niveau de service (SLA) ou de support pour les problèmes liés aux vues matérialisées.
Alternatives aux vues matérialisées
Comme la plupart des magasins NoSQL, Apache Cassandra n’est pas conçu pour avoir un modèle de données normalisé. Si vous devez mettre à jour les données à plusieurs endroits, votre programme doit envoyer toutes les instructions nécessaires dans le cadre d’un traitement. Cela présente deux avantages par rapport aux vues matérialisées :
- BATCH garantit que toutes les instructions du lot sont validées ou aucune.
- Toutes les instructions ont les mêmes sémantiques de quorum et de validation.
Si votre charge de travail a réellement besoin d’un modèle de données normalisé, vous pouvez utiliser un magasin relationnel évolutif comme Hyperscale PostgreSQL d’Azure.
Comment activer les vues matérialisées
Vous devez définir enable_materialized_views: true
dans le champ rawUserConfig
de votre centre de données Cassandra. Pour cela, utilisez la commande Azure CLI suivante pour mettre à jour chaque centre de données de votre cluster :
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