Bases de données, conteneurs et éléments dans Azure Cosmos DB

S’APPLIQUE À : NoSQL MongoDB Cassandra Gremlin Table

Azure Cosmos DB est une solution PaaS (platform as a service) complètement managée. Pour commencer à utiliser Azure Cosmos DB, créez un compte Azure Cosmos DB dans un groupe de ressources Azure de votre abonnement. Créez ensuite des bases de données et des conteneurs dans le compte.

Votre compte Azure Cosmos DB contient un nom DNS (Domain Name System) unique. Vous pouvez gérer le nom DNS à l’aide de nombreux outils, notamment :

  • Portail Azure
  • Modèles Microsoft Azure Resource Manager
  • Modèles Bicep
  • Azure PowerShell
  • Azure CLI
  • Kits de développement logiciel (SDK) de gestion Azure
  • API REST Azure

Pour répliquer vos données et votre débit dans plusieurs régions Azure, vous pouvez ajouter des régions Azure à votre compte et en supprimer à tout moment. Vous pouvez configurer votre compte pour une seule région ou pour plusieurs régions d’écriture. Pour plus d’informations, consultez Gérer un compte Azure Cosmos DB en utilisant le portail Azure. Vous pouvez également configurer le niveau de cohérence par défaut d’un compte.

Éléments d’un compte Azure Cosmos DB

Actuellement, vous pouvez créer un maximum de 50 comptes Azure Cosmos DB pour un abonnement Azure. Vous pouvez augmenter cette limite en effectuant une demande de support.

Vous pouvez gérer une quantité pratiquement illimitée de données et un débit approvisionné à l’aide d’un seul compte Azure Cosmos DB. Pour gérer vos données et le débit approvisionné, créez une ou plusieurs bases de données dans votre compte, puis un ou plusieurs conteneurs afin de stocker vos données.

L’image suivante montre la hiérarchie des éléments dans un compte Azure Cosmos DB.

Diagramme de la hiérarchie d’un compte Azure Cosmos DB, notamment un compte, une base de données et un conteneur.

L’image suivante montre la hiérarchie des entités dans un compte Azure Cosmos DB.

Diagramme de la relation entre un conteneur et des éléments, y compris les entités frères telles que les procédures stockées, les fonctions définies par l’utilisateur et les déclencheurs.

Bases de données Azure Cosmos DB

Dans Azure Cosmos DB, une base de données est similaire à un espace de noms. Une base de données est simplement un groupe de conteneurs. Le tableau suivant montre la façon dont une base de données est mappée à différentes entités d’API :

Entité Azure Cosmos DB API pour NoSQL API pour Apache Cassandra API pour MongoDB API pour Apache Gremlin API pour Table
Base de données Azure Cosmos DB Base de données Espace de clés Base de données Base de données Non applicable

Remarque

Avec les comptes d’API pour Table, les tables dans Azure Cosmos DB sont créées au niveau du compte pour garantir la compatibilité avec le service Stockage Table Azure.

Conteneurs Azure Cosmos DB

Un conteneur Azure Cosmos DB est l’endroit où les données sont stockées. Contrairement à la plupart des bases de données relationnelles, qui font l’objet d’un scale-up avec des machines virtuelles plus grandes, Azure Cosmos DB peut faire l’objet d’un scale-out.

Les données sont stockées sur un ou plusieurs serveurs au sein de partitions. Pour augmenter les partitions, augmentez le débit. À défaut, elles augmentent automatiquement avec l’augmentation du stockage. Cette relation fournit un débit et un stockage pratiquement illimités pour un conteneur.

Quand vous créez un conteneur, vous devez fournir une clé de partition. La clé de partition est une propriété que vous sélectionnez parmi vos éléments pour permettre à Azure Cosmos DB de distribuer efficacement les données entre les partitions. Azure Cosmos DB utilise la valeur de cette propriété pour router les données vers la partition appropriée à écrire, à mettre à jour ou à supprimer. Vous pouvez également utiliser la clé de partition dans la clause WHERE au sein des requêtes pour améliorer l’extraction de données.

Le mécanisme de stockage sous-jacent des données dans Azure Cosmos DB s’appelle une partition physique. Les partitions physiques peuvent avoir un débit allant jusqu’à 10 000 unités de requête par seconde, et peuvent stocker jusqu’à 50 Go de données. Azure Cosmos DB gère ce partitionnement sous forme de partition logique qui peut stocker jusqu’à 20 Go de données.

