2017-01-30 8 views
0

Я пытаюсь справиться с DynamoDb, и, прочитав Vogels 2007 blog post, он ссылается на подходы к синтаксическому и семантическому согласованию. Мое приложение будет в порядке с «последними победами в записи», но я хочу убедиться, что у меня нет противоречащих друг другу элементов, которые сидят в БД, ожидая, что «клиент» их разрешит.Как вы определяете политику разрешения конфликтов DynamoDb? (и мне даже нужно?)

Я просмотрел API AWS (я как будто ожидал вызова getItem для возврата версии с несколькими версиями, которая должна быть разрешена клиентом), и прочитала документы и форумы, но не может найти никакой ссылки на это. Является ли эта статья просто ссылкой на что-то в мире динамо, а не на DynamoDB, и поэтому мне не нужно беспокоиться об этом?

ответ

0

Динамо - это не то же самое, что DynamoDB. Я знаю, что его трудно поверить, но это правда. Если дать выбор между согласованностью и доступностью, DynamoDB одобряет первое. Просто он увеличивает доступность путем репликации данных в нескольких AZ (например, в зонах доступности).

Чтобы ответить на ваш вопрос конкретно, get-item должен всегда возвращать одну версию записи. Вам не нужно беспокоиться о выборе одной версии из многих или наличии противоречивых версий в базе данных.

Редактировать: Для того, чтобы уточнить, get-itemвсегда возвращает один версию записи. Независимо от того, является ли он последним, зависит от флага ConsistentRead, который по умолчанию является ложным.

+0

Спасибо. Я так думал, но документы не явны, и найти различия между dynamo и dynamoDB непросто! Хорошо иметь подтверждение. Еще раз спасибо. –

+0

GetItem может не всегда возвращать последнюю версию элемента, в зависимости от того, как вы это называете. См. Мой ответ ниже. –

+0

Вы проигнорировали ответ за эту мисс? Вот для чего нужны изменения. И я фактически ответил на суть вопроса OP –

0

API GetItem имеет ConsistentRead parameter. Если вы установите значение false, то чтение может перейти к любой из трех реплик, в которых размещается ваш элемент. Если вы установите значение true, чтение будет всегда идти к мастеру, и вы всегда получите последнюю версию элемента. Наконец, когда вы устанавливаете ConsistentRead на false, вам разрешено считывать в два раза больше данных (8 КБ) для 1 RCU (Read Capacity Unit), поэтому чтение дешевле, когда они в конечном итоге являются непротиворечивыми.