Modifier

Partager via


Forum aux questions sur les clés de partition hiérarchiques dans Azure Cosmos DB

S’APPLIQUE À : NoSQL MongoDB Cassandra Gremlin Table

Les clés de partition hiérarchiques, ou sous-partitionnement, vous permettent de configurer jusqu’à trois niveaux de hiérarchie pour vos clés de partition afin d’optimiser la distribution des données et de permettre une échelle plus élevée. Cet article répond aux questions fréquemment posées sur les clés de partition hiérarchiques Azure Cosmos DB.

Puis-je ajouter des clés de partition hiérarchiques à des conteneurs existants ?

L’ajout de clés de partition hiérarchiques à des conteneurs existants n’est pas pris en charge. Toutefois, vous pouvez créer un conteneur avec la clé de partition hiérarchique souhaitée et exécuter un travail de copie de conteneur pour copier les données de votre conteneur existant vers le nouveau. Pour plus d’informations sur la façon de copier des données, consultez travaux de copie de conteneur.

Existe-t-il une limite de stockage en termes de taille de clé de partition logique ?

Oui. Comme dans Azure Cosmos DB, la taille de la partition logique est toujours limitée à 20 Go. Toutefois, avec les clés de partition hiérarchiques, la partition logique correspond désormais au chemin de clé de partition entier. Par exemple, si vous avez partitionné par TenantId -> UserId, un exemple de partition logique sera Contoso_Alice. L’utilisation du sous-partitionnement vous permet de disposer de 20 Go de données où la valeur de clé de partition est Contoso_Alice. Le volume de stockage autorisé pour les données dans « Contoso » est effectivement de 20 Go * nombre d’UserIds uniques pour le locataire « Contoso ».

Des modifications ont-elles été apportées au stockage et aux limites de RU/s sur les partitions physiques ?

Non. Comme dans Azure Cosmos DB, une partition physique peut contenir 50 Go de stockage et servir jusqu’à 10 000 RU/s. Toutefois, avec les clés de partition hiérarchiques, si les données d’un préfixe de clé de partition spécifique (par exemple, TenantId) se trouvent dans plusieurs partitions physiques, le sous-partitionnement signifie que le nombre total de RU/s accessibles pour un seul TenantId peut dépasser 10 000 RU/s.

Que se passe-t-il si j’interroge et spécifie uniquement une clé de partition au « milieu» du chemin d’accès ?

Votre requête est une requête sur plusieurs partitions. Par exemple, si vous partitionnez par TenantId -> UserId et fournissez uniquement l’UserId dans la requête, cette dernière s’étend à toutes les partitions physiques.

Pour une requête routée de manière efficace à l’aide de TenantId -> UserId, deux options sont possibles :

  • Indiquez le TenantId. Les requêtes accèdent à toutes les partitions physiques contenant les données TenantId.
  • Indiquez le TenantId et l’UserId. Les requêtes accèdent à la partition physique unique contenant le TenantId et l’UserId spécifique.

Dois-je créer une propriété dans mes documents pour utiliser cette fonctionnalité ?

Non. Spécifiez la hiérarchie des chemins d’accès de clé de partition que vous souhaitez utiliser lors de la création du conteneur. Par exemple, si vous partitionnez par TenantId -> UserId, vous n’êtes pas tenu de créer une nouvelle propriété avec ces valeurs concaténées. Vérifiez que chaque document dispose d’un TenantId et d’un UserId de propriété. Pour plus d'informations, consultez les exemples de code de sous-partitionnement.

J’ai créé une hiérarchie de clés ayant peu de cardinalité. Que dois-je faire ?

Vous pouvez être dans un scénario où votre charge de travail atteint seulement quelques partitions physiques de toutes vos partitions. Ce scénario peut signifier qu’au moins un des niveaux de votre clé de partition hiérarchique a une faible cardinalité. Pour résoudre les problèmes de scénario, nous vous recommandons toujours de recréer votre clé de partition hiérarchique. Vous pouvez utiliser DTS pour modifier votre clé et copier les données de votre conteneur dans votre nouveau conteneur. Si cette étape n’est pas possible, nous vous suggérons deux solutions de contournement pour veiller à obtenir une distribution uniforme de vos données

  • Approche 1 :
  1. Vous pouvez créer un conteneur avec moins de 10 000 unités de requête (RU) pour vous assurer de n’avoir qu’une seule partition physique.
  2. Ingérer 5 Go de données environ pour veiller à n’avoir aucun fractionnement de partition.
  3. Effectuez un scale-up vers les unités de requête souhaitées, continuez à ingérer des données afin que Azure Cosmos DB garantisse une répartition uniforme de vos partitions physiques.
  • Approche 2 :
  1. Vous pouvez augmenter votre offre totale pour la passer à un nombre plus élevé d’unités de requête et ingérer toutes vos données.
  2. Ensuite, effectuez une fusion de partitions pour vérifier que les partitions de votre charge de travail ne sont pas fragmentées et qu’elles ont une distribution uniforme
  3. Une fois la fusion terminée, effectuez un scale-down jusqu’au nombre de RU d’origine souhaité.

Pour mieux contrôler le débit de chaque partition, vous pouvez également utiliser la redistribution du débit pour veiller à ce que les partitions utilisées par votre charge de travail disposent des unités de requête suffisantes pour vos requêtes futures.

Étapes suivantes