Aрхитектура системы обработки федеративных запросов

Внешние источники данных и внешние таблицы

Ключевым элементом системы обработки федеративных запросов YDB является понятие внешнего источника данных (external data source). В качестве таких источников могут выступать реляционные СУБД, объектные хранилища и другие системы хранения данных. При обработке федеративного запроса YDB потоково вычитывает данные из внешних систем и позволяет выполнять над ними точно такой же спектр операций, что и для локальных данных.

Для того, чтобы работать с данными, размещёнными во внешних системах, YDB должна располагать информацией о внутренней структуре этих данных (например, о количестве, названиях и типах столбцов в таблицах). Некоторые источники предоставляют подобную метаинформацию о данных вместе с самими данными, тогда как для работы с другими, несхематизированными источниками требуется задание этой метаинформации извне. Последней цели служат внешние таблицы (external tables).

Зарегистрировав в YDB внешние источники данных и (в случае необходимости) внешние таблицы, клиент может приступать к описанию федеративных запросов.

Коннекторы

В ходе выполнения федеративных запросов YDB необходимо обращаться по сети к сторонним системам хранения данных, для чего приходится использовать их клиентские библиотеки. Появление таких зависимостей негативно сказывается на объёме кодовой базы, времени компиляции и размере бинарных файлов YDB, а также на стабильности всего продукта в целом.

Перечень поддерживаемых источников данных для федеративных запросов постоянно расширяется.
Наиболее популярные источники, такие как S3, поддерживаются YDB нативно. Однако не всем пользователям требуется поддержка одновременно всех источников. Её можно включить опционально с помощью коннекторов - специальных микросервисов, реализующих унифицированный интерфейс доступа к внешним источникам данных.

В функции коннекторов входят:

  • Трансляция YQL-запросов в запросы на языке, специфичном для внешнего источника (например, в запросы на другом диалекте SQL или в обращения к HTTP API).
  • Организация сетевых соединений с источниками данных.
  • Конвертация данных, извлечённых из внешних источников, в колоночное представление в формате Arrow IPC Stream, поддерживаемом YDB.

Архитектура YDB Federated Query

Таким образом, благодаря коннекторам формируется слой абстракции, скрывающий от YDB специфику внешних источников данных. Лаконичность интерфейса коннектора позволяет легко расширять перечень поддерживаемых источников, внося минимальные изменения в код YDB.

Пользователи могут развернуть один из готовых коннекторов или написать свою реализацию на любом языке программирования по gRPC спецификации.

Перечень поддерживаемых внешних источников данных

Источник Поддержка
S3 Встроенная в ydbd
ClickHouse Через коннектор fq-connector-go
PostgreSQL Через коннектор fq-connector-go