Les partitions logiques permettent au service d’offrir une plus grande élasticité et une meilleure gestion des données sur les partitions physiques sous-jacentes à mesure que vous ajoutez des partitions. Pour en savoir plus sur le partitionnement et les clés de partition, consultez Partitionnement et mise à l’échelle horizontale dans Azure Cosmos DB.

Lorsque vous créez un conteneur, vous configurez le débit avec l’un des modes suivants :

  • Débit dédié : Le débit sur un conteneur Azure Cosmos DB est exclusivement réservé au conteneur. Il existe deux types de débits dédiés : standard et avec mise à l’échelle automatique. Pour en savoir plus, consultez Approvisionner le débit standard (manuel) sur un conteneur Azure Cosmos DB.

  • Débit partagé : le débit est spécifié au niveau de la base de données, puis partagé avec 25 conteneurs au maximum au sein de la base de données. Le partage de débit exclut les conteneurs configurés avec leur propre débit dédié.

    Le débit partagé peut être une bonne option quand tous les conteneurs de la base de données ont des volumes de requêtes et des besoins en stockage similaires, ou quand vous n’êtes pas à la recherche de performances prévisibles sur les données. Pour en savoir plus, consultez Approvisionner le débit standard (manuel) sur une base de données Azure Cosmos DB.

Remarque

Vous ne pouvez pas passer d’un débit dédié à un débit partagé. Les conteneurs que vous avez créés dans une base de données à débit partagé ne peuvent pas être mis à jour pour l’obtention d’un débit dédié. Pour faire passer un conteneur du débit partagé au débit dédié, vous devez créer un conteneur, et copier les données dans celui-ci. La fonctionnalité de copie de conteneur d’Azure Cosmos DB peut faciliter ce processus.

Les conteneurs sont indépendants du schéma. Les éléments d’un conteneur peuvent avoir des schémas arbitraires ou des entités différentes, à condition qu’ils partagent la même clé de partition. Par exemple, un conteneur peut contenir un article ou un document comportant des informations de profil client ainsi qu’un ou plusieurs articles ou documents qui représentent toutes les commandes du client. Vous pouvez placer des informations similaires pour tous les clients dans le même conteneur.

Par défaut, toutes les données que vous ajoutez à un conteneur sont automatiquement indexées sans nécessiter d’indexation explicite. Vous pouvez personnaliser l’indexation d’un conteneur en configurant sa stratégie d’indexation.

Si vous souhaitez éviter d’affecter les performances, vous pouvez définir une durée de vie (TTL) pour les éléments sélectionnés d’un conteneur ou pour l’ensemble du conteneur afin de supprimer automatiquement ces éléments en arrière-plan avec le débit inutilisé. Toutefois, même si les données arrivées à expiration ne sont pas supprimées, elles n’apparaissent dans aucune opération de lecture. Pour en savoir plus, consultez Configurer la durée de vie dans Azure Cosmos DB.

Azure Cosmos DB fournit une fonctionnalité intégrée pour la capture des changements de données appelée flux de modification. Vous pouvez l’utiliser pour vous abonner à tous les changements apportés aux données dans votre conteneur.

Vous pouvez inscrire des procédures stockées, des déclencheurs, des fonctions définies par l’utilisateur et des procédures de fusion dans votre conteneur.

Chaque document d’un conteneur doit avoir une propriété id unique au sein de la valeur de propriété d’une clé logique pour ce conteneur. Vous pouvez utiliser cette combinaison de propriétés pour fournir une contrainte unique dans un conteneur, sans avoir à en définir une explicitement.

Vous pouvez également spécifier une contrainte de clé unique sur votre conteneur Azure Cosmos DB, qui utilise une ou plusieurs propriétés. Une contrainte de clé unique garantit l’unicité d’une ou de plusieurs valeurs par clé de partition logique. Si vous créez un conteneur à l’aide d’une stratégie de clé unique, vous ne pouvez pas créer d’éléments ou d’éléments mis à jour dont les valeurs dupliquent les valeurs spécifiées par la contrainte de clé unique.

Un conteneur est spécialisé dans les entités spécifiques à l’API, comme le montre le tableau suivant :

Entité Azure Cosmos DB API pour NoSQL API pour Cassandra API pour MongoDB API pour Gremlin API pour Table
Conteneur Azure Cosmos DB Conteneur Table de charge de travail Collection Graph Table de charge de travail

