За последнее десятилетие произошел кембрийский взрыв новых аналитических баз данных и механизмов запросов, однако протоколы, которые эти системы используют для передачи данных друг другу, были созданы для анализа потоков, ориентированных на строки, из транзакционных систем.
Это несоответствие, которое замедляет передачу и чрезмерно потребляет ресурсы ЦП.
Многие из этих аналитических систем используют ODBC (Open Database Connectivity) или его Java-ответвление JDBC в качестве конвейера или DB-API для Python. Но все эти протоколы копируют данные из источника по строкам, а не по столбцам, что было бы естественным форматом для столбцово-ориентированной базы данных, отметил Ян Кук, основной разработчик платформы анализа данных с открытым исходным кодом Apache Arrow.
Кук — один из группы инженеров, разбирающихся в Arrow, которые только что основали компанию Columnar, чтобы преодолеть это узкое место в коммуникации, используя ADBC (подключение к базе данных Arrow) в качестве соединительного API и протокола, который, в свою очередь, использует формат Apache Arrow.
Компания собрала начальное финансирование в размере 4 миллионов долларов и на прошлой неделе официально выпустила первую партию драйверов ADBC, а также DBC, интерфейс командной строки и связанные инструменты для загрузки, установки, загрузки и настройки драйверов ADBC для различных сред.
Arrow — это «история большого успеха, но есть и последний рубеж, который Arrow только начал пересекать в последние пару лет, и он вытесняет доминирующие стандарты подключения к данным, такие как ODBC и JDBC, которые довольно устаревают и крайне неэффективны, в частности, для приложений анализа данных», — сказал Кук в интервью TNS. «И это то, над чем мы работаем в Columnar».
Понимание столбчатого формата Apache Arrow
Apache Arrow — чрезвычайно популярный двоичный формат для обмена столбчатыми данными, созданный в 2016 году Уэсом МакКинни (который также является автором Python Pandas). Он предоставил возможность непрерывной записи столбчатых данных в рабочую память. Приложения могли бы обмениваться данными там без копирования, а ответы на запросы можно было бы получать быстрее.
Arrow реагирует на кардинальные изменения в использовании большей части данных базы данных, смещая акцент со строк на столбцы.
Традиционный механизм копирования данных копирует данные по строкам. Каждая строка клиента может представлять клиента с отдельными полями для адреса, номера телефона и пола. Если начальнику нужен был список всех подписчиков, имело смысл скопировать его построчно.
Но поскольку анализ этих данных стал более важным, аналитики обнаружили, что им, возможно, требовалось только одно или два конкретных поля или столбца (например, для почтового индекса и пола).
Перемещая эти данные в другую систему или представляя их в качестве результатов запроса, драйвер базы данных копировал столбец по одному полю за раз после сканирования всей строки.
По сути, это потоковый процесс, Arrow копирует в рабочую память только необходимые столбцы, по существу устраняя процесс сериализации и десериализации.
Таким образом, Arrow стал широко использоваться для обмена данными между приложениями, написанными на разных языках, а коннекторы были созданы практически для каждого языка и платформы.
Из документации Arrow.
Представляем ADBC: протокол подключения к базе данных Arrow
Подобно тому, как ODBC является связующим звеном для объединения отдельных систем реляционных баз данных, ADBC призван стать лингва-франка для аналитических систем баз данных, предлагая высокоскоростное соединение между ними с использованием Arrow.
Кук и его коллеги, тогда работавшие в поставщике SQL-движков Voltron Data, начали работу над ADBC как API для выполнения запросов к базам данных и хранилищам данных и получения результатов в формате Arrow.
Каноническая версия спецификации написана на c cadbc.h, есть диалекты и для других языков.
Ранние работы вызвали большой интерес: были созданы соединители для BigQuery, Dremio, Databricks и Snowflake.
Snowflake и DuckDB внедрили API. DuckDB обнаружила, что во многих приложениях время выполнения запросов сокращается более чем на 90%. Microsoft приняла его для PowerBI.
Роль колонки в стимулировании внедрения ADBC
К моменту своего запуска Columnar выпустила драйверы ADBC — для Amazon Redshift, MySQL, Microsoft SQL Server и Trino — и раскрыла планы по поддержке большего количества баз данных, механизмов запросов и платформ данных.
Глядя на будущие возможности, Arrow также могла бы работать в сфере искусственного интеллекта, заявил Кук в своем блоге, объяснив, что этот формат намного превосходит пропускную способность JSON-RPC, высмеивая его крайне неэффективную кодировку base64. Экосистема CUDA для графических процессоров построена на табличной модели данных, которая также может выиграть от более быстрой загрузки.
«В течение следующих года или двух мы собираемся поговорить со многими компаниями в этой сфере и попытаться рассказать им о преимуществах использования Arrow», — сказал Кук.
Посевной раунд Columnar на сумму 4 миллиона долларов возглавил Bessemer Venture Partners.
ТЕНДЕНЦИОННЫЕ ИСТОРИИ YOUTUBE.COM/THENEWSTACK Технологии развиваются быстро, не пропустите ни одной серии. Подпишитесь на наш канал YouTube, чтобы смотреть все наши подкасты, интервью, демонстрации и многое другое. ПОДПИСАТЬСЯ Группа, созданная в Sketch. Джоаб Джексон — старший редактор The New Stack, специализирующийся на облачных вычислениях и системных операциях. Он освещал вопросы ИТ-инфраструктуры и ее развития более 30 лет, в том числе работал в IDG и Government Computer News. До этого он… Подробнее от Джоава Джексона