Сохранить новую строку в DynamoDB и затем перечислить все эти элементы с возможной последовательностью чтения? - PullRequest
0 голосов
/ 08 марта 2019

Итак, представьте, что у нас есть веб-интерфейс и интерфейс API Gateway / Lambda / DynamoDB.

Пользователь переходит на страницу «Добавить проект», где вводит имя нового проекта и нажимает кнопку «Сохранить», затемПереходит к списку проектов (который должен включать тот, который они только что добавили).

Поскольку чтение в DynamoDB по умолчанию возможно, возможно, что пользователь щелкнет «Сохранить», а затем не увидит свой новый проект в списке.на следующей странице - это может вызвать путаницу, и если они введут много информации, немного паники.

Это хороший шаблон, когда бэкэнд принимает дополнительный параметр, чтобы сказать «строго согласованное чтение»"на вызове" getProjects "?Или есть другой способ справиться с этим?

1 Ответ

1 голос
/ 08 марта 2019

На самом деле это хороший шаблон для последовательного чтения после вставки или обновления элемента.Пример этого можно увидеть в документации DynamoDB при описании операций CRUD

Обычный шаблон, который я делал в прошлом при работе с веб-приложениями, - это завершение любого запроса POST / PUT.с перенаправлением на GET, в котором я включаю сильную согласованность.Это дает сильную согласованность в списке сразу после вставки.В большинстве случаев пользователи просто ничего не делают после вставки, переходят в другую часть приложения или нажимают, чтобы просмотреть подробную информацию об элементе.

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

...