Momentan verschiebe ich Daten von der Cassandra-Datenbank nach amazon dynamoDB. Als ich Konzepte der dynamoDB-Implementierung durchging, habe ich einige Fragen bezüglich der Aktualisierung von Zählern in dynamoDB.Amazon dynamoDB Counters Aktualisieren und Objekte erhalten
Frage 1:
In Cassandra in der Regel verwenden wir store_id, store_id + Datum, campaign_id, campaign_id + Datum Kombinationen der Zähler zu aktualisieren.
In Amazon DynamoDB haben wir HASHKEY und RANGEKEY. Wir können nur HASHKEY oder HASHKEY mit RANGEKEY verwenden. Hier habe ich zwei Möglichkeiten.
Option 1:
Platzierung store_id/campaign_id auf HashKey und das Datum auf RANGEKEY.
Option 2:
wie Cassandra Struktur, Kann ich store_id, store_id + Datum, campaign_id, campaign_id + Datum als HashKey (Nein Bereich Taste).
Welche Option ist gut für Best Practices?
Wenn ich die Werte von dynamoDB lese, brauche ich die vom Benutzer angegebenen Gesamtzählerwerte von store_id und campaign_id sowie den Bereich.
Frage 2:
Ich möchte für bestimmten Speicher Anzahl der Kampagne Lasten berechnen. Wir laden die Kampagne, wenn der Nutzer den Store besucht. Wenn beispielsweise ein "Alpha" -Benutzer das Geschäft besucht und wir die Kampagne gezeigt haben, erhöhen Sie den Kampagnenladezähler.
Ich muss die Kampagnenlasten basierend auf dem vom Benutzer angegebenen Zeitraum berechnen. In Cassandra habe ich folgende Struktur implementiert.
campaign_id - Lasten - 10 (10 Benutzer diese Kampagne gesehen haben)
campaign_id + 20.160.403 - Lasten - 4 (4 Benutzer haben diese Kampagne auf diese Daten zu sehen)
Wie kann ich das gleiche Konzept implementieren in Amazon dynamoDB.
Ich habe festgestellt, dass wir DynamoDB nicht verwenden können, Batch-Update zu verwenden, um Attribute (Counter) in mehreren Elementen (Keys) zu aktualisieren. In diesem Fall werden wir mehr Schreibvorgänge haben als Cassandra.
Beispiel:
campaign_load Zähler:
Mit hector api können wir campaign_load Zähler zu einer Zeit mit folgenden Kombinationen aktualisieren. store_id, store_id + datenschlüssel, campaign_id, campaign_id + datekey.
(4 Schlüssel mit einem Schreiben) - Ich benutze Hector API für die Verbindung mit Cassandra Node.
Aber in Amazon DynamoDB müssen wir 4 Schreibvorgänge machen. Jedes Attribut im Element wird separat aktualisiert. (4 Tasten mit 4 Schreibvorgängen)
Writebatch-Konzept hier nicht sinnvoll. Weil es die vorhandenen Elemente überschreibt und die Zähler nicht aktualisiert.
Bei steigenden Zählern erhöht sich auch die Anzahl der Schreibvorgänge.
In meiner Anwendung verwende ich mehr Zähler. Kann irgendjemand vorschlagen, dass hwo die Zähler aktualisiert?
Eigentlich ist die Frage 2 nicht klar. Wäre klar, wenn Sie die tatsächliche Anforderung eher als Ihr Verständnis und einige teilweise Lösung bereitstellen können. – notionquest
Danke für Ihre Antwort .. Ich habe Quesiton 2 bearbeitet. Hoffe, Sie verstehen das Konzept – John
Die Antwort aktualisiert 2. – notionquest