Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
APPLIES TO:
Cassandra
Important
Visualizações materializadas no Azure Cosmos DB para Cassandra estão atualmente em pré-visualização. Pode ativar esta funcionalidade através do portal do Azure. Esta pré-visualização de vistas materializadas é fornecida sem um acordo de nível de serviço. Neste momento, as vistas materializadas não são recomendadas para cargas de trabalho de produção. Certas funcionalidades desta pré-visualização podem não ser suportadas ou podem ter capacidades limitadas. Para mais informações, consulte os termos suplementares de uso para pré-visualizações do Microsoft Azure.
Visões materializadas, quando definidas, ajudam a fornecer uma maneira de consultar eficientemente uma tabela base (ou contêiner no Azure Cosmos DB) com filtros que não são chaves primárias. When users write to the base table, the materialized view is built automatically in the background. This view can have a different primary key for efficient lookups. A vista também conterá apenas colunas explicitamente projetadas a partir da tabela base. Esta visão será uma tabela somente de leitura.
Pode consultar uma store de colunas sem especificar uma chave de partição ao usar índices secundários. No entanto, a consulta não será eficaz para colunas com alta ou baixa cardinalidade. A consulta pode analisar todos os dados para um conjunto pequeno de resultados. Essas consultas acabam por ser caras, pois acabam por ser executadas inadvertidamente como uma consulta inter-partição.
Com uma visão materializada, pode:
- Utilize como tabela de consulta ou de mapeamento para persistir varreduras entre partições que, de outra forma, seriam consultas dispendiosas.
- Forneça um predicado condicional baseado em SQL para preencher apenas certas colunas e dados que atendam à pré-condição.
- Crie vistas em tempo real que simplifiquem cenários baseados em eventos que são frequentemente armazenados como coleções separadas usando gatilhos de fluxos de mudança.
Benefícios de visões materializadas
Vistas materializadas têm muitos benefícios que incluem, mas não se limitam a:
- Pode implementar desnormalização no lado do servidor usando visões materializadas. Com a desnormalização no lado do servidor, pode-se evitar múltiplas tabelas independentes e uma desnormalização computacionalmente complexa em aplicações do cliente.
- Vistas materializadas que atualizam automaticamente para se manterem consistentes com a tabela base. A atualização automática abstrai as responsabilidades das suas aplicações cliente, que tipicamente implementariam lógica personalizada para realizar escritas duplas na tabela base e na vista.
- As vistas materializadas otimizam o desempenho de leitura ao ler de uma única vista.
- Pode especificar a capacidade de processamento para a vista materializada de forma independente.
- Pode configurar uma camada construtora de vistas materializadas a ser mapeada de acordo com os seus requisitos para hidratar uma vista.
- As vistas materializadas melhoram o desempenho de escrita, pois as operações de escrita precisam apenas ser gravadas na tabela base.
- Além disso, a implementação do Azure Cosmos DB de vistas materializadas baseia-se num modelo de pull. Esta implementação não afeta o desempenho de escrita.
Comece a utilizar vistas materializadas
Crie uma nova API para contas do Cassandra utilizando o Azure CLI para ativar a funcionalidade de visualizações materializadas, seja com um comando nativo ou uma operação de API REST.
Sign in to the Azure portal.
Navegue até à sua conta da API para Cassandra.
No menu de recursos, selecione Definições.
Na secção de Definições, selecione Vista Materializada para API Cassandra (Pré-visualização).
No novo diálogo, selecione Enable para ativar esta funcionalidade para esta conta.
Por baixo do capot
A API do Cassandra utiliza uma camada de computação de construtor de vistas materializadas para manter as vistas.
Você tem a flexibilidade de configurar as instâncias de computação do construtor de visualizações com base nos seus requisitos de latência e atraso para hidratar as visualizações. Do ponto de vista técnico, esta camada de computação ajuda a gerir as ligações entre partições de maneira mais eficiente, mesmo quando o tamanho dos dados é grande e o número de partições é elevado.
Os contentores de computação são partilhados entre todas as vistas materializadas dentro de uma conta do Azure Cosmos DB. Cada contentor de computação provisionado inicia múltiplas tarefas que leem o feed de alterações das partições das tabelas base e escrevem dados na(s) vista(s) materializada(s) de destino. O contentor de computação transforma os dados de acordo com a definição da vista materializada para cada vista materializada na conta.
Criar um construtor de visão materializada
Crie um construtor de vista materializada para transformar automaticamente os dados e escrever numa vista materializada.
Sign in to the Azure portal.
Aceda à sua conta da API para Cassandra.
No menu de recursos, selecione Materialized Views Builder.
Na página do Construtor de Vistas Materializadas, configure o SKU e o número de instâncias para o construtor.
Nota
Esta opção de menu de recursos e a página correspondente só aparecerão quando a funcionalidade de Vistas Materializadas estiver ativada para a conta.
Select Save.
Criar uma visão materializada
Quando a sua conta e o Construtor de Visão Materializada estiverem configurados, deverá ser capaz de criar visões materializadas utilizando o CQLSH.
Nota
Se ainda não tiver a ferramenta CQLSH standalone instalada, consulte install the CQLSH Tool. Deve também atualizar a sua string de conexão na ferramenta.
Aqui estão alguns comandos de exemplo para criar uma vista materializada:
Primeiro, crie um keyspace nome
uprofile.CREATE KEYSPACE IF NOT EXISTS uprofile WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 };Em seguida, crie uma tabela denominada
userdentro 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 vista materializada chamada
user_by_bcitydentro do mesmo espaço de chave. Especifique, utilizando uma consulta, como os dados são projetados na visualizaçã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);Insert rows into the base table.
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' );Query the materialized view.
SELECT * FROM user_by_bcity;Observe the output from the materialized view.
user_bcity | user_id | user_name ------------+---------+----------- New York | 101 | johnjoe New York | 102 | james (2 rows)
Optionally, you can also use the resource provider to create or update a materialized view.
- Create or Update a view in API for Cassandra
- Get a view in API for Cassandra
- List views in API for Cassandra
- Delete a view in API for Cassandra
- Update the throughput of a view in API for Cassandra
Current limitations
Existem algumas limitações na API para a implementação preliminar de vistas materializadas do Cassandra.
- Não se podem criar vistas materializadas numa tabela que existiu antes de o suporte para vistas materializadas ter sido ativado na conta. Para usar vistas materializadas, crie uma nova tabela depois de a funcionalidade estar ativada.
- Para a cláusula
WHEREda definição da vista materializada, atualmente, apenas são permitidos filtrosIS NOT NULL. - Após a criação de uma visão materializada contra uma tabela base, as operações
ALTER TABLE ADDnão são permitidas no esquema da tabela base.ALTER TABLE APPé permitido apenas se nenhuma das vistas materializadas tiver selecionado*na 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 este limite de tamanho for excedido, a mensagem responsável acabará na fila de mensagens malformadas.
- Se uma tabela base tiver tipos definidos pelo utilizador (UDTs) e a definição de visualização materializada tiver
SELECT * FROMou tiver o UDT numa das colunas projetadas, as atualizações dos UDTs não são permitidas na conta. - As vistas materializadas podem tornar-se inconsistentes com a tabela base para algumas linhas após uma transferência automática regional de failover. To avoid this inconsistency, rebuild the materialized view after the failover.
- Creating materialized view builder instances with 32 cores isn't supported. If needed, you can create multiple builder instances with a smaller number of cores.
In addition to the above limitations, consider the following extra limitations:
- Availability zones
- As visualizações materializadas não podem ser ativadas numa conta que tenha regiões com zonas de disponibilidade habilitadas.
- Adicionar uma nova região com uma zona de disponibilidade não é suportado uma vez que
enableMaterializedViewsestá definido como verdadeiro na conta.
- Backup e restauração periódicos
- As vistas materializadas não são restauradas automaticamente com o processo de restauração. Terá que recriar as vistas materializadas após a conclusão do processo de restauração. Então, deves configurar
enableMaterializedViewsna conta restaurada deles antes de criar novamente as vistas materializadas e os construtores.
- As vistas materializadas não são restauradas automaticamente com o processo de restauração. Terá que recriar as vistas materializadas após a conclusão do processo de restauração. Então, deves configurar
- Apache Cassandra
- Não é permitido definir uma política de resolução de conflitos em vistas materializadas.
- Não são permitidas operações de escrita em vistas materializadas.
- As consultas entre documentos e o uso de funções agregadas não são suportados em vistas materializadas.
- A materialized view's schema can't be modified after creation.
- Não é permitido eliminar a tabela base se pelo menos uma vista materializada estiver definida sobre ela. Todas as vistas devem ser eliminadas primeiro e depois a tabela base pode ser eliminada.
- Definir vistas materializadas em contêineres com colunas estáticas não é permitido.