Vistas materializadas no Azure Cosmos DB para Apache Cassandra (pré-visualização)
APLICA-SE A: Cassandra
Importante
As vistas materializadas no Azure Cosmos DB para Cassandra estão atualmente em pré-visualização. Você pode habilitar esse recurso usando o portal do Azure. Essa visualização de exibições materializadas é fornecida sem um contrato de nível de serviço. No momento, as visualizações materializadas não são recomendadas para cargas de trabalho de produção. Alguns recursos desta visualização podem não ser suportados ou podem ter recursos restritos. Para obter mais informações, consulte termos de uso suplementares para visualizações do Microsoft Azure.
As exibições materializadas, quando definidas, ajudam a fornecer um meio de consultar com eficiência uma tabela base (ou contêiner no Azure Cosmos DB) com filtros que não são chaves primárias. Quando os usuários gravam na tabela base, a exibição materializada é criada automaticamente em segundo plano. Esta vista pode ter uma chave primária diferente para pesquisas eficientes. A exibição também conterá apenas colunas explicitamente projetadas a partir da tabela base. Esta vista será uma tabela só de leitura.
Você pode consultar um repositório de colunas sem especificar uma chave de partição usando índices secundários. No entanto, a consulta não será eficaz para colunas com cardinalidade alta ou baixa. A consulta pode examinar todos os dados em busca de um pequeno conjunto de resultados. Essas consultas acabam sendo caras, pois acabam sendo executadas inadvertidamente como uma consulta entre partições.
Com uma visão materializada, você pode:
- Use como tabela de pesquisa ou mapeamento para persistir verificações entre partições que, de outra forma, seriam consultas caras.
- Forneça um predicado condicional baseado em SQL para preencher apenas determinadas colunas e dados que atendam à pré-condição.
- Crie exibições em tempo real que simplificam cenários baseados em eventos que geralmente são armazenados como coleções separadas usando gatilhos de feed de alterações.
Benefícios das visões materializadas
As visualizações materializadas têm muitos benefícios que incluem, mas não estão limitados a:
- Você pode implementar a desnormalização do lado do servidor usando exibições materializadas. Com a desnormalização do lado do servidor, você pode evitar várias tabelas independentes e desnormalização computacionalmente complexa em aplicativos cliente.
- Visualizações materializadas atualizando automaticamente as visualizações para mantê-las consistentes com a tabela base. Essa atualização automática abstrai as responsabilidades de seus aplicativos cliente com normalmente implementaria lógica personalizada para executar gravações duplas na tabela base e na exibição.
- As visualizações materializadas otimizam o desempenho de leitura lendo a partir de uma única visualização.
- Você pode especificar a taxa de transferência para a exibição materializada de forma independente.
- Você pode configurar uma camada de construtor de exibição materializada para mapear de acordo com suas necessidades para hidratar uma exibição.
- As visualizações materializadas melhoram o desempenho de gravação, pois as operações de gravação só precisam ser gravadas na tabela base.
- Além disso, a implementação do Azure Cosmos DB de exibições materializadas é baseada em um modelo pull. Essa implementação não afeta o desempenho de gravação.
Introdução às visualizações materializadas
Crie uma nova API para contas Cassandra usando a CLI do Azure para habilitar o recurso de exibições materializadas com um comando nativo ou uma operação da API REST.
Inicie sessão no portal do Azure.
Navegue até sua conta API para Cassandra.
No menu de recursos, selecione Configurações.
Na seção Configurações, selecione Visualização materializada para Cassandra API (Visualização).
Na nova caixa de diálogo, selecione Ativar para ativar este recurso para esta conta.
Under the hood (Como funciona o Azure RMS? Nos bastidores)
A API para Cassandra usa uma camada de computação materializada do construtor de visualizações para manter as exibições.
Você tem a flexibilidade de configurar as instâncias de computação do construtor de exibições com base em seus requisitos de latência e atraso para hidratar as exibições. Do ponto de vista técnico, essa camada de computação ajuda a gerenciar conexões entre partições de maneira mais eficiente, mesmo quando o tamanho dos dados é grande e o número de partições é alto.
Os contêineres de computação são compartilhados entre todas as exibições materializadas em uma conta do Azure Cosmos DB. Cada contêiner de computação provisionado gera várias tarefas que leem o feed de alterações das partições da tabela base e gravam dados na visualização materializada de destino. O contêiner de computação transforma os dados de acordo com a definição de visualização materializada para cada visualização materializada na conta.
Criar um construtor de vistas materializado
Crie um construtor de visualizações materializadas para transformar automaticamente os dados e gravar em uma exibição materializada.
Inicie sessão no portal do Azure.
Navegue até sua conta API para Cassandra.
No menu de recursos, selecione Construtor de Visualizações Materializadas.
Na página Construtor de Visualizações Materializadas, configure a SKU e o número de instâncias para o construtor.
Nota
Esta opção e página do menu de recursos só aparecerão quando o recurso Visualizações Materializadas estiver habilitado para a conta.
Selecione Guardar.
Criar uma vista materializada
Assim que sua conta e o Materialized View Builder estiverem configurados, você poderá criar visualizações Materializadas usando CQLSH.
Nota
Se você ainda não tiver a ferramenta CQLSH autônoma instalada, consulte instalar a ferramenta CQLSH. Você também deve atualizar sua cadeia de conexão na ferramenta.
Aqui estão alguns comandos de exemplo para criar uma exibição materializada:
Primeiro, crie um nome
uprofile
de espaço de chave .CREATE KEYSPACE IF NOT EXISTS uprofile WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 };
Em seguida, crie uma tabela nomeada
user
dentro do espaço de chave.CREATE TABLE IF NOT EXISTS uprofile.USER (user_id INT PRIMARY KEY, user_name text, user_bcity text);
Agora, crie uma exibição materializada nomeada
user_by_bcity
dentro do mesmo espaço de chave. Especifique, usando uma consulta, como os dados são projetados na exibição a partir da tabela base.CREATE MATERIALIZED VIEW uprofile.user_by_bcity AS SELECT user_id, user_name, user_bcity FROM uprofile.USER WHERE user_id IS NOT NULL AND user_bcity IS NOT NULL PRIMARY KEY (user_bcity, user_id);
Insira linhas na tabela base.
INSERT INTO uprofile.USER (user_id, user_name, user_bcity) VALUES ( 101, 'johnjoe', 'New York' ); INSERT INTO uprofile.USER (user_id, user_name, user_bcity) VALUES ( 102, 'james', 'New York' );
Consulte a vista materializada.
SELECT * FROM user_by_bcity;
Observe a saída a partir da visão materializada.
user_bcity | user_id | user_name ------------+---------+----------- New York | 101 | johnjoe New York | 102 | james (2 rows)
Opcionalmente, você também pode usar o provedor de recursos para criar ou atualizar uma exibição materializada.
- Criar ou atualizar uma exibição na API para Cassandra
- Obter uma visualização na API para Cassandra
- Listar visualizações na API para Cassandra
- Excluir uma exibição na API para Cassandra
- Atualizar a taxa de transferência de uma exibição na API para Cassandra
Limitações atuais
Há algumas limitações com a API para a implementação de visualização de visualizações materializadas de Cassandra:
- As visualizações materializadas não podem ser criadas em uma tabela que existia antes que o suporte para exibições materializadas fosse habilitado na conta. Para usar exibições materializadas, crie uma nova tabela depois que o recurso estiver habilitado.
- Para a cláusula de definição de exibição materializada, apenas
IS NOT NULL
filtros são permitidosWHERE
atualmente. - Depois que uma exibição materializada é criada em relação a uma tabela base,
ALTER TABLE ADD
as operações não são permitidas no esquema da tabela base.ALTER TABLE APP
só é permitida se nenhuma das visões materializadas tiver selecionado*
em sua definição. - Existem limites para o tamanho da chave de partição (2 Kb) e o comprimento total do tamanho da chave de agrupamento (1 Kb). Se esse limite de tamanho for excedido, a mensagem responsável acabará na fila de mensagens suspeitas.
- Se uma tabela base tiver tipos definidos pelo usuário (UDTs) e a definição de exibição materializada tiver ou
SELECT * FROM
tiver o UDT em uma das colunas projetadas, as atualizações UDT não serão permitidas na conta. - As exibições materializadas podem se tornar inconsistentes com a tabela base para algumas linhas após o failover regional automático. Para evitar essa inconsistência, reconstrua a exibição materializada após o failover.
- Não há suporte para a criação de instâncias de construtor de exibição materializadas com 32 núcleos . Se necessário, você pode criar várias instâncias do construtor com um número menor de núcleos.
Além das limitações acima, considere as seguintes limitações extras:
- Zonas de disponibilidade
- As visualizações materializadas não podem ser habilitadas em uma conta que tenha regiões habilitadas para zona de disponibilidade.
- A adição de uma nova região com uma zona de disponibilidade não é suportada quando
enableMaterializedViews
é definida como true na conta.
- Backup e restauração periódicos
- As visualizações materializadas não são restauradas automaticamente com o processo de restauração. Você precisará recriar as exibições materializadas após a conclusão do processo de restauração. Em seguida, você deve configurar
enableMaterializedViews
em sua conta restaurada antes de criar as visualizações materializadas e construtores novamente.
- As visualizações materializadas não são restauradas automaticamente com o processo de restauração. Você precisará recriar as exibições materializadas após a conclusão do processo de restauração. Em seguida, você deve configurar
- Apache Cassandra
- Não é permitido definir uma política de resolução de conflitos em pontos de vista materializados.
- Operações de gravação não são permitidas em exibições materializadas.
- Consultas entre documentos e o uso de funções agregadas não são suportados em exibições materializadas.
- O esquema de uma visão materializada não pode ser modificado após a criação.
- A exclusão da tabela base não é permitida se pelo menos uma exibição materializada for definida nela. Todas as visualizações devem primeiro ser excluídas e, em seguida, a tabela base pode ser excluída.
- Não é permitido definir exibições materializadas em contêineres com colunas estáticas.