Я проектирование таблицы DynamoDB, я следующие атрибуты:Динамо DB данных модели
UniqueID | TimeStamp | Тип: | Контент | флаг
Мне нужно, чтобы получить отсортированный список всех строк на основе временных меток, имеющий флаг установлен в действительность.
uniqueID - это идентификатор системы.
TimeStamp - это системное время во время заполнения таблицы.
число различных типа будет меньше, чем 10.
флаг: истина/ложь
я могу думать о следующих 3 подхода:
Чтобы UniqueID в качестве ключа секционирования для таблицы, и создать Глобальный вторичный индекс как флаг & Классы TimeStamp, Partition and Sort соответственно. Теперь я могу запросить глобальный вторичный индекс с хешем в качестве флага и получить отсортированные элементы на TimeStamp.
Но проблема здесь в том, что значение флага будет истинным и ложным, а ни один из строк с флагом, установленным в false, относительно очень меньше по сравнению с истинным, будет только 2 раздела. Это теряет все масштабирующие характеристики DynamoDB.Другой альтернативный вариант делает Type as Partition key и TimeStamp в качестве ключа сортировки для глобального вторичного индекса. Это лучше. Но при запросе я не могу выбрать все типы типа, так как DynamoDB требует ключа Хэш в параметре Query. Поэтому мне нужно запросить этот GSI несколько раз, чтобы получить данные для всех типов хеш-ключа типа.
Сканирование таблицы (Сканирование Эксплуатация): Сканирование возвращает все данные с флагом, установленным в true, без требования хэш-ключа, но это не даст мне отсортированные результаты по созданиюTime.
После анализа прецедента, я думаю, что подход 1 является лучшим на данный момент.
Не могли бы вы предложить какой-либо другой подход лучше, чем это.
Заранее благодарен!