Amazon DynamoDB-Mapper - Grenzen zu batch-Operationen
Ich bin versucht zu schreiben, eine große Anzahl von Datensätzen in einer dynamoDB-und ich würde gerne wissen, was ist der richtige Weg, das zu tun. Derzeit bin ich mit der DynamoDBMapper um den job zu erledigen in einem batchWrite Betrieb, aber nach dem Lesen der Dokumentation, ich bin nicht sicher, ob dies der richtige Weg (vor allem wenn es einige Grenzen hinsichtlich der Größe und der Anzahl der geschriebenen Elemente).
Sagen, dass ich eine ArrayList mit 10000 Datensätzen und ich bin speichern Sie es wie folgt:
mapper.batchWrite(recordsToSave, new ArrayList<BillingRecord>());
Das erste argument ist die Liste mit Datensätzen geschrieben werden, und die zweite enthält Elemente, die gelöscht werden soll (ohne solche Elemente, in diesem Fall).
Macht der mapper split dieses schreiben in mehrere schreibt und behandeln die Grenzen, oder sollte es werden explizit behandelt?
Habe ich nur Beispiele mit batchWrite getan mit der AmazonDynamoDB client direkt (wie DIESE ein). Wird mit dem AUFTRAGGEBER direkt für den batch-Operationen, der richtige Weg? Wenn ja, was ist der Punkt, der mit ein mapper?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Macht der mapper teilen Sie Ihre Liste von Objekten, die in mehrere Chargen und schreiben Sie dann jeden Stapel separat? Ja, tut es Dosierung für Sie, und Sie können sehen, dass es spaltet die Elemente geschrieben werden, in Chargen von bis zu 25 Elementen hier. Es wird dann versucht, schreiben jedes batch-und einige der Elemente in jeder Gruppe, die fehlschlagen können. Ein Beispiel eines Fehlers wird in der mapper Dokumentation:
Beispiel ist das reden über die Größe eines Datensatzes (einer BillingRecord-Instanz in deinem Fall) auf über 400 KB, die zu der Zeit des Schreibens dieser Antwort, ist die maximale Größe eines Datensatzes in DynamoDB.
Im Falle einer bestimmten charge ausfällt, es bewegt sich auf die nächste charge (schläft der thread ein wenig bei der Fehler war wegen der Drosselung). Am Ende werden alle von der fehlerhaften Chargen zurückgegeben werden, in die Liste der FailedBatch Instanzen. Jeder FailedBatch Instanz enthält eine Liste unbearbeiteter Elemente, die nicht geschrieben DynamoDB.
Ist das snippet, dass Sie die richtige Art und Weise tun batch schreibt? Ich denke, der kann zwei Vorschläge. Die BatchSave Methode ist geeignet, wenn Sie keine Elemente löschen. Vielleicht wollen Sie auch darüber nachdenken, was Sie tun möchten, mit der fehlgeschlagenen batches.
Wird mit dem Kunden direkt den richtigen Weg? Wenn ja, was ist der Punkt der mapper? Der mapper ist einfach nur ein wrapper um den client. Der mapper bietet Ihnen eine ORM-Schicht, konvertieren Sie Ihre BillingRecord-Instanzen in die Sortierung von verschachtelten hash-maps, die die low-level-client arbeitet. Es ist nichts falsch mit der Verwendung der client direkt und dieser neigt zu geschehen, in einigen speziellen Fällen, in denen zusätzliche Funktionen benötigt, muss codiert werden, die außerhalb der mapper.