Partilhar via


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

Filtro comum como chave de estilhaço

Para escolher a chave de fragmento para um aplicativo transacional de alta taxa de transferência, 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 IOT, device_id é uma boa coluna de distribuição.

A escolha de uma boa chave de estilhaço ajuda a otimizar os saltos de rede, aproveitando a memória e a computação para alcançar 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.