Remarque

Veillez à ne pas créer deux conteneurs ayant le même nom mais une casse différente. Certaines parties de la plateforme Azure ne respectent pas la casse. Ce genre de nommage peut entraîner une confusion ou une collision entre les données de diagnostic et les actions dans les conteneurs.

Propriétés d’un conteneur Azure Cosmos DB

Un conteneur Azure Cosmos DB comprend un ensemble de propriétés définies par le système. Selon l’API que vous utilisez, il est possible que certaines propriétés ne soient pas directement exposées. Le tableau suivant décrit les propriétés définies par le système :

Propriété définie par le système Générée par le système ou configurable par l’utilisateur Objectif API pour NoSQL API pour Cassandra API pour MongoDB API pour Gremlin API pour Table
_rid Généré par le système Identificateur unique d’un conteneur. Oui No Non Non Non
_etag Généré par le système Étiquette d’entité utilisée pour le contrôle d’accès concurrentiel optimiste. Oui No Non Non Non
_ts Généré par le système Dernière mise à jour de l’horodatage du conteneur. Oui No Non Non Non
_self Généré par le système URI adressable du conteneur. Oui No Non Non Non
id Configurable par l’utilisateur Nom du conteneur. Oui Oui Oui Oui Oui
indexingPolicy Configurable par l’utilisateur Stratégie de génération de l’index du conteneur. Oui No Oui Oui Oui
TimeToLive Configurable par l’utilisateur Suppression automatique d’un élément d’un conteneur après une période définie. Pour plus d’informations, consultez Durée de vie. Oui No Non Non Oui
changeFeedPolicy Configurable par l’utilisateur Stratégie de lecture des changements apportés aux éléments d’un conteneur. Pour plus d’informations, consultez Flux de modification. Oui No Non Non Oui
uniqueKeyPolicy Configurable par l’utilisateur Stratégie permettant de garantir l’unicité d’une ou de plusieurs valeurs dans une partition logique. Pour plus d’informations, consultez Contraintes de clé unique. Oui No Non Non Oui
AnalyticalTimeToLive Configurable par l’utilisateur Suppression automatique d’un élément d’un conteneur après une période définie, dans le contexte d’un magasin analytique. Pour plus d’informations, consultez Store analytique. Oui No Oui No Non

Éléments Azure Cosmos DB

Selon l’API que vous utilisez, les entités de données individuelles peuvent être représentées de diverses façons :

Entité Azure Cosmos DB API pour NoSQL API pour Cassandra API pour MongoDB API pour Gremlin API pour Table
Élément Azure Cosmos DB Élément Ligne Document Nœud ou arête Élément

Propriétés d’un élément

Chaque élément Azure Cosmos DB comprend des propriétés définies par le système. Selon l’API que vous utilisez, il est possible que certaines d’entre elles ne soient pas directement exposées.

Propriété définie par le système Générée par le système ou définie par l’utilisateur Objectif API pour NoSQL API pour Cassandra API DB pour MongoDB API pour Gremlin API pour Table
_rid Généré par le système Identificateur unique de l’élément Oui No Non Non Non
_etag Généré par le système Étiquette d’entité utilisée pour le contrôle de l’accès concurrentiel optimiste Oui No Non Non Non
_ts Généré par le système Horodatage de la dernière mise à jour de l’élément Oui No Non Non Non
_self Généré par le système URI adressable de l’élément Oui No Non Non Non
id Vous pouvez soit utiliser Nom unique défini par l’utilisateur dans une partition logique Oui Oui Oui Oui Oui
Propriétés arbitraires définies par l’utilisateur Défini par l’utilisateur Propriétés définies par l’utilisateur conformément à la représentation native de l’API (JSON, BSON et CQL notamment) Oui Oui Oui Oui Oui

Notes

L’unicité de la propriété id est appliqué dans chaque partition logique. Plusieurs documents peuvent avoir la même valeur de propriété id avec différentes valeurs de clé de partition.

Actions possibles sur les éléments

Les éléments Azure Cosmos DB prennent en charge les opérations suivantes. Vous pouvez utiliser n’importe laquelle des API Azure Cosmos DB pour effectuer ces opérations.

Opération API pour NoSQL API pour Cassandra API pour MongoDB API pour Gremlin API pour Table
Insérer, remplacer, supprimer, faire un upsert, lire Oui Oui Oui Oui Oui