2016-10-01 3 views
2

Die AWS SimpleDB documentation für das Ruby-SDK stellt das folgende Beispiel hinsichtlich der get_attributes Verfahren zur Verwendung von:Wie erkennt man, ob die SimpleDB-Domäne das angeforderte Element enthält?

resp = client.get_attributes({ 
    domain_name: "String", # required 
    item_name: "String", # required 
    attribute_names: ["String"], 
    consistent_read: false, 
}) 

... und dann das folgende Beispiel Antwort:

resp.attributes #=> Array 
resp.attributes[0].name #=> String 
resp.attributes[0].alternate_name_encoding #=> String 
resp.attributes[0].value #=> String 
resp.attributes[0].alternate_value_encoding #=> String 

Weiter heißt es, das folgende Stück Hinweis:

Wenn das Element nicht in der Replik vorhanden ist, auf die für diese Operation zugegriffen wurde, wird eine leere Menge zurückgegeben ned. Das System gibt keinen Fehler zurück, da es nicht garantieren kann, dass das Objekt in anderen Replikaten nicht vorhanden ist.

Ich hoffe, dass ich dies Missverständnis, aber wenn Ihre Antwort eine leere Menge zurückkehrt, dann wie soll man wissen, ob es ist, weil kein Element mit dem Elementnamen geliefert vorhanden ist, oder wenn Sie Ihre Anfrage einfach auf ein Replikat, das dein Item nicht enthält?

Antwort

1

Ich habe noch nie AWS SimpleDB verwendet, aber aus den wenigen Kenntnissen, die ich über die Replikation von Amazon DynamoDB habe, sind die Daten in der Regel konsistent - während jedes der Replikate Ihre Anforderung behandelt, die Attribute zu lesen, den Prozess der Replikation der zuvor geschrieben Daten können immer noch über die Replikate hinweg gespeichert werden, die für das Speichern Ihrer Daten verantwortlich sind. Daher ist es möglich, dass das Replikat, das Ihre Anforderung zum Lesen der Attribute verarbeitet, die Daten (noch) nicht speichern muss. Daher kann es nicht mit einer Fehlermeldung antworten.

Was sollten Sie in der Lage sein zu tun, um 100% sicher zu sein, ist die consistent_read: true Parameter angeben, wie es sollte Ihnen sagen, ob die Daten in AWS SimpleDB existiert oder nicht:

nach the documentation of get_attributes method

: consistent_read (Boolean) -

Legt fest, ob oder nicht stark Konsistenz erzwungen werden sollte, wenn Daten von SimpleDB gelesen wird. Wenn dies der Fall ist, werden alle zuvor in SimpleDB geschriebenen Daten zurückgegeben. Andernfalls sind die Ergebnisse möglicherweise konsistent und der Client sieht möglicherweise keine Daten, die unmittelbar vor dem Lesen geschrieben wurden.

Verwandte Themen