So aktualisieren Sie mehrere Elemente in einer DynamoDB-Tabelle auf einmal
Ich bin mit DynamoDB und ich brauche zu aktualisieren, die ein bestimmtes Attribut auf mehrere Datensätze. Schreibe meine Anforderung in pseudo-Sprache würde ich gerne ein update zu tun, das sagt "update Tabelle Personen set relationshipStatus = 'verheiratet', wo personKey IN (key1, key2, key3, ...)" (unter der Annahme, dass personKey ist der SCHLÜSSEL in meiner DynamoDB-Tabelle).
In anderen Worten, ich möchte ein update zu tun, mit einer IN-Klausel, oder ich nehme an, man könnte es nennen, eine batch-update. Ich habe festgestellt diese link, der fragt explizit, ob eine operation wie eine batch-Aktualisierung vorhanden ist und die Antwort dort ist, dass es nicht. Es erwähnt nicht die IN-Klauseln dagegen. Die Dokumentation zeigt, dass IN-Klauseln unterstützt werden ConditionalExpressions (100 Werte geliefert werden können, eine Zeit). Allerdings bin ich mir nicht sicher, ob eine solche Klausel ist geeignet für meine situation, weil ich noch brauchen, um liefern eine obligatorische KEY-Attribut (was erwartet einen einzelnen Wert scheint es, ich könnte falsch sein) und ich bin besorgt, dass es tun wird ein full table scan für jedes update.
Also meine Frage ist: wie kann ich erreichen, ein update auf mehreren DynamoDB Platten gleichzeitig? Im moment sieht es fast, wie ich den Aufruf einer update-Anweisung für jede Taste ein -, durch-und man fühlt sich wirklich falsch...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Sie merkte, DynamoDB unterstützt keine batch-update-Vorgang. Sie müssten Abfrage und erhalten die Schlüssel für alle Datensätze, die Sie aktualisieren möchten. Dann eine Schleife durch die Liste, Aktualisierung jedes Element ein zu einer Zeit.
Ich weiß nicht, ob er sich geändert hat da die Antwort gegeben wurde, aber es ist nun möglich
Siehe die Dokumentation:
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html
Ich habe es verwendet, wie dies in javascript (Zuordnung der neuen Blöcke, die ein array von Objekten mit der gesuchten Struktur:
Können Sie sogar mischen
puts
unddeletes
Und wenn Ihr mit dynogels (Sie schräger mix em aufgrund dynogels unterstützen, aber was Sie tun können, ist für die Aktualisierung (nutzen schaffen, weil Sie hinter die kulissen wirft, um die batchWrite Funktion als put ' s)
Hinweis: dieses von DynamoDB Einschränkungen (von den docs):
Wenn ich mich richtig erinnere, ich glaube, dynogels ist die Segmentierung der Anfragen in chucks 25, bevor Sie ab und dann sammeln Sie in einem Versprechen und gibt (obwohl ich bin nicht 100% sicher über diese) - ansonsten wird eine wrapper-Funktion wäre ziemlich einfach zu montieren
Können Sie TransactWriteItems Aktion zur Aktualisierung mehrerer Datensätze in DynamoDB-Tabelle.
Die offizielle Dokumentation zur Verfügung hier, auch können Sie sehen, TransactWriteItems javascript/nodejs Beispiel hier.