2016-10-23 5 views
2

In DynamoDB nicht Kosten schreiben Aktualisierung ein Attribut hängt nur von Attribut Größe oder insgesamt Artikel Größe auch?DynamoDB Schreibkosten

Angenommen, ich habe eine Tabelle mit Partitionid als userid und jedes Element hat etwa 70 Attribute mit einem Wert von jeweils 200 Bytes. Jetzt aktualisiere ich nur 1 Attribut dieses Artikels. Wird schreiben Kosten 200 Bytes, so 1 Schreibkapazität Einheit oder es wird abhängig von der Artikelgröße unabhängig von den Attributen aktualisiert werden so wird 70 * 200 = 1400 so 2 Schreibkapazität Einheiten?

+1

70 * 200 sollte 14.000 Bytes sein, sollte es 14 WCU nicht 2 verbrauchen. –

Antwort

0

Eine sehr interessante Frage!

spricht über Artikelgröße, so vermute ich, dass der gesamte Artikel geschrieben wird, wodurch der Verbrauch von 2 Write Capacity Units verursacht.

DynamoDB speichert einen Datenblob (im Gegensatz zu einer herkömmlichen SQL-Datenbank mit Spalten oder einer spaltenförmigen Datenbank). Daher muss der gesamte Blob möglicherweise neu geschrieben werden, auch wenn ein Element aktualisiert wird.

Wenn dies ein Problem ist, könnten Sie aufgeteilt eine Tabelle in mehrere Tabellen mit dem gleichen Partition Key, mit weniger häufig verwendeten Daten in einer anderen Tabelle.

0

Hier sind Angebote von AWS Dokumentation:

Für PutItem:

PutItem-schreibt ein einzelnes Element an einen Tisch. Wenn in der Tabelle ein Artikel mit demselben Primärschlüssel vorhanden ist, ersetzt der Vorgang den Artikel. Für berechnen bereitgestellten Durchsatzverbrauch, die Artikelgröße, die zählt, ist der größere der beiden.

Für UpdateItem:

UpdateItem-modifiziert ein einzelnes Element in der Tabelle. DynamoDB berücksichtigt die Größe des Elements, wie es vor und nach dem Update angezeigt wird. Der bereitgestellte Durchsatzverbrauch reflektiert den größeren dieser Artikel Größen. Selbst wenn Sie nur eine Teilmenge der Attribute des Elements aktualisieren, wird UpdateItem immer noch die gesamte Menge an bereitgestelltem Durchsatz verbrauchen (der größere der "Vorher" - und "Nachher" -Objektgrößen).

Wie Sie in beiden Fällen sehen können, wird die Größe des gesamten Elements berücksichtigt, nicht nur ein einzelnes Attribut.

Eine Möglichkeit, dies zu bekämpfen, besteht darin, Attribute in verschiedene Tabellen aufzuteilen. Wenn ein Attribut aktualisiert wird, zahlen Sie niedrigere Kosten.

Sie können Attribute nach Größe (große Attribute, wie Binärdaten oder Blobs von Text in separate Tabelle) oder nach Aktualisierungshäufigkeit aufteilen. Sie können sogar verschiedene RCU/WCU-Werte für verschiedene Tabellen festlegen, um die Kosten noch weiter zu senken.