Федеративные SQL-запросы — запросы, адресованные внешним источникам данных. Они часто используются для оперативной аналитики разнородных данных и их миграции между различными хранилищами. Чтобы федеративные запросы летали, федеративные системы должны уметь быстро извлекать большие объемы данных из внешних источников. Чтение данных в один поток — слишком медленное и неэффективное, особенно с учетом того, что федеративная система — обычно еще и система распределенная. Чтение данных в несколько потоков по частям позволяет гораздо лучше утилизировать аппаратные ресурсы федеративной системы, однако ставит вопрос о согласованности данных: смогут ли читающие потоки видеть одно и то же состояние внешней таблицы?
Облачный сервис обработки аналитических запросов Yandex Query, построенный на основе YDB, является примером такой системы. Оптимизируя его пропускную способность, мы занялись задачей многопоточного чтения из внешних источников данных и в этом докладе хотим поделиться накопленным опытом. Мы проведем сравнительный анализ API популярных реляционных СУБД (PostgreSQL, MySQL, Oracle, MS SQL Server, Greenplum, CocroachDB, YDB) с точки зрения возможностей многопоточного, консистентного и отказоустойчивого чтения, коснемся темы MVCC — в классическом и распределенном варианте, а также погрузимся в технику разбиения массива данных на «сплиты» — элементарные единицы работы в системе массивно-параллельной обработки данных. А еще в докладе будет много подробностей об устройстве федеративной YDB и сценариях ее применения в Yandex Cloud.