SimpleDB: гарантировано увидеть все атрибуты элемента, если мы увидим элемент? (несогласованное чтение)

Я только что обнаружил предположение при использовании SimpleDB. Я подозреваю, что это безопасно, но хотел бы услышать другие мнения, поскольку документы, похоже, не охватывают его.

Итак, скажем, процесс 1 хранит элемент с атрибутами x. Когда процесс 2 пытается получить доступ к указанному элементу (без последовательного чтения) и находит его, гарантируется ли наличие всех атрибутов, сохраненных процессом 1?

Я исключаю возможность того, что другой процесс мог изменить данные.

Я также знаю, что процесс 2 не гарантирует, что элемент будет виден, если только не используется согласованное чтение, я просто говорю о моменте, когда он в конце концов его увидит.

Я предполагаю, что вопрос в том, как только я могу получить элемент и больше нигде его не менять, могу ли я предположить, что он имеет специальную фиксированную схему и получить доступ ко всем моим ожидаемым атрибутам, не проверяя, что они действительно существуют?

Я не хочу оказаться в ситуации, когда мне нужно продолжать запрашивать элементы, пока у них не будут все атрибуты, необходимые для их использования.

Спасибо.


person Jonathan    schedule 24.11.2011    source источник


Ответы (1)


Хотя Amazon не дает таких гарантий в документации, текущая реализация их возможной согласованности гарантирует, что вы увидите все свойства, хранящиеся в процессе 1, или ни одно из них.

См. эту тему на форумах AWS и, в частности, этот ответ сотрудника Amazon, подтверждающий поведение (выделено мной).

Я не думаю, что мы даем такую ​​гарантию в документации, но текущая реализация рассматривает каждый запрос Put как пакет. Он не будет разделять запрос и применять операции по частям. Вы будете получать либо ответы шага 1, либо ответы шага 2, пока конечная согласованность не исчезнет и вы не останетесь с ответами шага 2.

Хотя это недокументированное поведение, я подозреваю, что довольно много пользователей SimpleDB полагаются на него сейчас, и поэтому Amazon вряд ли изменит его в ближайшее время, но это только мое предположение.

person Markus Olsson    schedule 18.12.2011
comment
Извините, что так долго отвечаю, я думал, что вопрос мертв. Но спасибо, что вернулись к этому - отличный ответ, сегодня я буду спать лучше :) Если они изменят это, я ожидал, что это будет опция API, я согласен, что многие люди полагаются на это поведение, не осознавая этого. Еще раз спасибо! - person Jonathan; 30.12.2011