Share via


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. Pode ativar esta funcionalidade com o portal do Azure. Esta pré-visualização de vistas materializadas é fornecida sem um contrato de nível de serviço. Neste momento, as vistas materializadas não são recomendadas para cargas de trabalho de produção. Determinadas funcionalidades desta pré-visualização podem não ser suportadas ou podem ter capacidades restritas. Para obter mais informações, veja termos de utilização suplementares para pré-visualizações do Microsoft Azure.

As vistas materializadas, quando definidas, ajudam a fornecer um meio para consultar de forma eficiente uma tabela base (ou contentor no Azure Cosmos DB) com filtros que não são chaves primárias. Quando os utilizadores escrevem na tabela base, a vista materializada é criada automaticamente em segundo plano. Esta vista pode ter uma chave primária diferente para pesquisas eficientes. A vista também conterá apenas colunas explicitamente projetadas a partir da tabela base. Esta vista será uma tabela só de leitura.

Pode consultar um arquivo de colunas sem especificar uma chave de partição com índices secundários. No entanto, a consulta não será eficaz para colunas com cardinalidade elevada ou baixa. A consulta pode analisar todos os dados para obter um pequeno conjunto de resultados. Estas consultas acabam por ser dispendiosas, uma vez que acabam por ser executadas inadvertidamente como uma consulta entre partições.

Com uma vista materializada, pode:

  • Utilize como tabela de pesquisa ou mapeamento para manter análises de partições cruzadas que, de outra forma, seriam consultas dispendiosas.
  • Forneça um predicado condicional baseado em SQL para preencher apenas determinadas colunas e dados que cumpram a pré-condição.
  • Crie vistas em tempo real que simplificam cenários baseados em eventos que são normalmente armazenados como coleções separadas através de acionadores de feed de alterações.

Benefícios de vistas materializadas

As vistas materializadas têm muitos benefícios que incluem, mas não se limitam a:

  • Pode implementar a desnormalização do lado do servidor com vistas materializadas. Com a desnormalização do lado do servidor, pode evitar várias tabelas independentes e desnormalização computacionalmente complexa em aplicações cliente.
  • Vistas materializadas que atualizam automaticamente as vistas para as manter consistentes com a tabela base. Esta atualização automática abstrai as responsabilidades das aplicações cliente com que normalmente implementaria lógica personalizada para executar escritas duplas na tabela base e na vista.
  • As vistas materializadas otimizam o desempenho de leitura ao ler a partir de uma única vista.
  • Pode especificar débito para a vista materializada de forma independente.
  • Pode configurar uma camada materializada do construtor de vistas para mapear os seus requisitos para hidratar uma vista.
  • As vistas materializadas melhoram o desempenho de escrita, uma vez que as operações de escrita só precisam de ser escritas na tabela base.
  • Além disso, a implementação do Azure Cosmos DB de vistas materializadas baseia-se num modelo pull. Esta implementação não afeta o desempenho da escrita.

Introdução às vistas materializadas

Crie uma nova API para contas do Cassandra com a CLI do Azure para ativar a funcionalidade de vistas materializadas com um comando nativo ou uma operação de API REST.

  1. Inicie sessão no Portal do Azure.

  2. Navegue para a sua API para a conta do Cassandra.

  3. No menu de recursos, selecione Definições.

  4. Na secção Definições , selecione Vista Materializada para a API para Cassandra (Pré-visualização).

  5. Na nova caixa de diálogo, selecione Ativar para ativar esta funcionalidade para esta conta.

    Captura de ecrã a mostrar a funcionalidade Vistas Materializadas a ser ativada no portal do Azure.

Os bastidores

A API para Cassandra utiliza uma camada de computação materializada do construtor de vistas para manter as vistas.

Obtém a flexibilidade para configurar as instâncias de computação do construtor de vistas com base nos seus requisitos de latência e atraso para hidratar as vistas. A partir de um ponto de suporte técnico, esta camada de computação ajuda a gerir as ligações entre partições de uma forma 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 numa conta do Azure Cosmos DB. Cada contentor de computação aprovisionado gera várias tarefas que leem o feed de alterações a partir de partições de tabela base e escrevem dados para a vista materializada de destino[s]. O contentor de computação transforma os dados de acordo com a definição de vista materializada para cada vista materializada na conta.

Criar um construtor de vistas materializado

Crie um construtor de vistas materializado para transformar automaticamente dados e escrever numa vista materializada.

  1. Inicie sessão no Portal do Azure.

  2. Navegue para a sua API para a conta do Cassandra.

  3. No menu de recursos, selecione Construtor de Vistas Materializadas.

  4. Na página Construtor de Vistas Materializadas , configure o SKU e o número de instâncias para o construtor.

    Nota

    Esta opção e página do menu de recursos só serão apresentadas quando a funcionalidade Vistas Materializadas estiver ativada para a conta.

  5. Selecione Guardar.

