Partilhar via


Modele aplicativos transacionais de alta taxa de transferência 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.

Filtro comum como chave de partição

Para escolher a chave de partição para um aplicativo transacional de alta taxa de processamento, siga estas diretrizes:

  • Escolha uma coluna que seja usada para pesquisas de pontos e esteja presente na maioria das operações de criação, leitura, atualização e exclusão.
  • Escolha uma coluna que seja uma dimensão natural nos dados ou uma parte central do aplicativo. Por exemplo:
    • Em uma carga de trabalho de IoT, device_id é uma boa coluna de distribuição.

A escolha de uma boa chave de fragmento ajuda a otimizar os saltos de rede, aproveitando a memória e a computação para atingir uma latência de milissegundos.

Modelo de dados ideal para aplicativos de alta taxa de transferência

Abaixo está um exemplo de um modelo de dados de exemplo para um aplicativo IoT que captura telemetria (dados de séries temporais) de dispositivos. Existem duas tabelas para capturar telemetria: devices e events. Poderia haver outras tabelas, mas elas não são abordadas neste exemplo.

Diagrama de eventos e tabelas de dispositivos e partições de eventos.

Ao criar um aplicativo de alto rendimento, tenha em mente alguma otimização.

  • Distribua tabelas grandes em uma coluna comum que é a parte central do aplicativo e na coluna que seu aplicativo consulta principalmente. No exemplo acima de um aplicativo IOT, device_id é essa coluna, e ela co-localiza as tabelas de eventos e dispositivos.
  • O resto das pequenas tabelas podem ser tabelas de referência.
  • Como os aplicativos IOT têm uma dimensão de tempo, particione suas tabelas distribuídas com base no tempo. Você pode usar recursos nativos do Azure Cosmos DB para séries cronológicas do PostgreSQL para criar e manter partições.
    • O particionamento ajuda a filtrar dados de forma eficiente para consultas com filtros de tempo.
    • Expirar dados antigos também é rápido, usando o comando DROP vs DELETE.
    • A tabela de eventos em nosso exemplo é particionada por mês.
  • Use o tipo de dados JSONB para armazenar dados semiestruturados. Os dados de telemetria do dispositivo normalmente não são estruturados, cada dispositivo tem suas próprias métricas.
    • No nosso exemplo, a tabela de eventos tem uma detail coluna, que é JSONB.
  • Se seu aplicativo IoT exigir recursos geoespaciais, você poderá usar a extensão PostGIS, que o Azure Cosmos DB para PostgreSQL oferece suporte nativamente.

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.