Spring Data Cassandra гигабайт данных подход findAll () - PullRequest
0 голосов
/ 25 февраля 2020

Я знаю, что об этом уже спрашивали, но Spring Data со временем сильно растет.

Как бы вы реализовали функцию findAll (), которая возвращает миллионы строк? Я знаю, что у Spring Data есть потоковый API, хотя я не совсем уверен, будет ли это безопасно с таким большим количеством данных. Насколько я понимаю, это не приведет к извлечению всех данных одновременно, но во время их обработки.

Stream<T> streamAllBy...(...);

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

Slice<T> findAllBy...(..., Pageable pageable)

Есть идеи?

1 Ответ

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

Объявление Stream<T> в качестве типа возврата для метода запроса действительно является предпочтительным подходом. Уровень репозитория адаптирует выполнение запроса к объявленному типу и выполняет прозрачную прямую нумерацию страниц при использовании потока.

Для подхода репозитория Spring Data требуются определенные сигнатуры методов, которые могут быть непрактичными в каждом сценарии.

...