Варианты подкачки и сортировки набора результатов DynamoDB? - PullRequest
0 голосов
/ 07 февраля 2020

Я начинаю новый проект и собираюсь использовать DynamoDB в качестве основного источника данных. Многое из того, что он делает, отлично работает для нужд, за исключением нескольких случаев.

Это потребности сортировки и разбивки на страницы пользовательского интерфейса. Пользователи могут сортировать данные в любом месте из 8-10 различных столбцов, и результирующий набор из 20-30 тыс. Строк должен быть разбит на страницы.

Из того, что я могу сказать о DynamoDB, единственный способ сделать сортировку всеми эти столбцы должны были бы раскрыть это множество ключей сортировки через множество дополнительных индексов, и это кажется неправильным использованием этих концепций. Если я не собираюсь сортировать данные с помощью запросов DynamoDb, я тоже не могу разбивать их на страницы.

Итак, мой вопрос: как быстрее всего получить данные для разбивки на страницы и сортировки? Должен ли я перенести набор результатов в Аврору, а затем отсортировать & страницу с SQL? Я думал об экспорте в S3 и последующем использовании чего-то вроде Athena для page & sort, но этот инструмент действительно предназначен для гораздо больших наборов данных, чем этот. Какие есть другие варианты?

Ответы [ 2 ]

1 голос
/ 07 февраля 2020

Сортировка, разбиение на страницы и возврат записей по 20-30 Кб не являются сильной стороной Динамо ...

Почему бы просто не сохранить данные в Авроре?

В зависимости от данных, Elasticsearch может быть лучшим выбором. Можно даже взглянуть на Redshift.

РЕДАКТИРОВАТЬ
Если вы не видели этого раньше ... PIE Theorem

1 голос
/ 07 февраля 2020

Один из вариантов - дублировать данные и сохранять их один раз для каждого варианта сортировки, при этом каждая версия записи имеет разные данные в ключе сортировки. Если у вас все в порядке с возможной согласованностью, которая может быть немного более запоздалой, вы можете сделать это sh, имея лямбду, которая читает из потока DynamoDB и вставляет / обновляет / удаляет отсортированные записи, когда основные записи вставляются / обновляются / удаляются .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...