90 votes

Azure Cosmos DB - Comprendre la clé de partition

Je suis la mise en place de notre première Azure Cosmos DB - je importer dans le premier recueil, les données d'une table dans l'un de nos bases de données SQL Server. Dans la mise en place de la collection, je vais avoir de la difficulté à comprendre le sens et les exigences autour de la clé de partition, dont j'ai particulièrement ont pour nom lors de la configuration de cette première collection.

J'ai lu la documentation ici: (https://docs.microsoft.com/en-us/azure/cosmos-db/documentdb-partition-data) et je suis toujours pas sûr de la façon de procéder avec la convention de nommage de cette clé de partition.

Quelqu'un peut-il m'aider à comprendre comment je dois penser à nommer cette clé de partition? Voir la capture d'écran ci-dessous pour le domaine que je suis en train de remplir. Partition Key Name

Dans le cas où il permet, la table, je suis l'importation se compose de 7 colonnes, y compris une clé primaire unique, une colonne de texte non structuré, une colonne d'URL et de plusieurs autres secondaires identifiants pour que l'enregistrement de l'URL. Vous ne savez pas si cette information a une incidence sur la façon dont je devrais nom de ma Clé de Partition.

EDIT: j'ai ajouté une capture d'écran de plusieurs enregistrements de la table à partir de laquelle je suis à l'importation, conformément à la demande de @Porschiey.

enter image description here

66voto

Porschiey Points 224

Honnêtement, la vidéo ici* a été d'une aide MAJEURE à la compréhension de partitionnement dans la CosmosDb.

Mais, en bref: La PartitionKey est une propriété qui existent sur chaque objet unique qui est le mieux utilisé pour grouper des objets ensemble.

De bons exemples incluent l'Emplacement (comme la Ville), l'Id du Client, de l'Équipe, et plus encore. Naturellement, il sauvagement dépend de votre solution, alors peut-être que si vous étiez à ce poste votre objet semble que nous pourrions recommander une bonne clé de partition.

EDIT: faut noter que PartitionKey n'est pas nécessaire pour les collections en vertu de 10GO. (merci David Makogon)


* La vidéo l'habitude de vivre sur cette MME docs page intitulée "le Partitionnement et la mise à l'échelle horizontale dans Azure Cosmos DB", mais il a depuis été supprimé. Un lien direct a été fourni ci-dessus.

14voto

Udit Gandhi Points 51

Clé de Partition agit comme une partition logique.

Maintenant, qu'est ce qu'une partition logique, vous pouvez demander? Une partition logique peut varier en fonction de vos besoins; supposons que vous disposez de données qui peuvent être classés sur la base de vos clients, pour ce client "Id" agira comme une partition logique et les informations pour les utilisateurs seront placés en fonction de leur Id de client.

Quels sont les effets sur la requête?

Tout en interrogeant vous mettez votre clé de partition que les options d'alimentation et de ne pas l'inclure dans votre filtre.

e.g: Si votre requête a été

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

Il sera Désormais

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

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

9voto

Animesh Jain Points 175

CosmosDB peut être utilisé pour sauvegarder une limite de données. Comment il le fait dans le back-end est l'utilisation de la partition de la clé. Est-ce la même que la clé Primaire? - PAS de

Clé primaire: identifie de manière Unique les données Clé de Partition contribue à la fragmentation des données(Par exemple une partition pour la ville de New York, quand la ville est une clé de partition).

Les Partitions ont une limite de 10 GO et mieux nous répartir les données sur les partitions, le plus que nous pouvons l'utiliser. Bien qu'il finira par besoin de plus de connexions pour obtenir des données à partir de toutes les partitions. Exemple: l'Obtention de données de même partition dans une requête sera toujours plus rapide que d'obtenir des données à partir de plusieurs partitions.

4voto

Thiago Custodio Points 6516

La clé de partition est utilisée pour le partage, elle agit comme une partition logique pour vos données et fournit à Cosmos DB une frontière naturelle pour la distribution des données entre les partitions.

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

3voto

JakeJ Points 553

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 sur cette clé (donc tombent dans cette partition) soient sous cette limite de 10 Go.

J'y pense aussi en ce moment - alors la clé de partition devrait-elle être une plage de dates d'un certain type? Dans ce cas, cela dépendrait vraiment de la quantité de données stockées dans une période de temps.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X