Partilhar via


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

APLICA-SE A: Azure Cosmos DB para PostgreSQL (alimentado pela extensão de banco de dados Citus para PostgreSQL)

Colocalize mesas grandes com chave de estilhaço

Para escolher a chave de fragmento para um aplicativo 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 JOINs, agregados, rollups, filtros, LIMITs podem ser executadas de forma eficiente.

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

Diagrama de junções acontecendo dentro de nós 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.
  • Certifique-se de incluir a coluna de distribuição em restrições de chave primária, exclusiva e estrangeira em tabelas distribuídas. A inclusão da coluna pode exigir a composição das chaves. Há necessidade de atualizar chaves para tabelas de referência.
  • Quando você estiver ingressando em grandes mesas distribuídas, certifique-se de ingressar usando a tecla de estilhaç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.