Partilhar via


Modele aplicativos de análise em tempo real no Azure Cosmos DB para PostgreSQL

Importante

O Azure Cosmos DB para PostgreSQL não tem mais suporte para novos projetos. Não use este serviço para novos projetos. Em vez disso, use um destes dois serviços:

  • Use o Azure Cosmos DB para NoSQL para obter uma solução de banco de dados distribuído projetada para cenários de alta escala com um SLA (contrato de nível de serviço) de disponibilidade de 99.999%, dimensionamento automático instantâneo e failover automático em várias regiões.

  • Use a funcionalidade de Clusters Elásticos do Azure para PostgreSQL para PostgreSQL fragmentado, utilizando a extensão Citus de código aberto.

Colocalize mesas grandes com chave de estilhaço

Para escolher a chave de shard para uma aplicação de análise operacional em tempo real, siga estas diretrizes:

  • Escolha uma coluna comum em tabelas grandes
  • Escolha uma coluna que seja uma dimensão natural nos dados ou uma parte central do aplicativo. Alguns exemplos:
    • No mundo financeiro, um aplicativo que analisa tendências de segurança provavelmente usaria security_id.
    • Em uma carga de trabalho de análise de usuário onde você deseja analisar métricas de uso do site, user_id seria uma boa coluna de distribuição

Ao colocar tabelas grandes, você pode enviar consultas SQL para nós de trabalho em paralelo. Empurrar consultas para baixo evita embaralhar dados entre nós na rede. Operações como junções, agregados, rollups, filtros, limites podem ser realizadas de maneira eficiente.

Para visualizar consultas distribuídas paralelas em tabelas colocalizadas, considere este diagrama:

Diagrama das uniões que ocorrem em nodos de trabalho.

As users tabelas e events são fragmentadas pelo user_id, de modo que as linhas relacionadas para o mesmo ID de usuário são colocadas juntas no mesmo nó de trabalho. As JOINs SQL podem acontecer sem extrair informações entre os trabalhadores.

Modelo de dados ideal para aplicativos em tempo real

Vamos continuar com o exemplo de um aplicativo que analisa as visitas e métricas do site do usuário. Existem duas tabelas de "factos" - utilizadores e eventos - e outras tabelas de "dimensão" mais pequenas.

Diagrama de usuários, eventos e tabelas diversas.

Para aplicar o super poder das tabelas distribuídas no Azure Cosmos DB para PostgreSQL, siga as seguintes etapas:

  • Distribua grandes tabelas de fatos em uma coluna comum. No nosso caso, os utilizadores e eventos são distribuídos em user_id.
  • Marque as tabelas pequenas/dimensionais (device_types, countriese 'event_types) como tabelas de referência.
  • Assegure-se de incluir a coluna de distribuição nas restrições de chave primária, exclusiva e estrangeira em tabelas distribuídas. A inclusão da coluna pode exigir tornar as chaves compostas. Há necessidade de atualizar chaves para tabelas de referência.
  • Quando estiver a fazer junções em tabelas distribuídas grandes, certifique-se de fazê-lo usando a chave de partição.
-- Distribute the fact tables

SELECT create_distributed_table('users', 'user_id');
SELECT create_distributed_table('products', 'user_id', colocate_with => 'users');

-- Turn dimension tables into reference tables, with synchronized copies
-- maintained on every worker node

SELECT create_reference_table('countries');
-- similarly for device_types and event_types...

Próximos passos

Agora terminamos de explorar a modelagem de dados para aplicativos escaláveis. O próximo passo é conectar e consultar o banco de dados com a linguagem de programação de sua escolha.