9

Die Anwendung, die ich gerade bearbeite, erfordert, dass ich ein Attribut, das zu einem Element in DynamoDB gehört, oft in einem Zeitraum von 20 bis 30 Minuten inkrementieren. Ich habe einige zusätzliche Informationen über DynamoDBs conditional writes and atomic countersAmazon DynamoDB Bedingte Schreibvorgänge und Atomic Counters

Atomic Counter in Dynamo scheint eine logische Wahl für das, was ich brauche, aber ich mache mir Sorgen über die Konsistenz der Daten vor allem über eine verteilte Datenbank wie Dynamo und Probleme Genauigkeit meiner Daten. Ich erwarte, dass die API zu Spitzenzeiten durchhämmert wird, aber ich möchte Performance-Probleme im Zusammenhang mit bedingten Updates vermeiden. Ich möchte wissen, wie zuverlässig die Atomic Counter mit DynamoDB sind und wie man sie mit Dynamo korrekt implementiert. Andere Vorschläge sind ebenfalls willkommen.

Antwort

9

Ja, das sind die Funktionen, die Sie verwenden möchten. Mit ihnen über Dynamo API ist der Weg. Verwenden Sie jetzt zwischen diesen beiden Funktionen bedingtes Schreiben, wenn der Zähler, den Sie ändern müssen, sehr geschäftskritisch ist (Sie teilen der API mit, den Wert x + 10 "IF" und nur IF "den vorhandenen Wert zu aktualisieren x)

Das gleiche Dokument, das Sie genannt erklärt Atomic Counter:

„Sie können diesen Vorgang wiederholen, wenn Sie vermuten, dass eine frühere Anfrage erfolglos war jedoch würde riskieren Sie das gleiche Update installieren zweimal. Dies könnte für einen Website-Zähler akzeptabel sein, weil Sie c tolerieren mit leicht über oder unter Zählung der Besucher. jedoch in einer Bankanwendung, wäre es sicherer, ein bedingte Update zu verwenden.“

Also, wenn es unternehmenskritischen Betrieb Verwendung Conditional Schreib, sonst Atom-Zähler ist. Hoffe, es verdeutlicht.

+0

Ich war Denken Sie auch über die Verwendung von Caching einer Art. Schreiben Sie Werte in einen Cache und spülen Sie den Cache jede Minute von zwei Minuten. – john

+0

Cache funktioniert nur dann wieder ok, wenn der Zähler nicht geschäftskritisch ist, da die Caches möglicherweise untergehen und nicht sein können sehr zuverlässig usw. Auf diese Weise trägt der Cache dazu bei, die Latenz zu verringern und die Dynamodurchsätze einzusparen. –