Distribution efficace de l'activité d'écriture pendant le chargement de données - Amazon DynamoDB

Distribution efficace de l'activité d'écriture pendant le chargement de données

En règle générale, lorsque vous chargez des données d'autres sources, Amazon DynamoDB partitionne vos données de table sur plusieurs serveurs. Vous obtenez de meilleures performances en chargeant des données sur tous les serveurs alloués simultanément.

Par exemple, supposons que vous souhaitiez charger des messages utilisateur dans une table DynamoDB utilisant une clé primaire composite avec UserID comme clé de partition et MessageID comme clé de tri.

Lorsque vous chargez les données, une approche que vous pouvez adopter consiste à charger tous les éléments de message pour chaque utilisateur, un utilisateur après l'autre :

UserID MessageId

U1

1

U1 2
U1 ...
U1 ... jusqu'à 100

U2

1

U2 2
U2 ...
U2 ... jusqu'à 200

Le problème dans ce cas est que vous ne distribuez pas vos demandes d'écriture à DynamoDB dans vos valeurs de clé de partition. Vous prenez une valeur de clé de partition à la fois et chargez tous ses éléments avant de passer à la valeur de clé de partition suivante et d'effectuer la même opération.

En coulisses, DynamoDB partitionne les données dans votre table sur plusieurs serveurs. Pour utiliser pleinement toute la capacité de débit approvisionnée pour la table, vous devez distribuer votre charge de travail entre les valeurs de clé de votre partition. En dirigeant une quantité inégale de travail de chargement vers des éléments ayant tous la même valeur de clé de partition, vous n'utilisez pas complètement toutes les ressources que DynamoDB a approvisionnées pour votre table.

Vous pouvez distribuer votre travail de chargement à l'aide de la clé de tri pour charger un élément de chaque valeur de clé de partition, puis un autre, et ainsi de suite :

UserID MessageId

U1

1

U2 1
U3 1
... ...

U1

2

U2 2
U3 2
... ...

Chaque chargement de cette séquence utilise une valeur de clé de partition différente, ce qui permet d'occuper simultanément plus de serveurs DynamoDB et d'améliorer vos performances de débit.