Share via


Vistas materializadas en Azure Managed Instance for Apache Cassandra

Azure Managed Instance for Apache Cassandra es un servicio totalmente administrado para clústeres de Apache Cassandra de código abierto puros. El servicio también permite invalidar las configuraciones, en función de las necesidades específicas de cada carga de trabajo, lo que permite la máxima flexibilidad y control cuando sea necesario. En este artículo se describe cómo habilitar vistas materializadas.

Compatibilidad con las vistas materializadas

Las vistas materializadas están deshabilitadas de forma predeterminada, pero los usuarios pueden habilitarlas en su clúster. Sin embargo, no se recomienda que los usuarios de Azure Managed Instance for Apache Cassandra usen vistas materializadas. Son experimentales (consulte Materialized Views marked experimental-Apache Mail Archives y la propuesta para hacerlo). En concreto:

  • La implementación de vistas materializadas es un diseño como sistema distribuido que no se ha modelado ni simulado ampliamente. No ha habido ninguna prueba formal sobre sus propiedades.
  • No hay ninguna manera de determinar si una vista materializada no está sincronizada con su tabla base.
  • No hay ningún límite superior en cuanto al tiempo que se tarda en sincronizar una vista materializada cuando se produce un cambio en su tabla base.
  • Si se produce un error y una vista materializada deja de sincronizarse, la única manera de repararla es eliminar la vista materializada y volver a crearla.

Microsoft no puede ofrecer ningún Acuerdo de Nivel de Servicio ni soporte técnico ante incidencias con las vistas materializadas.

Alternativas a las vistas materializadas

Al igual que ocurre con la mayoría de los almacenes NoSQL, Apache Cassandra no está diseñado para tener un modelo de datos normalizado. Si necesita actualizar los datos en más de un lugar, el programa debe enviar todas las instrucciones necesarias como parte de un LOTE. Esto tiene dos ventajas con respecto a las vistas materializadas:

  • BATCH garantiza que se confirmen todas las instrucciones del lote o que no se confirme ninguna.
  • Todas las instrucciones tienen la misma semántica de confirmación y cuórum.

Si la carga de trabajo realmente necesita un modelo de datos normalizado, considere un almacén relacional escalable como PostgreSQL de Hiperescala de Azure.

Habilitación de vistas materializadas

Debe establecer enable_materialized_views: true en el campo rawUserConfig del centro de datos de Cassandra. Para ello, use el siguiente comando de la CLI de Azure para actualizar cada centro de datos del clúster:

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

Pasos siguientes