Compartir vía


Modelado de aplicaciones transaccionales de alto rendimiento en Azure Cosmos DB for PostgreSQL

SE APLICA A: Azure Cosmos DB for PostgreSQL (con tecnología de la extensión de base de datos de Citus en PostgreSQL)

Filtro común como clave de partición

Para elegir la clave de partición para una aplicación transaccional de alto rendimiento, siga estas instrucciones:

  • Elija una columna que se use para las búsquedas de puntos y esté presente en la mayoría de las operaciones de creación, lectura, actualización y eliminación.
  • Elija una columna que sea una dimensión natural en los datos o una parte principal de la aplicación. Por ejemplo:
    • En una carga de trabajo de IoT, device_id es una buena columna de distribución.

La elección de una buena clave de partición ayuda a optimizar los saltos de red y, a su vez, aprovechar la memoria y el proceso para lograr una latencia de milisegundos.

Modelo de datos óptimo para aplicaciones de alto rendimiento

A continuación se muestra un ejemplo de un modelo de datos de ejemplo para una aplicación de IoT que captura la telemetría (datos de serie temporal) de los dispositivos. Hay dos tablas para capturar la telemetría: devices y events. Podría haber otras tablas, pero no se tratan en este ejemplo.

Diagrama de las tablas de eventos y dispositivos, y de las particiones de los eventos.

Al crear una aplicación de alto rendimiento, tenga en cuenta alguna optimización.

  • Distribuya las tablas grandes en una columna común que sea una parte principal de la aplicación y la columna que la aplicación consulte principalmente. En el ejemplo anterior de una aplicación de IoT, device_id es esa columna y coubica las tablas de eventos y dispositivos.
  • El resto de las tablas pequeñas pueden ser tablas de referencia.
  • Como las aplicaciones de IoT tienen una dimensión de tiempo, particione las tablas distribuidas en función del tiempo. Puede usar funcionalidades nativas de serie temporal de Azure Cosmos DB for PostgreSQL para crear y mantener particiones.
    • La creación de particiones ayuda a filtrar eficazmente los datos de las consultas con filtros de tiempo.
    • La expiración de los datos antiguos también es rápida mediante el comando DROP frente a DELETE.
    • La tabla de eventos de nuestro ejemplo se particiona por mes.
  • Use el tipo de datos JSONB para almacenar datos semiestructurados. Normalmente, los datos de telemetría del dispositivo no están estructurados, cada dispositivo tiene sus propias métricas.
    • En nuestro ejemplo, la tabla de eventos tiene una columna detail, que es JSONB.
  • Si la aplicación de IoT requiere características geoespaciales, puede usar la extensión PostGIS, que Azure Cosmos DB for PostgreSQL admite de forma nativa.

Pasos siguientes

Ya hemos terminado de explorar el modelado de datos para las aplicaciones escalables. El siguiente paso es conectar y consultar la base de datos con su lenguaje de programación favorito.