Criar uma vista materializada

Assim que a sua conta e o Construtor de Vistas Materializadas estiverem configurados, deverá conseguir criar vistas materializadas com o CQLSH.

Nota

Se ainda não tiver a ferramenta CQLSH autónoma instalada, consulte Instalar a Ferramenta CQLSH. Também deve atualizar a cadeia de ligação na ferramenta.

Seguem-se alguns comandos de exemplo para criar uma vista materializada:

  1. Primeiro, crie um nome uprofilede espaço de chaves .

    CREATE KEYSPACE IF NOT EXISTS uprofile WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 };
    
  2. Em seguida, crie uma tabela com o nome user no espaço de chaves.

    CREATE TABLE IF NOT EXISTS uprofile.USER (user_id INT PRIMARY KEY, user_name text, user_bcity text);
    
  3. Agora, crie uma vista materializada com o nome user_by_bcity no mesmo espaço de chaves. Especifique, com uma consulta, como os dados são projetados para a vista 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);
    
  4. 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' 
        );
    
  5. Consulte a vista materializada.

    SELECT * FROM user_by_bcity; 
    
  6. Observe o resultado da vista materializada.

     user_bcity | user_id | user_name 
    ------------+---------+----------- 
       New York |     101 |   johnjoe 
       New York |     102 |     james 
    
    (2 rows) 
    

Opcionalmente, também pode utilizar o fornecedor de recursos para criar ou atualizar uma vista materializada.

Limitações atuais

Existem algumas limitações com a API para a implementação de pré-visualização do Cassandra de vistas materializadas:

  • Não é possível criar vistas materializadas numa tabela que existia antes de o suporte para vistas materializadas ter sido ativado na conta. Para utilizar vistas materializadas, crie uma nova tabela depois de a funcionalidade estar ativada.
  • Para a cláusula de definição de WHERE vista materializada, apenas IS NOT NULL os filtros são atualmente permitidos.
  • Depois de criar uma vista materializada numa tabela base, ALTER TABLE ADD as operações não são permitidas no esquema da tabela base. ALTER TABLE APP só é permitido se nenhuma das vistas materializadas tiver selecionado * na respetiva definição.
  • Existem limites no tamanho da chave de partição (2 Kb) e no comprimento total do tamanho da chave de clustering (1 Kb). Se este limite de tamanho for excedido, a mensagem responsável acabará na fila de mensagens venenosas.
  • Se uma tabela base tiver tipos definidos pelo utilizador (UDTs) e a definição de vista materializada tiver SELECT * FROM ou tiver o UDT numa das colunas projetadas, as atualizações de UDT não são permitidas na conta.
  • As vistas materializadas podem tornar-se inconsistentes com a tabela base para algumas linhas após a ativação pós-falha regional automática. Para evitar esta inconsistência, reconstrua a vista materializada após a ativação pós-falha.
  • A criação de instâncias materializadas do construtor de vistas com 32 núcleos não é suportada. Se necessário, pode criar várias instâncias de construtor com um número menor de núcleos.

Além das limitações acima, considere as seguintes limitações adicionais:

  • Zonas de disponibilidade
    • As vistas materializadas não podem ser ativadas numa conta que tenha regiões de zona de disponibilidade ativadas.
    • A adição de uma nova região com uma zona de disponibilidade não é suportada uma vez enableMaterializedViews que esteja definida como verdadeira na conta.
  • Cópia de segurança e restauro periódicos
    • As vistas materializadas não são restauradas automaticamente com o processo de restauro. Terá de recriar as vistas materializadas após a conclusão do processo de restauro. Em seguida, deve configurar enableMaterializedViews na respetiva conta restaurada antes de criar novamente as vistas materializadas e os construtores.
  • Apache Cassandra
    • A definição da política de resolução de conflitos em vistas materializadas não é permitida.
    • As operações de escrita não são permitidas em vistas materializadas.
    • As consultas entre documentos e a utilização de funções de agregação não são suportadas em vistas materializadas.
    • O esquema de uma vista materializada não pode ser modificado após a criação.
    • A eliminação da tabela base não é permitida se, pelo menos, uma vista materializada estiver definida na mesma. Primeiro, todas as vistas têm de ser eliminadas e, em seguida, a tabela base pode ser eliminada.
    • A definição de vistas materializadas em contentores com colunas estáticas não é permitida.

Passos seguintes