Flux de modification dans Azure Cosmos DB

S’APPLIQUE À : NoSQL MongoDB Cassandra Gremlin

Le flux de modification dans Azure Cosmos DB est un enregistrement persistant des modifications apportées à un conteneur dans l’ordre dans lequel elles se produisent. Dans Azure Cosmos DB, le flux de modification écoute les modifications apportées à un conteneur Azure Cosmos DB. Il renvoie ensuite la liste chronologique de documents qui ont été modifiés, dans l’ordre dans lequel ils ont été modifiés. Les modifications conservées peuvent être traitées de manière asynchrone et incrémentielle, puis réparties sur un ou plusieurs consommateurs pour un traitement en parallèle.

Apprenez-en davantage sur les modèles de conception de flux de modification.

API et SDK clients pris en charge

La fonctionnalité de flux de modification est prise en charge dans les SDK Azure Cosmos DB suivants.

Pilotes clients NoSQL Apache Cassandra MongoDB Apache Gremlin Table PostgreSQL
.NET Icône indiquant que cette fonctionnalité est prise en charge dans le SDK .NET pour l’API pour NoSQL. Icône indiquant que cette fonctionnalité est prise en charge dans le SDK .NET pour l’API pour Apache Cassandra. Icône indiquant que cette fonctionnalité est prise en charge dans le SDK .NET pour l’API pour MongoDB. Icône indiquant que cette fonctionnalité est prise en charge dans le SDK .NET pour l’API pour Apache Gremlin. Icône indiquant que cette fonctionnalité n’est pas prise en charge dans le SDK .NET pour l’API pour Table. Icône indiquant que cette fonctionnalité n’est pas prise en charge dans le SDK .NET pour l’API pour PostgreSQL.
Java Icône indiquant que cette fonctionnalité est prise en charge dans le SDK Java pour l’API pour NoSQL. Icône indiquant que cette fonctionnalité est prise en charge dans le SDK Java pour l’API pour Apache Cassandra. Icône indiquant que cette fonctionnalité est prise en charge dans le SDK Java pour l’API pour MongoDB. Icône indiquant que cette fonctionnalité est prise en charge dans le SDK Java pour l’API pour Apache Gremlin. Icône indiquant que cette fonctionnalité n’est pas prise en charge dans le SDK Java pour l’API pour Table. Icône indiquant que cette fonctionnalité n’est pas prise en charge dans le SDK Java pour l’API pour PostgreSQL.
Python Icône indiquant que cette fonctionnalité est prise en charge dans le SDK Python pour l’API pour NoSQL. Icône indiquant que cette fonctionnalité est prise en charge dans le SDK Python pour l’API pour Apache Cassandra. Icône indiquant que cette fonctionnalité est prise en charge dans le SDK Python pour l’API pour MongoDB. Icône indiquant que cette fonctionnalité est prise en charge dans le SDK Python pour l’API pour Apache Gremlin. Icône indiquant que cette fonctionnalité n’est pas prise en charge dans le SDK Python pour l’API pour Table. Icône indiquant que cette fonctionnalité n’est pas prise en charge dans le SDK Python pour l’API pour PostgreSQL.
Node/JavaScript Icône indiquant que cette fonctionnalité est prise en charge dans le SDK JavaScript pour l’API pour NoSQL. Icône indiquant que cette fonctionnalité est prise en charge dans le SDK JavaScript pour l’API pour Apache Cassandra. Icône indiquant que cette fonctionnalité est prise en charge dans le SDK JavaScript pour l’API pour MongoDB. Icône indiquant que cette fonctionnalité est prise en charge dans le SDK JavaScript pour l’API pour Apache Gremlin. Icône indiquant que cette fonctionnalité n’est pas prise en charge dans le SDK JavaScript pour l’API pour Table. Icône indiquant que cette fonctionnalité n’est pas prise en charge dans le SDK JavaScript pour l’API pour PostgreSQL.

Utilisation du flux de modification

Vous pouvez utiliser le flux de modification à l’aide des options suivantes :

Le flux de modification est disponible pour les plages de clés de partition d’un conteneur Azure Cosmos DB. Cela lui permet d’être distribué vers un ou plusieurs consommateurs pour un traitement parallèle, comme montré sur l’image ci-dessous.

Traitement distribué du flux de modification d’Azure Cosmos DB

Notes

Les plages de clés de partition sont mappées à des partitions physiques lors de l’utilisation du processeur de flux de modification et FeedRanges lors de l’utilisation du modèle d’extraction.

Fonctionnalités du flux de modification

  • Le flux de modification est activé par défaut pour tous les comptes Azure Cosmos DB.

  • Il existe plusieurs modes de flux de modification, dont certains nécessitent une configuration supplémentaire pour l’activer.

  • Vous pouvez utiliser votre débit provisionné pour lire le contenu du flux de modification, comme toute autre opération effectuée dans Azure Cosmos DB, dans l’une des régions associées à votre compte Azure Cosmos DB.

  • Le flux de modification inclut les opérations d’insertion et de mise à jour apportées aux éléments du conteneur. Si vous utilisez toutes les versions et le mode suppressions (préversion), vous obtenez également des modifications des opérations de suppression et des expirations de TTL (durée de vie).

  • Chaque modification n’apparaît qu’une seule fois dans le flux de modification. En outre, les clients doivent gérer leur logique de points de contrôle. Si vous souhaitez éviter la gestion complexe des points de contrôle, le processeur du flux de modification fournit des points de contrôle automatiques ainsi qu’une sémantique de type « au moins une fois ». Pour plus d’informations, consultez l’article Utilisation du flux de modification avec le processeur de flux de modification.

  • Les modifications sont disponibles en parallèle pour les plages de clés de partition d’un conteneur Azure Cosmos DB. Cette fonctionnalité permet à plusieurs consommateurs de traiter en parallèle les modifications de grands conteneurs.

  • Les applications peuvent demander plusieurs flux de modification simultanément pour un même conteneur.

  • Le point de départ du flux de modification peut être personnalisé et différentes options sont disponibles pour chaque mode.

