Предварительная загрузка пакетов для курсора mongodb в отдельном потоке - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть курсор монго с batchSize = 500.Это означает, что первая партия будет загружена в первые 500 документов.После обработки документов из первой партии мне нужно загрузить вторую партию.Но, как я понимаю, драйвер mongo java будет загружать его только во время 501-го вызова cursor.hasNext () / next ().И это требует дополнительного времени, например, X мс.Если вам нужно загрузить 10 миллионов документов партиями размером 500, это займет 20000 * X мс - слишком долго.Я хотел бы иметь 1 предустановленный пакет в памяти, чтобы избежать ожидания его загрузки.Другими словами, я хотел бы иметь что-то вроде (чтобы упростить код, давайте представим, что размер пакета = 1):

cursor = ...
cursor.hasNext(); // 1st batch is loaded and 2d one
cursor.next();
cursor.hasNext(); // initiate loading of 3rd batch  in background (separate thread). True value is returned immediately
cursor.next(); // reading without delay
cursor.hasNext(); // initiate loading of 4th batch  in background (separate thread). True value is returned immediately
cursor.next(); // reading without delay
cursor.hasNext(); // initiate loading of 5th batch  in background (separate thread). True value is returned immediately
cursor.next(); // reading without delay
....

Возможно ли добиться этого с помощью любого существующего API Java-драйвера (без пользовательского кода для предварительной загрузки, следующегопартия)

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