DynamoDB эквивалентна find (). Sort ()

В mongoDB можно получить все документы, отсортированные asc / desc по определенному полю следующим образом:

db.collection_name.find().sort({field: sort_order}) 

запрос() требует, чтобы один указывал ключ раздела, и если кто-то хочет запросить неключевой атрибут, можно создать GSI, и запросы могут выполняться на нем, как описано здесь: Запрос по неключевому атрибуту

сканирование () выполнит эту работу, но не предоставляет возможности сортировки по любому полю.

Одно из решений, описанных здесь: Сканирование Dynamodb в отсортированном порядке состоит в том, чтобы иметь общий ключ для всех документов и создать GSI для атрибута.

Но, как указано в комментариях к одному из решений, я цитирую "Характеристики производительности таблицы DynamoDB применимы к GSI. GSI с единственным хеш-ключом «OK» всегда будет использовать только один раздел. Это теряет все характеристики масштабирования DynamoDB.".

Есть ли способ достичь вышеупомянутого хорошо масштабируется?

Единственная сортировка, применяемая DynamoDB, - это по ключу диапазона. Функция сортировки по произвольному полю отсутствует, ожидается, что вы будете сортировать собственные результаты в коде приложения. т.е. выполнить сканирование и отсортировать результаты на стороне клиента.

F_SO_K 23.08.2018 13:31

Но scan () не вернет все документы, если данные огромны. Его ограничение составляет не более 1 МБ.

Adarsh 23.08.2018 13:33

Если вы использовали API напрямую, вам нужно было бы использовать LastEvaluatedKey для просмотра результатов. Однако SDK делают все это за вас за кулисами. Таким образом, вы действительно получаете все результаты за одну операцию сканирования. По крайней мере, механизмы разбиения по страницам абстрагируются SDK.

F_SO_K 23.08.2018 13:40

Хорошо. Полагаю, это единственный способ сделать это. Не могли бы вы ответить на вопрос, чтобы я мог закрыть его принятым ответом

Adarsh 23.08.2018 13:42
Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
1
4
130
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

DynamoDB применяет только сортировку по ключу диапазона в разделе. Нет функции для сортировки результатов по произвольному полю, вы должны сортировать свои собственные результаты в коде приложения. т.е. выполнить сканирование и отсортировать результаты на стороне клиента.

Другие вопросы по теме