Есть сервис: key-value база данных спрятанная за rest интерфейсом.
Объёмы данных небольшие: всего несколько М записей, прирост незначительный.
И тут понадобилось сделать внешнюю batch job, которая итерирует все данные сервиса и что-то делает.
Стрим интерфейс к сервису делать не планирую по отдельным причинам, хочу ограничиться restful.
А job обязательно будет внешний, тоже внутрь сервиса вносить не планируется, т.к. это отдельный севрис сам по себе.
То есть клиенту 'batch job' нужно выгрести все ключи из сервиса, а затем по ключам запросить все данные.
Я планирую ввести понятие bucket# (номер корзинки) и capacity (максимальное количество bucket в сервисе, скажем 1000 корзинок).
Каждая запись будет ассоциирована с bucket# (считается как хэшкод-записи % capacity)
В сервисе будет endpoint, который сможет отдавать ключи по bucket#.
То есть клиент запросит сначала capacity и затем в цикле от 0 до 999 (если для примера, capacity=1000) запросит ключи для bucket#0, затем для №1 и пр.
И сделает свой batch job.
Ну или же можно отдавать клиенту сразу данные по bucket#, минуя выгребание ключей