Ordre de tri des éléments du flux de modification

Les éléments du flux de modification figurent dans l’ordre où ils ont été modifiés. Cet ordre de tri est garanti par clé de partition, et il n’y a pas d’ordre garanti entre les valeurs de clé de partition.

Remarque

Pour les comptes à écritures multirégions, deux timestamps sont enregistrés :

  • Heure de l’époque du serveur à laquelle l’enregistrement a été écrit dans la région locale. L’enregistrement se présente comme ceci : _ts.
  • Heure de l’époque à laquelle l’absence de conflit a été confirmée ou à laquelle le conflit a été résolu dans la région hub pour cet enregistrement. L’enregistrement se présente comme ceci : crts.

Les éléments du flux de modification arrivent dans l’ordre enregistré par crts.

Flux de modification dans les comptes Azure Cosmos DB multirégions

Dans un compte Azure Cosmos DB à plusieurs régions, les modifications d’une région sont disponibles dans toutes les régions. Si une région d’écriture bascule, le flux de modification continue de fonctionner durant l’opération de basculement manuel et demeure contigu. Pour les comptes avec plusieurs régions d’écriture, il n’existe aucune garantie quant au moment où les modifications seront disponibles. Les modifications entrantes du même document peuvent être supprimées en mode de version la plus récente s’il y a eu une modification plus récente dans une autre région, et toutes les modifications seront capturées dans toutes les versions et en mode suppressions.

Modifier les modes de flux

Il existe deux modes de flux de modification disponibles : le mode dernière version et le mode toutes les versions et suppressions. Le mode de lecture du flux de modification détermine les modifications d’opérations capturées et les métadonnées disponibles pour chaque modification. Il est possible d’utiliser le flux de modification dans différents modes dans plusieurs applications pour le même conteneur Azure Cosmos DB.

Mode Dernière version

En mode de flux de modification de version la plus récente, vous voyez la dernière modification d’une insertion ou d’une mise à jour pour tous les éléments du flux, et le flux est disponible pendant toute la durée de vie du conteneur. Rien n’indique si une modification donnée provient d’une opération d’insertion ou de mise à jour et si les suppressions ne sont pas capturées. Les modifications peuvent être lues à partir de n’importe quel point dans le temps jusqu’à l’origine de votre conteneur. Néanmoins, si un élément est supprimé, il est retiré du flux de modification. Pour en savoir plus, consultez l’article sur le mode de flux de modification de version le plus récent.

Toutes les versions et le mode suppressions (préversion)

Toutes les versions et le mode suppression vous permettent de voir toutes les modifications apportées aux éléments des créations, mises à jour et suppressions. Vous obtenez un enregistrement de chaque modification apportée aux éléments dans l’ordre dans lequel elles se sont produites, y compris les modifications intermédiaires apportées à un élément entre les lectures du flux de modification. Pour lire à partir du flux de modifications dans toutes les versions et en mode suppression, vous devez disposer de sauvegardes continues configurées pour votre compte Azure Cosmos DB, ce qui crée toutes les versions d’Azure Cosmos DBs et supprime le flux de modification. Dans ce mode, vous pouvez uniquement lire les modifications qui se sont produites au cours de la période de sauvegarde continue configurée pour le compte. Pour plus d’informations, consultez l’article Toutes les versions et suppressions du mode de flux de modification, notamment sur la façon de s’inscrire à la préversion.

Flux de modification dans les API pour Cassandra et MongoDB

La fonctionnalité de flux de modification apparaît comme un flux de modification dans l’API pour MongoDB et sous la forme d’une requête avec prédicat dans l’API pour Cassandra. Pour en savoir plus sur les détails d’implémentation de l’API pour MongoDB, consultez Flux de modification dans l’API Azure Cosmos DB for MongoDB.

Native Apache Cassandra propose la capture des changements de données (CDC), un mécanisme de marquage de tables spécifiques à des fins d’archivage et de rejet des écritures dans ces tables une fois que la taille sur disque configurable du journal CDC est atteinte. La fonctionnalité de flux de modification dans Azure Cosmos DB for Apache Cassandra améliore la capacité à interroger les modifications avec un prédicat par le biais du langage CQL. Pour en savoir plus sur les détails d’implémentation, consultez Flux de modification dans Azure Cosmos DB for Apache Cassandra.

Mesure de la consommation d’unités de requête de flux de modification

Le flux de modification est disponible dans chaque conteneur, qu’il soit utilisé ou non. Le seul coût du flux de modification est le débit provisionné du conteneur de bail et les RU (unités de requête) pour chaque requête. Utilisez Azure Monitor pour mesurer la consommation d’unité de requête (RU) du flux de modification. Pour plus d’informations, consultez Surveiller l’utilisation du débit ou des unités de requête dans Azure Cosmos DB.

Étapes suivantes

Pour plus d’informations sur le flux de modification, consultez les articles suivants :