Compartir a través de


Modelado de aplicaciones en tiempo real 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)

Coubicación de tablas grandes con clave de partición

Para elegir la clave de partición de una aplicación de análisis operativo en tiempo real, siga estas instrucciones:

  • Elija una columna común en las tablas grandes.
  • Elija una columna que sea una dimensión natural en los datos o una parte principal de la aplicación. Algunos ejemplos:
    • En el mundo financiero, una aplicación que analiza las tendencias de seguridad probablemente usaría security_id.
    • En una carga de trabajo de análisis de usuarios en la que quiera analizar las métricas de uso del sitio web, user_id sería una buena columna de distribución.

Al coubicar las tablas grandes, puede insertar consultas SQL en los nodos de trabajo en paralelo. La inserción de consultas evita la distribución aleatoria de datos entre nodos en la red. Las operaciones como JOIN, agregaciones, consolidaciones, filtros y LIMIT se pueden ejecutar de forma eficiente.

Para visualizar las consultas distribuidas en paralelo en las tablas coubicadas, tenga en cuenta este diagrama:

Diagrama de las uniones entre nodos de trabajo.

Las tablas users y events se particionan por user_id, por lo que las filas relacionadas del mismo id. de usuario se colocan juntas en el mismo nodo de trabajo. Se pueden ejecutar operaciones JOIN de SQL sin extraer información entre los trabajadores.

Modelo de datos óptimo para aplicaciones en tiempo real

Continuemos con el ejemplo de una aplicación que analiza las visitas y métricas del sitio web del usuario. Hay dos tablas de "hechos", users y events, y otras tablas de "dimensiones" más pequeñas.

Diagrama de los usuarios, los eventos y varias tablas.

Para aplicar el gran potencial de las tablas distribuidas en Azure Cosmos DB for PostgreSQL, siga estos pasos:

  • Distribuya las tablas de hechos de mayor tamaño según una columna común. En nuestro caso, los usuarios y eventos se distribuyen en user_id.
  • Marque las tablas pequeñas o de dimensiones (device_types, countries y "event_types") como tablas de referencia.
  • Asegúrese de incluir la columna de distribución en las restricciones de clave principal, única y externa de las tablas distribuidas. Incluir la columna puede requerir la composición de las claves. Es necesario actualizar las claves para las tablas de referencia.
  • Al combinar tablas distribuidas de gran tamaño, asegúrese de hacer la combinación con la clave de partición.
-- 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...

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.