Прошел год с тех пор, как Databricks купила Tabular за 1 миллиард долларов, оживив сонный мир табличных форматов.
Люди играли с этим. Это, несомненно, захватило воображение людей …
Компания data lake, основанная на Apache Spark, создала табличный формат Delta Lake, чтобы помочь пользователям использовать механизмы обработки запросов к данным за пределами своих систем. С приобретением Tabular компания выкупила создателей конкурирующего формата Iceberg. Проект был разработан в Netflix Райаном Блу и Дэном Уиксом, соучредителями Tabular, и передан в дар Apache Software Foundation в качестве проекта с открытым исходным кодом в ноябре 2018 года.
Но шесть лет спустя, как раз после слияния Databricks и Tabular, появились признаки слияния между этими двумя форматами молодая база данных DuckDB предложила альтернативную архитектуру, вызвавшую восторг, любопытство и настороженность у других членов сообщества.В беседе с The Register вице-президент AWS и выдающийся инженер Энди Уорфилд сказал, что команда инженеров облачного гиганта была «очень взволнована» этим объявлением. «Это было широко распространено среди команд, и люди играли с этим. Это, безусловно, захватило воображение людей», — сказал он.Как объяснил на прошлой неделе El Reg, DuckDB, которая запустила базу данных аналитики в процессе работы в 2022 году, предложила свой собственный формат таблиц DuckLake и расширение для DuckDB, позволяющее ей выступать в качестве клиент-серверного хранилища данных или система хранения данных на основе одного набора данных — в S3 или другом хранилище больших двоичных объектов. Также была предложена база данных для управления и хранения метаданных, в отличие от Delta Lake и Iceberg, которые не используют такую базу данных.
Сообщество разработчиков данных и аналитиков проявило большой интерес к DuckDB как к клиенту для ноутбуков с одним хостом на базе DuckDB, который имеет например, по словам Уорфилда, это «действительно хороший API запросов и визуализатор данных».
DuckLake показывает, что команда DuckDB — формат с открытым исходным кодом, но поддерживается компанией DuckDB Labs — правильно заметила некоторые недостатки в текущей реализации форматов открытых таблиц (OTF), таких как Delta Lake и Iceberg.
«Когда вы начинаете с этого сериализованного постоянного формата, в нем не учитывается большая часть требований к производительности, которые существовали бы на уровне ввода-вывода для базы данных… они только что заметили, что все эти элементы как бы отсутствуют, а при существующем пути передачи данных для Iceberg и других OFT в конечном итоге приходится выполнять множество обратных переходов в хранилище, что потенциально довольно дорого с точки зрения производительности. Что делает DuckLake, так это заменяет этот уровень полного управления метаданными схемой базы данных и серверной частью базы данных», — сказал он.Тем не менее, в Iceberg, S3 и, скорее всего, в других сообществах OTF уже предпринимались шаги для решения тех же проблем, добавил Уорфилд из AWS.
«Они действительно сосредоточены на решении проблем производительности на этом уровне, в основном переходя от постоянного определения этих таблиц на диске к чему-то гораздо более высокому по производительности. Многие проблемы, о которых упоминали разработчики Duck в плане снижения производительности, можно решить с помощью некоторых предлагаемых API в Iceberg, таких как scan API, а также с помощью действительно агрессивного кэширования на стороне клиента, которое DuckDB [уже] выполняет для Iceberg.
«Мы увидим, как другие OFT будут работать быстрее и с большей производительностью, развивая средний уровень и, возможно, развивая свои API. DuckDB вырвался вперед в плане предоставления действительно интересной демонстрации того, что там возможно», — сказал он.Другие были настроены более скептически. Джейк Йе (Jake Ye), ветеран AWS и инженер-программист в компании LanceDB, занимающейся базами данных искусственного интеллекта, написал в блоге, что, хотя DuckDB предлагает базу данных SQL для метаданных, отрасль «все больше консолидируется вокруг протоколов на основе JSON в качестве основы для взаимодействия».
«Это очевидно не только в том, что DuckDB предлагает базу данных SQL для метаданных. пространство каталогов с такими стандартами, как Iceberg REST Catalog (IRC), Polaris, Gravitino, Unity, а также в области искусственного интеллекта с MCP и A2A. Это также было ключевым дизайнерским решением, лежащим в основе спецификации пространства имен Lance. Хотя определение спецификации в SQL — интересная идея, она создает реальные проблемы с внедрением без хорошей структурированной расширяемости, управления версиями и разделения на транспортном уровне», — написал он в своем посте в LinkedIn.
Реализовано в проектах
Рассел Спитцер Главный инженер Snowflake сказал нам, что многие проекты «довольно далеко продвинулись в разработке Iceberg», которую компания cloud data warehouse, data lake и analytics поддерживала с момента появления табличного формата.Он также сказал, что предложения DuckDB направлены на решение проблем, которые сообщество Iceberg уже решает. «Для меня фактическое хранение метаданных — это деталь реализации, и независимо от того, храните ли вы их в файловой системе, или в каталоге, или что-то в этом роде, или в реляционном хранилище данных, не так важно, как API, которые вы используете для взаимодействия с ними».
Важным здесь является спецификация REST, которая «за кулисами» может хранить информацию о метаданных, где находятся файлы. «Все эти данные могут храниться в любой системе, которую вы хотите, или кэшироваться в памяти. Это даже не обязательно должно быть частью какой-либо реляционной системы. У вас может быть слой кэша, который полностью независим от реляционной семантики», — сказал он.
Между тем, Спитцер, бывший инженер-программист Apple, работавший над проектами Iceberg, сказал, что его беспокоит универсальность SQL для обработки метаданных.
«По сути, он предоставляет пользователям прямой доступ к базовому уровню сохраняемости. В Iceberg, если бы вы создали систему, в которой для выполнения фиксации вы бы, по сути, вошли и написали свои собственные файлы вручную, а не использовали установленный SDK. В SQL вы можете делать все, что угодно. Вы можете зайти и изменить любую ячейку в любой строке в любое время, но это может быть не связано с транзакциями в семантике вашего lakehouse. Вы хотите лишить пользователей возможности делать практически все, что угодно», — сказал он.
Между тем, Iceberg не стоит на месте. Выпущенная ранее в этом месяце версия 3 обещает поддержку новых типов версий, что предполагает сотрудничество между основными игроками сообщества Iceberg, сказал Спитцер. «У нас будут пользователи, у которых больше не будет ограничений по полной схеме. Это действительно здорово для пользователей Интернета вещей или людей, у которых есть источники данных, которые они не могут контролировать. Вы можете себе представить, что вы работаете с системой обработки сенсорных данных, и датчики были обновлены вне вашего контроля, а теперь, внезапно, появилось другое поле с другим типом данных, и вы можете сделать это, не меняя схему своей таблицы», — сказал он.
В условиях, когда организации с многомиллиардным доходом, такие как AWS, Snowflake и даже Databricks, пытаются управлять будущим Iceberg, DuckDB и DuckLake будут прилагать все усилия, чтобы увеличить собственные обороты. ®