Глобальная транзакция таблицы пользователей DynamoDB - PullRequest
0 голосов
/ 08 мая 2020

Я заново исследую мир AWS и знаю, что глобальные таблицы не поддерживают транзакции, поэтому я не уверен, как решить эту проблему. У меня есть глобальная таблица USER, в которой хранится информация о моем пользователе, где USERNAME является ключом раздела. Один крайний случай. Меня беспокоит, что ПОЛЬЗОВАТЕЛЬ A создаст новую учетную запись с username = "BOB", а ПОЛЬЗОВАТЕЛЬ B придет на секунду позже и создаст новую учетную запись с тем же самым "BOB" до того, как первая учетная запись будет записана в таблицу и таблицы реплик. будет ли USER B переопределить эту учетную запись, или что именно произойдет?

Это всего лишь один пример, я пытаюсь применить ту же концепцию к другим моим таблицам.

1 Ответ

0 голосов
/ 08 мая 2020

Из документов :

Если приложения обновляют один и тот же элемент в разных регионах примерно в одно и то же время , могут возникнуть конфликты. Чтобы обеспечить согласованность в конечном итоге, глобальные таблицы DynamoDB используют согласование последняя запись между параллельными обновлениями, в котором DynamoDB делает максимальные усилия для определения последней записи . Благодаря этому механизму разрешения конфликтов все реплики согласятся с последним обновлением и приблизятся к состоянию, в котором все они будут иметь идентичные данные.

На основании вышеизложенного DynamoDB приложит максимальные усилия для определения последнего записывающего, в этом случае ПОЛЬЗОВАТЕЛЯ Б. Тогда все реплики согласятся с этим и будут использовать данные ПОЛЬЗОВАТЕЛЯ Б в качестве конечный результат.

Ключевая фраза: максимальное усилие . Так что не гарантируется, что так будет всегда.

...