Modelar aplicativos transacionais de alta taxa de transferência no Azure Cosmos DB for PostgreSQL
APLICA-SE AO: Azure Cosmos DB for PostgreSQL (da plataforma da extensão de dados Citus para PostgreSQL)
Filtro comum como chave de fragmento
Para selecionar Fragmentar a chave para um aplicativo transacional de alta taxa de transferência, siga estas diretrizes:
- Escolha uma coluna usada para pesquisas de ponto 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 coluna de distribuição válida.
- Em uma carga de trabalho de IoT,
A escolha de uma chave de fragmento válida ajuda a otimizar os saltos de rede, aproveitando a memória e a computação para alcançar a latência de milissegundos.
Modelo de dados ideal para aplicativos de alta taxa de transferência
Veja abaixo um exemplo de um modelo de dados de amostra para um aplicativo IoT que captura a telemetria (dados de série temporal) dos dispositivos. Há duas tabelas para capturar a telemetria: devices
e events
. Pode haver outras tabelas, mas elas não são abordadas neste exemplo.
Ao criar um aplicativo de alta taxa de transferência, tenha em mente um pouco de otimização.
- Distribua as tabelas grandes em uma coluna comum que seja uma parte central do aplicativo e a coluna que o aplicativo consulta geralmente. No exemplo acima de um aplicativo IoT,
device_id
é essa coluna e ela coloca as tabelas de eventos e dispositivos. - O restante das tabelas pequenas pode ser tabelas de referência.
- Como os aplicativos IoT têm uma dimensão de tempo, particione as tabelas distribuídas de acordo com o tempo. Você pode usar recursos nativos da série temporal do Azure Cosmos DB for PostgreSQL para criar e manter partições.
- O particionamento ajuda a filtrar os dados com eficiência para consultas com filtros de tempo.
- A expiração de dados antigos também é rápida usando o comando DROP em comparação ao 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.
- Em nosso exemplo, a tabela de eventos tem uma coluna
detail
, que é JSONB.
- Em nosso exemplo, a tabela de eventos tem uma coluna
- Se o seu aplicativo IoT exigir recursos geoespaciais, você poderá usar a extensão PostGIS, que tem suporte nativo do Azure Cosmos DB for PostgreSQL.
Próximas etapas
Agora terminamos de explorar a modelagem de dados para aplicativos escalonáveis. A próxima etapa é conectar e consultar o banco de dados com a linguagem de programação de sua escolha.