Я пытаюсь создать приложение с простыми требованиями:
- Есть несколько сотен или тысяч арендаторов, 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