Экосистема Apache Arrow давно вышла за рамки просто формата колоночного хранения данных в памяти.
Сегодня это слой обмена данными, который лежит в основе современных аналитических движков, lakehouse-решений и файловых форматов (например, Apache Iceberg, Parquet), а также AI-систем.
В своей основе Arrow определяет, как данные представлены в памяти. Но экосистема вокруг него решает более широкие задачи: как эффективно перемещать данные и как выполнять запросы между различными системами.
Каждый подпроект отвечает за свою часть этой задачи.
Разберём основные компоненты:
Arrow — определяет независимый от языка программирования колоночный формат данных в памяти, который позволяет разным системам обмениваться данными без сериализации и десериализации (без дорогостоящих преобразований в JSON, CSV и другие форматы).
Arrow Flight — высокопроизводительный RPC-фреймворк, построенный на gRPC, который передаёт данные в формате Arrow между клиентом и сервером практически на максимальной скорости сети.
Flight SQL — протокол, расширяющий Flight и позволяющий передавать SQL-запросы и выполнять их удалённо.
ADBC (Arrow Database Connectivity) — стандартизированный API для взаимодействия с базами данных. Он упрощает выполнение запросов и работу с БД, используя данные в нативном формате Arrow (как через Flight SQL, так и без него).
Как эти компоненты работают вместе?
✅ Клиент использует драйвер ADBC для отправки SQL-запроса.
✅ ADBC передаёт запрос в библиотеку клиента Flight SQL.
✅ Библиотека упаковывает запрос и отправляет его через Arrow Flight RPC.
✅ Серверный endpoint Flight SQL выполняет запрос.
✅ Результаты возвращаются в виде потоков колоночных батчей Arrow, готовых для непосредственной обработки в памяти.
Что даёт такой подход
Сквозное колоночное перемещение данных: от представления в памяти до транспорта и выполнения запросов.
Минимизацию копирования и преобразования данных.
Более высокую производительность по сравнению с традиционными JDBC/ODBC-подходами.
Удобную интеграцию аналитических систем, движков обработки данных и AI-приложений.
Если упростить до одной фразы:
Arrow отвечает за формат данных в памяти, Flight — за их передачу, Flight SQL — за выполнение SQL-запросов, а ADBC — за удобный интерфейс доступа к этим возможностям из приложений.
@tldr_data
