J'ai créé une collection de base de données Cosmos avec la clé de partition. Comme il s’agit d’un environnement de développement, j’ai ramené le débit à 1000. Maintenant, je reçois l’erreur ci-dessous.
Message:
"Errors": ["La clé de partition a atteint la taille maximale de 10 Go"]
Les conteneurs Azure Cosmos DB peuvent être créés fixes ou illimités. Les conteneurs de taille fixe ont une limite maximale de 10 Go et un débit de 10 000 RU/s. Pour créer un conteneur de manière illimitée, vous devez spécifier un débit minimum de 2500 RU/s.
Maintenant, j'ai augmenté le débit à 2500. Mais je reçois toujours la même erreur.
J'ai envoyé un courrier électronique à Aravind Krishna, ingénieur dans l'équipe Azure Cosmos DB, pour lui demander des éclaircissements sur ce point. Voici un résumé de sa réponse:
Dans Cosmos DB, il existe des partitions physiques et logiques. Dans une collection, tous les documents qui partagent la même valeur pour la clé de partition vivront dans la même partition logique. Une ou plusieurs partitions logiques occupent une partition physique. En tant que développeurs, le partitionnement physique n'est pas pertinent. nous ne contrôlons que ce qui appartient à une partition logique.
Que la collection soit fixe (10 Go) ou illimitée, la limite de 10 Go s’applique à une partition logique. Période.
Donc, Sarva, vous devrez repenser votre clé de partition ou implémenter des journaux de roulement pour que les données de votre partition de journal de débogage ne dépassent pas la limite de partition de 10 Go.
La raison pour laquelle vous obtenez cette erreur est que même si unlimited collection (a.k.a. partitioned collection)
n'a pas de restriction de taille, contrairement à une partition de cette collection, qui fait actuellement 10 Go. Puisque vous avez atteint cette limite pour votre partition, vous obtenez cette erreur. De cette link
(Question 6):
Il est important de choisir une propriété de clé de partition portant un numéro de valeurs distinctes et vous permet de répartir votre charge de travail de manière égale à travers ces valeurs. En tant qu'artéfact naturel du partitionnement, les demandes impliquant la même clé de partition sont limitées par le débit maximal d'une seule partition. En outre, la taille de stockage des documents appartenant à la même clé de partition est limité à 10 Go. Un idéal La clé de partition est une clé qui apparaît fréquemment sous forme de filtre dans votre fichier demande et a une cardinalité suffisante pour que votre solution soit évolutif.
La seule solution à laquelle je pouvais penser est de recréer la collection et de choisir une clé de partition dont vous savez qu'elle ne dépassera pas cette limite de 10 Go. Vous devrez également transférer les données de votre ancienne collection à votre nouvelle collection.
Vous pouvez trouver ce message utile pour choisir une clé de partition pour votre collection: https://docs.Microsoft.com/en-us/Azure/cosmos-db/partition-data#design-for-partitioning .
De plus, selon ce blog post
, le nombre minimal de RU/s pour une collection illimitée est maintenant de 1000 au lieu de 2500.
Les données dans CosmosDB sont stockées dans des collections qui sont partitionnées à l'aide d'une clé de partition choisie. Chaque partition est limitée à 10 Go de données.
Le nombre de partitions illimitées est illimité, mais une collection fixe vous limite à une seule partition. C'est la seule différence. C'est pourquoi une collection fixe n'a pas besoin d'un ensemble de clés de partition (car tout se trouve sur une seule partition) et pourquoi les limites d'une collection fixe et d'une partition ont la même taille de 10 Go.
La manière dont ces partitions sont réellement stockées sur les serveurs CosmosDB est une infrastructure sur laquelle vous n'avez pas le contrôle, et elle est gérée automatiquement pour la réplication et les performances. Vous pouvez stocker autant de données que vous le souhaitez dans une collection, à condition de pouvoir les fractionner entre suffisamment de partitions. Il est préférable d’avoir plus de partitions que d’autres et même de sélectionner le champ ID
(pour placer un seul enregistrement dans chaque partition) fonctionnera correctement. CosmosDB peut automatiquement regrouper des partitions pour remplir un serveur, mais il ne peut pas séparer une partition. Soyez donc prudent dans votre conception.