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 do Apache Cassandra apenas de código aberto. O serviço também permite que as configurações sejam substituídas, dependendo das necessidades específicas de cada carga de trabalho, permitindo flexibilidade e controle máximos 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 os usuários podem habilitá-las em seu cluster. No entanto, não recomendamos que usuários da Instância Gerenciada do Azure para Apache Cassandra usem exibições materializadas. Elas são experimentais (consulte Exibições materializadas com arquivos de email do Apache marcados como experimentais e a proposta para fazer isso). Especialmente:

  • A implementação de exibições materializadas é um design de sistema distribuído que não foi amplamente modelado e simulado. Não há provas formais sobre suas propriedades.
  • Não é possível determinar se uma exibição materializada está fora de sincronia com sua tabela base.
  • Não há nenhum limite superior de quanto tempo leva para que uma exibição materializada seja sincronizada quando há uma alteração em sua tabela base.
  • Se houver um erro e uma exibição materializada sair da sincronização, a única maneira de repará-la é descartar a exibição materializada e recriá-la.

A Microsoft não pode oferecer nenhum SLA ou suporte a problemas com exibições materializadas.

Alternativas a exibições materializadas

Assim 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 lugar, o programa deverá enviar todas as instruções necessárias como parte de um LOTE. Isso tem duas vantagens sobre exibições materializadas:

  • O LOTE 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 precisar realmente de um modelo de dados normalizado, considere um relational store escalonável como o PostgreSQL de Hiperescalado Azure.

Como habilitar exibições materializadas

Você precisa definir enable_materialized_views: true no campo rawUserConfig de seu data center Cassandra. Para fazer isso, use o seguinte comando da CLI do Azure para atualizar cada data center 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

Próximas etapas