Compartilhar via


Exibições materializadas na Instância Gerenciada do Azure para Apache Cassandra

A Instância Gerenciada do Azure para Apache Cassandra é um serviço totalmente gerenciado para clusters puros de código aberto do Apache Cassandra. O serviço também permite que as configurações sejam substituídas, dependendo das necessidades específicas de cada carga de trabalho. Esse recurso permite a máxima flexibilidade e controle quando necessário. Este artigo discute como habilitar exibições materializadas.

Suporte para exibição materializada

As exibições materializadas são desabilitadas por padrão, mas você pode habilitá-las em seu cluster. Desencorajamos os usuários da Instância Gerenciada do Apache Cassandra no Azure a usar visões materializadas. Eles são experimentais. Especialmente:

  • A implementação de exibições materializadas é um design de sistema distribuído que não é amplamente modelado e simulado. Não há provas formais sobre suas propriedades.
  • Não há como determinar se uma exibição materializada está fora de sincronia com sua tabela base.
  • Não há nenhum limite superior em quanto tempo leva para uma exibição materializada ser sincronizada quando há uma alteração em sua tabela base.
  • Se houver um erro e uma exibição materializada ficar fora de sincronia, a única maneira de resolver a situação é remover a exibição materializada e criá-la novamente.

Para mais informações, consulte Exibições materializadas com arquivos de email do Apache marcados como experimentais e a proposta para fazer isso.

A Microsoft não oferece nenhum contrato de nível de serviço ou suporte em problemas com exibições materializadas.

Alternativas a exibições materializadas

Como a maioria dos repositórios NoSQL, o Apache Cassandra não foi projetado para ter um modelo de dados normalizado. Se você precisar atualizar dados em mais de um local, envie todas as instruções necessárias como parte de um LOTE. Essa abordagem tem duas vantagens em relação a visões materializadas.

  • BATCH garante que todas as instruções no lote sejam confirmadas ou nenhuma.
  • Todas as instruções têm o mesmo quorum e semântica de confirmação.

Se sua carga de trabalho realmente precisar de um modelo de dados normalizado, considere um repositório relacional escalonável como o Azure Cosmos DB para PostgreSQL.

Habilitar exibições materializadas

Defina enable_materialized_views: true no campo rawUserConfig do datacenter do Cassandra. Use o seguinte comando da CLI do Azure para atualizar cada datacenter em seu 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