2016-03-25 2 views
2

Ich frage mich, ob es ein besserer Weg, dies zu tun:DynamoDB Map erstellen oder zu aktualisieren (PHP)

ich zur Zeit Schlüssel + Werte in einer Karte in DynamoDB für einzigartige Objekte festlegen werde. Die Art, wie ich dies tue, ist wie folgt:

  1. ConditionalUpdate - Wenn attribute_not_exists(MAP_NAME) neue Karte mit Schlüssel + Wert bevölkert erstellen. (Dies ist in einem try/catch auf ConditionalCheckFailedException false zurück, wenn diese Ausnahme aufgetreten ist.)
  2. Wenn wir nicht schaffen die Karte (keine Ausnahme), aktualisiert Karte mit Schlüsseln + Wert: set MAP_NAME.KEY = :value

I Ich bin dagegen, Ausnahmen für den Logikfluss zu verwenden, aber ich weiß nicht, ob es eine andere Möglichkeit gibt, ein Erstellen oder Aktualisieren auf einer Karte durchzuführen. Bitte lassen Sie mich wissen, oder wenn ich diese Frage in irgendeiner Weise klarer machen kann.

Vielen Dank!

+0

Haben Sie jemals eine andere Lösung dafür gefunden? Ich bin gerade auf dasselbe Problem gestoßen. Im Augenblick ändert die Lösung, die ich in Betracht ziehe, die Attribute in der Karte zu Attributen der obersten Ebene, aber ich würde das Schema lieber so behalten, wie es ist. – Nadine

Antwort

0

Es wäre interessant, Ihr spezielles Beispiel zu sehen, aber haben Sie versucht, einen "get" -Aufruf zu machen, um zu sehen, ob der Artikel existiert?

edit: Es hängt wirklich davon ab, was Sie versuchen zu tun, könnte es Tonnen von verschiedenen Lösungen. DynamoDB ist nicht so flexibel wie beispielsweise MongoDB und erfordert manchmal kreative Lösungen für einfache Probleme.

+0

Ich nicht. Ein Teil des Grundes für die Verwendung von UpdateItem besteht darin, dass das Element gesetzt wird, wenn es nicht existiert. Das Bekommen würde definitiv die Ausnahme verhindern, vielleicht auf Kosten von einem Anruf? Verwenden Sie in der Regel ein get + set-Muster für Ihre Updates? – AllenTsai

+0

Nicht wirklich ein Fan dieser Lösung, könnte eine Wettlaufsituation verursachen. – Nadine

Verwandte Themen