Détermination du type d’application pour Azure Cosmos DB for PostgreSQL

S’APPLIQUE À : Azure Cosmos DB for PostgreSQL (avec l’extension de base de données Citus pour PostgreSQL)

Pour exécuter des requêtes efficaces sur un cluster, les tables doivent être correctement réparties entre les serveurs. La distribution recommandée varie selon le type d’application et ses modèles de requête.

Il existe grosso modo deux types d’applications qui fonctionnent bien sur Azure Cosmos DB for PostgreSQL. La première étape de la modélisation des données consiste à identifier celle qui ressemble le plus à votre application.

Aperçu

Applications multilocataires Applications en temps réel
Parfois des dizaines ou des centaines de tables dans le schéma Petit nombre de tables
Requêtes qui se rapportent à un seul locataire (société/magasin) à la fois Requêtes analytiques relativement simples avec agrégations
Charges de travail OLTP pour le traitement des clients Web Volume d’ingestion élevé de données essentiellement immuables
Charges de travail OLAP qui servent des requêtes analytiques par locataire Centrage fréquent sur les grandes tables d’événements

Exemples et caractéristiques

Application multilocataire

Il s’agit généralement d’applications SaaS qui servent d’autres sociétés, comptes ou organisations. La plupart des applications SaaS sont relationnelles par nature. Elles ont une dimension naturelle qui fait que les données peuvent être distribuées sur les nœuds : partitionnez simplement par tenant_id.

Azure Cosmos DB for PostgreSQL vous permet d’effectuer un scale-out de votre base de données vers des millions de locataires sans avoir à recréer l’architecture de votre application. Vous pouvez conserver la sémantique relationnelle dont vous avez besoin, comme les jointures, les contraintes de clé étrangère, les transactions, ACID et la cohérence.

  • Exemples : Sites web qui hébergent des vitrines pour d’autres entreprises, par exemple une solution de marketing numérique ou un outil d’automatisation des ventes.
  • Caractéristiques : Requêtes relatives à un locataire unique plutôt que joignant des informations entre locataires. Cela comprend les charges de travail OLTP pour servir les clients web et les charges de travail OLAP qui servent des requêtes analytiques par locataire. La présence de dizaines ou de centaines de tables dans votre schéma de la base de données constitue également un indicateur pour le modèle de données mutualisées.

La mise à l’échelle d’une application multilocataire avec Azure Cosmos DB for PostgreSQL nécessite également des modifications minimales apportées au code d’application. Nous prenons en charge les infrastructures populaires telles que Ruby on Rails et Django.

Analytique en temps réel

Applications nécessitant un parallélisme massif, coordonnant des centaines de cœurs pour obtenir des résultats rapides aux requêtes numériques, statistiques ou de comptage. Grâce au partitionnement et à la parallélisation des requêtes SQL sur plusieurs nœuds, Azure Cosmos DB for PostgreSQL permet d’effectuer des requêtes en temps réel sur des milliards d’enregistrements en moins d’une seconde.

Les tables des modèles de données d’analyse en temps réel sont généralement divisées en colonnes telles que user_id, host_id ou device_id.

  • Exemples : Tableaux de bord d’analyse destinés aux clients nécessitant des temps de réponse inférieurs à une seconde.
  • Caractéristiques : Peu de tables, souvent axées sur un grand tableau d’événements de périphérique, de site ou d’utilisateur, et nécessitant un volume élevé d’ingestion de données essentiellement immuables. Requêtes analytiques relativement simples (mais gourmandes en calculs) impliquant plusieurs agrégations et clauses GROUP BY.

Si votre situation ressemble à l’une ou l’autre des cas ci-dessus, l’étape suivante consiste à décider comment partitionner vos données dans le cluster. Le choix de l’administrateur de base de données en ce qui concerne les colonnes de distribution doit correspondre aux modèles d’accès des requêtes typiques pour garantir les performances.

Étapes suivantes