Как осуществлять потоковую передачу записей партиями с драйвером neo4j java 4.0.0? - PullRequest
0 голосов
/ 03 марта 2020

Допустим, у меня есть запрос к процедуре neo4j, которая должна вернуть 100 000 записей. То, что я хотел бы, - это способ получения моих записей партиями по 1000. Я не хочу ждать, пока все 100 000 записей будут отправлены Neo4j, я хотел бы контролировать на стороне клиента количество записей, которые я получаю. Я заметил, что в ResultCursor есть метод CompletionStage<Record> nextAsync(), который делает то, что я хочу, но только одну запись за одной. Это не оптимально, так как для получения всех записей потребуется слишком много циклов между клиентом и neo4j. Есть ли способ запросить следующие N записей?

Я использую драйвер neo4j java 4.0.0 в асинхронном режиме c.

1 Ответ

0 голосов
/ 04 марта 2020

[ОБНОВЛЕНО]

В neo4j 4.0 + метод nextAsync() внутренне получает записи в пакетах для вас.

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

Таким образом, метод nextAsync() довольно оптимален и обычно должен очень быстро получить следующую запись из очереди.

...