Data Internals X

Многопоточное и/или консистентное чтение из реляционных источников данных в федеративных системах

Разработка СУБД

PostgreSQL
Oracle
MSSQL
Базы данных / другое
Распределенные системы
MySQL (MariaDB, Percona Server)
YDB

Доклад принят в программу конференции

Мнение Программного комитета о докладе

Федеративные системы сталкиваются с дилеммой: медленное однопоточное чтение или риск несогласованных данных при параллелизме. Раскроем этот ключевой трейд-офф, поговорим про разные подходы, сравним API популярных СУБД на предмет отказоустойчивого и консистентного чтения, разберем примеры.

Целевая аудитория

Все, кому интересно внутреннее устройство федеративных СУБД и движков обработки федеративных запросов, а также проблематика консолидации данных из разных источников.

Тезисы

Федеративные SQL-запросы — запросы, адресованные внешним источникам данных. Они часто используются для оперативной аналитики разнородных данных и их миграции между различными хранилищами. Чтобы федеративные запросы летали, федеративные системы должны уметь быстро извлекать большие объемы данных из внешних источников. Чтение данных в один поток — слишком медленное и неэффективное, особенно с учетом того, что федеративная система — обычно еще и система распределенная. Чтение данных в несколько потоков по частям позволяет гораздо лучше утилизировать аппаратные ресурсы федеративной системы, однако ставит вопрос о согласованности данных: смогут ли читающие потоки видеть одно и то же состояние внешней таблицы?

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

Разработчик на Go/Python/C++. Увлекается внутренним устройством баз данных, объектных хранилищ и в целом распределенными системами.

Видео

Другие доклады секции

Разработка СУБД