Spring Data DynamoDB разбит на страницы - PullRequest
0 голосов
/ 06 марта 2019

Данные Spring DynamoDB не использует объект Page для извлечения результатов из DynamoDB. Spring data загружает данные в память, а затем обрабатывает из нее страницы и предоставляет желаемый результат.

Вот открытый вопрос: https://github.com/derjust/spring-data-dynamodb/issues/232

DynamoDB не поддерживает доступ к случайному результату страницы. Он может обеспечить только последовательный доступ.

Несмотря на то, что мне нужно разбивать на страницы, по вышеуказанной причине я не могу использовать данные Spring, потому что не знаю, сколько данных (КБ / МБ) Spring загружает в память из DynamoDB. Чем больше данных вы загружаете одновременно, тем больше RCU будет использоваться DynamoDB.

Мне нужна информация о сколько данных Spring считывает в память ? Так что я хотел бы переоценить, хочу ли я использовать данные Spring или нет.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Я изучил еще несколько деталей, связанных с DynamoDB и Spring-data.

Когда запрашивается нумерация страниц для Spring-data-DynamoBD (предположим, что у вас есть одна из следующих стратегий: LAZY_LOADING, ITERATION_ONLY):

  • Spring загружает страницу данных в память
  • Размер страницы составляет 1 МБ.
  • Для стратегии LAZY_LOADING она сначала загружает 1 МБ данных, и если у этих данных нет запрошенной страницы записей, то запросы на дату весны еще на 1 МБ записей и т. Д. Но предыдущие записизагруженные в память не были сброшены.
  • В ITERATION_ONLY, в отличие от LAZY_LOADING, он удаляет ранее загруженные записи из памяти.Таким образом, вы не загружаете свою память и не сталкиваетесь с проблемами производительности.

Знание загрузок данных Spring 1 МБ данных помогли мне двигаться вперед.

0 голосов
/ 06 марта 2019

Это на самом деле зависит от конфигурации картографа DynamoDB. Из того, что я могу сказать, все результаты DynamoDBMapper из запроса или сканирования разбиты на страницы. Смотрите ниже выдержку:

"Значение перечисления DynamoDBMapperConfig.PaginationLoadingStrategy - Управляет обработкой экземпляра картографа разбитого на страницы списка данных, таких как результаты запроса или сканирования:

LAZY_LOADING - экземпляр картографа загружает данные, когда это возможно, и сохраняет все загруженные результаты в памяти.

EAGER_LOADING - экземпляр mapper загружает данные, как только список инициализируется.

ITERATION_ONLY - вы можете использовать итератор только для чтения из списка. Во время итерации список очистит все предыдущие результаты перед загрузкой следующей страницы, так что список будет хранить не более одной страницы загруженных результатов в памяти. Это также означает, что список может быть повторен только один раз. Эта стратегия рекомендуется при работе с большими объектами, чтобы уменьшить накладные расходы памяти.

Если вы не укажете стратегию загрузки пагинации для своего экземпляра mapper, по умолчанию будет LAZY_LOADING. "

См. Полные документы здесь: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBMapper.OptionalConfig.html

...