А давайте я вам, чат, подброшу задачку для собеседования вечера пятницы.
Дано: таблица/коллекция в базе данных. Представляет из себя уникальный ID (он же первичный ключ) и какое-то небольшое количество метаданных. ID случайный, не инкрементальный. Размерность известна. Для простоты можно считать, что это вообще UUID.
Таблица очень большая, десятки миллионов записей, может быть даже сотни. База шардирована, в каждом шарде мастер и сколько-то реплик, топологию узнать, если что, можно.
Задача: максимально быстро просканировать всю таблицу, не пропустив ни одной записи, выбрать записи по какому-то простому (скажем, ID делится на заданное число) критерию, и совершить с выбранными какое-то простое действие (например положить в очередь для дальнейшей обработки).
У нас для этого есть какое-то разумное количество железа, скажем один сервер в кластере приложения на каждые 5 или 10 миллионов записей в базе. Конфигурацию кластера приложения привязывать к конфигурации кластера БД нельзя (например иметь по серверу или два на каждый шард - нет, кластеры должны масштабироваться независимо). Падение любого сервера в кластерах БД или приложения не должны приводить к тому, что часть записей не попадёт в выборку.