2017-07-01 1 views
0

Ich habe eine DynamoDB-Tabelle mit 3 GSIs. Ich muss nur 3 Operationen am Tisch ausführen - speichern, löschen und holen. Alle Gegenstände werden einzigartig sein. Ich bin verwirrt, das wird man besser sein -Verwenden von DynamoDBMapperConfig Clobber oder Aktualisieren beim Speichern und Löschen eines Elements aus DynamoDB

Ich habe folgende Variablen -

ddbMapperConfigClobber = new DynamoDBMapperConfig.Builder().withConsistentReads(
      DynamoDBMapperConfig.ConsistentReads.CONSISTENT) 
      .withSaveBehavior(DynamoDBMapperConfig.SaveBehavior.CLOBBER).build(); 


ddbMapperConfigUpdate = new DynamoDBMapperConfig.Builder().withConsistentReads(
      DynamoDBMapperConfig.ConsistentReads.CONSISTENT) 
      .withSaveBehavior(DynamoDBMapperConfig.SaveBehavior.UPDATE).build(); 

Welche soll ich speichern

verwenden für
ddbMapper.save(item, ddbMapperConfigUpdate); or ddbMapper.save(item, ddbMapperConfigClobber); 

Welche soll ich zum Löschen verwenden -

Antwort

0

Hier finden Sie die AWS-Dokumentation, in der die verschiedenen Sicherungsverhalten beschrieben werden:

https://aws.amazon.com/blogs/developer/using-the-savebehavior-configuration-for-the-dynamodbmapper/

hat Jedes andere Verhalten, wenn das Element vorhanden ist.

Ich weiß, Sie sagen, dass Sie nur über Speichern/Lesen/Löschen und nicht aktualisieren, aber Sie müssen daran denken, dass DynamoDB keine Transaktionsdatenbank ist. Also müssen Sie über Wiederholungen und Idempotenz nachdenken. Es gibt den Lieferungsmechanismus von DynamoDB selbst. Und es gibt die Garantieebene des Anrufers (dh mindestens einmal, höchstens einmal, usw.).

Also, ob Sie es mögen oder nicht, müssen Sie sich um das Update kümmern. Jetzt mag es nicht mehr "wichtig" sein (weil Sie irgendwie garantiert haben, dass die gleichen Informationen immer weitergegeben werden), aber DynamoDB weiß das nicht, also müssen Sie die Frage beantworten (oder lassen Sie es leer, um das Standardverhalten zu verwenden))

Verwandte Themen