Effizientes Verteilen der Schreibaktivität beim Datenupload in DynamoDB - Amazon-DynamoDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Effizientes Verteilen der Schreibaktivität beim Datenupload in DynamoDB

Normalerweise partitioniert Amazon DynamoDB Ihre Tabellendaten auf mehreren Servern, wenn Sie Daten aus anderen Datenquellen laden. Sie erhalten eine bessere Leistung, wenn Sie Daten gleichzeitig auf alle zugewiesenen Server hochladen.

Angenommen, Sie möchten Benutzermitteilungen in eine DynamoDB-Tabelle hochladen, die einen zusammengesetzten Primärschlüssel mit UserID als Partitionsschlüssel und MessageID als Sortierschlüssel verwenden.

Wenn Sie die Daten hochladen, können Sie einen Ansatz verwenden, um alle Nachrichtenelemente für jeden Benutzer, einen Benutzer nach dem anderen, hochzuladen:

BenutzerID MitteilungsID

B1

1

B1 2
B1 ...
B1 ... bis zu 100

B2

1

B2 2
B2 ...
B2 ... bis zu 200

Das Problem in diesem Fall besteht darin, dass Sie Ihre Schreibanforderungen nicht mittels Ihrer Partitionsschlüsselwerte in DynamoDB verteilen. Sie nehmen einen Partitionsschlüsselwert nach dem anderen und laden alle seine Elemente hoch, bevor Sie zum nächsten Partitionsschlüsselwert gehen und dasselbe tun.

Im Hintergrund partitioniert DynamoDB die Daten in Ihren Tabellen auf mehreren Servern. Um die gesamte Durchsatzkapazität, die für die Tabelle bereitgestellt wird, vollständig zu nutzen, müssen Sie Ihre Workload auf Ihre Partitionsschlüsselwerte verteilen. Indem Sie eine ungleichmäßige Menge der Upload-Arbeit auf Elemente lenken, die alle denselben Partitionsschlüsselwert haben, nutzen Sie nicht alle Ressourcen, die DynamoDB für Ihre Tabelle bereitgestellt hat.

Sie können Ihre Upload-Arbeit verteilen, indem Sie den Sortierschlüssel verwenden, um ein Element aus jedem Partitionsschlüsselwert und dann ein anderes Element aus jedem Partitionsschlüsselwert usw. zu laden:

BenutzerID MitteilungsID

B1

1

B2 1
B3 1
... ...

B1

2

B2 2
B3 2
... ...

Jeder Upload in dieser Sequenz verwendet einen anderen Partitionsschlüsselwert, was mehrere DynamoDB-Server gleichzeitig beschäftigt und Ihre Durchsatzleistung verbessert.