web-dev-qa-db-fra.com

Comment fonctionne la clé de partition DynamoDB

Im essayant de comprendre comment la partition créée pour les tables DynamoDB.

Selon cela blog , "Tous les éléments avec la même clé de partition sont stockés ensemble", donc si j'ai une table avec un ID utilisateur de 1 à 1000, cela signifie-t-il que j'aurai 1000 partitions? Ou jusqu'à la "fonction de hachage interne", mais comment savoir combien de partitions il y aura?

Il a ensuite suggéré d'utiliser un suffixe aléatoire de 1 à 10 pour répartir uniformément les données pour chaque partition, mais comment sait-il qu'il interrogera 10 fois un numéro de facture donné? est-ce seulement lorsque vous avez 10 partitions? mais dans ce cas, vous pourriez avoir des milliers de numéros de facture, cela signifie que le même nombre de partitions sera créé et une requête effectuée pour interroger un numéro de facture.

13
user1883793

Lorsqu'une table Amazon DynamoDB est créée, vous pouvez spécifier le débit souhaité en lectures par seconde et en écritures par seconde . La table sera ensuite provisionnée sur plusieurs serveurs (partitions) suffisants pour fournir le débit demandé.

Vous n'avez pas de visibilité sur le nombre de partitions créées - il est entièrement géré par DynamoDB. Des partitions supplémentaires seront créées à mesure que la quantité de données augmente ou lorsque le débit provisionné augmente.

Supposons que vous ayez demandé 1 000 lectures par seconde et que les données aient été partitionnées en interne sur 10 serveurs (10 partitions). Chaque partition fournira 100 lectures par seconde . Si toutes les demandes de lecture concernent la même clé de partition, le débit sera limité à 100 lectures par seconde. Si les demandes sont réparties sur une plage de valeurs différentes, le débit peut être le plein 1000 lectures par seconde .

Si de nombreuses requêtes sont effectuées pour la même clé de partition, cela peut entraîner une partition chaude qui limite le débit total disponible.

Considérez-le comme une banque avec des lignes devant les fenêtres des guichets . Si tout le monde s'aligne sur un guichet, moins de clients peuvent être servis. Il est plus efficace de répartir les clients sur de nombreuses fenêtres de guichets différents. Une bonne clé de partition pour la distribution des clients peut être le numéro de client, car elle est différente pour chaque client. Une mauvaise clé de partition pourrait être son code postal car ils vivent tous dans la même zone à proximité de la banque.

La règle simple est que vous devez choisir une clé de partition qui a une plage de valeurs différentes.

Voir: Partitions et distribution de données

24
John Rotenstein

Selon le blog AWS DynamoDB: Choix de la bonne clé de partition DynamoDB

Le choix de la bonne clé de partition DynamoDB est une étape importante dans la conception et la construction d'applications évolutives et fiables au-dessus de DynamoDB.

Qu'est-ce qu'une clé de partition?

DynamoDB prend en charge deux types de clés primaires:

Clé de partition : Également connue sous le nom de clé de hachage, la clé de partition est composée d'un seul attribut. Les attributs de DynamoDB sont similaires à bien des égards aux champs ou colonnes d'autres systèmes de base de données.

Clé de partition et clé de tri : Appelé clé primaire composite ou clé de plage de hachage, ce type de clé est composé de deux attributs. Le premier attribut est la clé de partition et le deuxième attribut est la clé de tri. Voici un exemple:

enter image description here

Pourquoi ai-je besoin d'une clé de partition?

DynamoDB stocke les données sous forme de groupes d'attributs, appelés éléments. Les éléments sont similaires aux lignes ou aux enregistrements d'autres systèmes de base de données. DynamoDB stocke et récupère chaque élément en fonction de la valeur de clé primaire qui doit être unique. Les éléments sont répartis sur des unités de stockage de 10 Go, appelées partitions (stockage physique interne à DynamoDB). Chaque table possède une ou plusieurs partitions, comme illustré dans la figure 2. Pour plus d'informations, consultez la section Comprendre le comportement des partitions dans le Guide du développeur DynamoDB.

DynamoDB utilise la valeur de la clé de partition comme entrée pour une fonction de hachage interne. La sortie de la fonction de hachage détermine la partition dans laquelle l'élément sera stocké. L'emplacement de chaque élément est déterminé par la valeur de hachage de sa clé de partition.

Tous les éléments avec la même clé de partition sont stockés ensemble et, pour les clés de partition composites, sont classés par valeur de clé de tri. DynamoDB divisera les partitions par clé de tri si la taille de la collection dépasse 10 Go.

enter image description here

Recommandations pour les clés de partition

Utilisez des attributs à cardinalité élevée. Ce sont des attributs qui ont des valeurs distinctes pour chaque élément, comme l'identifiant de l'e-mail, l'employé_no, l'ID client, l'ID session, l'ordre, etc. sur.

Utilisez des attributs composites. Essayez de combiner plus d'un attribut pour former une clé unique, si cela correspond à votre modèle d'accès. Par exemple, considérez une table de commandes avec customerid + productid + countrycode comme clé de partition et order_date comme clé de tri.

Mettez en cache les éléments populaires en cas de trafic de lecture élevé. Le cache agit comme un filtre passe-bas, empêchant les lectures d'éléments inhabituellement populaires de saturer les partitions. Par exemple, considérons un tableau contenant des informations sur les offres pour les produits. Certaines offres devraient être plus populaires que d'autres lors d'événements de vente majeurs comme le Black Friday ou le Cyber ​​Monday.

Ajoutez des nombres/chiffres aléatoires à partir d'une plage prédéterminée pour les cas d'utilisation lourds en écriture . Si vous prévoyez un grand volume d'écritures pour une clé de partition, utilisez un préfixe ou suffixe supplémentaire (un nombre fixe de la plage prédéterminée, disons 1-10) et ajoutez-le à la clé de partition. Par exemple, considérons un tableau des transactions de facturation. Une seule facture peut contenir des milliers de transactions par client.

En savoir plus @ Choisir la bonne clé de partition DynamoDB

13
LuFFy