У меня есть сценарий использования, при котором число генерируемых разделов невелико, что вызывает проблемы с регулированием.
Допустим, у моего предмета есть несколько полей, и три из них organizationId, createdTime and itemType
. Мы пытаемся выполнить нумерацию страниц и хотим получить элементы в порядке убывания созданного времени.
The GSI we had was organizationId (hash) and createdTime (range)
(очень плохо). Причина, по которой мы выбрали это, потому что это единственный способ получить элементы в отсортированном порядке для всей организации. Позже мы начали добавлять itemType к organizationId, который затем стал хэш-ключом organizationId-itemType
. Но эти itemTypes похожи на несколько из них, поэтому мы все еще сталкиваемся с проблемами регулирования.
Я хочу сделать это представление эффективным. Если мы разделим записи на, скажем, случайные разделы 10/20/50, сбор всех данных и их сортировка в отсортированном порядке - это слишком большая операция и отнимает много времени. Я знаю худшее.
Я знаю, что таких сценариев должно быть много для тех, кто работал с DynamoDB. Как люди достигают этого в динамо? Вы говорите, что сценарий использования неправильный для DynamoDB или каких-либо идей, чтобы сделать это лучше (например, счетчик ... каждый счетный раздел имеет ограниченный набор записей ... заблокировать счетный раздел, если есть какие-либо параллельные операции, происходящие ... и так далее)?
Ваши идеи / предложения действительно помогут нам решить этот огромный сценарий использования.