web-dev-qa-db-fra.com

Azure Cosmos DB - Comprendre la clé de partition

Je configure actuellement notre première base de données Azure Cosmos. J'importerai dans la première collection les données d'une table de l'une de nos bases de données SQL Server. Lors de la configuration de la collection, j'ai du mal à comprendre le sens et les exigences de la clé de partition, que je dois nommer spécifiquement lors de la configuration de cette collection initiale.

J'ai lu la documentation ici: ( https://docs.Microsoft.com/en-us/Azure/cosmos-db/documentdb-partition-data ) et je ne sais toujours pas comment procéder. la convention de nommage de cette clé de partition.

Est-ce que quelqu'un peut m'aider à comprendre comment je devrais penser à nommer cette clé de partition? Voir la capture d'écran ci-dessous pour le champ que j'essaie de remplir . Partition Key Name

Si cela peut vous aider, le tableau que j'importe est composé de 7 colonnes, comprenant une clé primaire unique, une colonne de texte non structuré, une colonne d'URL et plusieurs autres identificateurs secondaires pour l'URL de cet enregistrement. Je ne sais pas si une de ces informations a une incidence sur la façon dont je devrais nommer ma clé de partition.

EDIT: J'ai ajouté une capture d'écran de plusieurs enregistrements de la table à partir de laquelle j'importe, à la demande de @Porschiey.

enter image description here

31
Stpete111

Honnêtement, le vidéo ici * était une aide majeure à la compréhension du partitionnement dans CosmosDb.

Mais en un mot: La PartitionKey est une propriété qui existera sur chaque objet le mieux utilisé pour regrouper des objets similaires.

De bons exemples incluent l'emplacement (comme la ville), l'identifiant client, l'équipe et plus encore. Naturellement, cela dépend énormément de votre solution. alors peut-être que si vous postez à quoi ressemble votre objet, nous pourrions vous recommander une bonne clé de partition.

EDIT: Notez que PartitionKey n'est pas nécessaire pour les collections de moins de 10 Go. (merci David Makogon)


* La vidéo habitait cette page MS Docs intitulée "Partitionnement et mise à l'échelle horizontale dans Azure Cosmos DB", mais a depuis été supprimée. Un lien direct a été fourni ci-dessus.

21
Porschiey

CosmosDB peut être utilisé pour stocker toute limite de données. Comment cela se passe dans le back-end utilise la clé de partition. Est-ce la même chose que la clé primaire? - NON

Clé primaire: identifie de manière unique les données. La clé de partition aide au fractionnement des données (par exemple, une partition pour la ville de New York lorsque la ville est une clé de partition).

Les partitions ont une limite de 10 Go. Plus nous répartissons les données sur plusieurs partitions, plus nous pouvons les utiliser. Bien qu'il faudra éventuellement plus de connexions pour obtenir des données de toutes les partitions. Exemple: obtenir des données d'une même partition dans une requête sera toujours plus rapide que d'obtenir des données de plusieurs partitions.

6
Animesh Jain

La clé de partition agit comme une partition logique.

Maintenant, quelle est une partition logique, vous pouvez demander? Une partition logique peut varier selon vos besoins. Supposons que vous disposiez de données pouvant être catégorisées sur la base de vos clients. Pour ce client, "l'identifiant" agira comme une partition logique et les informations des utilisateurs seront placées en fonction de leur identifiant client.

Quel effet cela a-t-il sur la requête?

Lors de l'interrogation, vous définissez votre clé de partition comme option de fil et ne l'incluez pas dans votre filtre.

par exemple: si votre requête était

SELECT * FROM T WHERE T.CustomerId= 'CustomerId';

Ce sera maintenant

var options = new FeedOptions{ PartitionKey = new PartitionKey(CustomerId)};

var query = _client.CreateDocumentQuery(CollectionUri,$"SELECT * FROM T",options).AsDocumentQuery(); 
5
Udit Gandhi

Chaque partition d’une table peut stocker jusqu’à 10 Go (et une seule table peut stocker autant de types de schéma de document que vous le souhaitez). Vous devez choisir votre clé de partition de telle sorte que tous les documents stockés avec cette clé (tombent dans cette partition) soient sous cette limite de 10 Go.

Je pense à cela aussi en ce moment - la clé de partition devrait-elle être une plage de dates? Dans ce cas, cela dépend vraiment de la quantité de données stockées sur une période donnée.

3
JakeJ

La clé de partition est utilisée pour le sharding, elle agit comme une partition logique pour vos données et fournit à Cosmos DB une limite naturelle pour la distribution des données sur plusieurs partitions.

Vous pouvez en savoir plus à ce sujet ici: https://docs.Microsoft.com/en-us/Azure/cosmos-db/partition-data

3
Thiago Custodio