Многопользовательский режим, список отфильтрованных записей и горячие разделы с Dynamodb - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь создать приложение с простыми требованиями:

  • Есть несколько сотен или тысяч арендаторов, 90% нагрузки приходится на несколько
  • онипочтовые записи, которые никогда не обновляются через некоторое время (будучи журналами)
  • Мне нужно получить список самых последних 1к записей для арендатора (но хранить их все в БД) редко
  • или запись с его уникальным UUID, который будет составлять много миллионов записей для всех, имеющих размер около 0,5-2 КБ, также редко запрашивается.

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

Проблема возникает с равномерным распределением RCU / WCU, как я сейчас читаю.Возможная структура будет следующей:

ID (main partition key)
tenant (GSI partition key)
time (GSI sort key)

Но, насколько я понимаю, емкость WCU распределяется равномерно по разделам, поэтому, когда у меня есть 100 WCU для GSI, 1000 арендаторы когда-либо размещали что-либо в целом, 10 большинство активных арендаторов, каждый из которых сейчас брал ~ 10 WCU, этого было бы далеко недостаточно, поскольку 100 будет разделено на 1000. Таким образом, 1 арендатор будетполучите 0.1 WCU, либо он активен, либо он давно вышел из моего ресурса.

Тогда возникает вопрос с фильтрацией по ID: если бы у меня был индекс по идентификатору с WCU / RCU 100 1kk записей в БД, тогда они все получили бы все 100 RCU / WCU?Я узнал о инкрементных ключах , я полагаю, это применимо к UUID.

Разве я не выбрал неправильную БД для этой задачи?

, первоначально заданный дляФорум AWS

...