Софт

Поддержка Snowflake для Apache Iceberg переходит на GA

Поддержка Snowflake для Apache Iceberg переходит на GA

В Snowflake добавили поддержку формата таблиц Iceberg, и в результате появилась возможность работать с данными, которые часто встречаются в озерах и хранилищах данных.

В последнее время много разговоров вокруг Apache Iceberg. Что же делает его таким особенным?

Предприятия часто выходят за рамки реляционных хранилищ данных и размещают данные в объектных хранилищах, подходящих для их озер данных. Если вы используете Amazon S3 в качестве базового объектного хранилища, вы можете хранить на нем практически любые объемы данных, вплоть до экзабайтов. Iceberg - это спецификация формата открытых таблиц, которая позволяет запрашивать данные S3 как таблицы SQL.

Важно отметить, что Iceberg - это не механизм запросов или хранения данных, а спецификация. На место механизма запросов ставится Snowflake. Iceberg позволяет Snowflake работать с этими файлами с соблюдением следующих требований:

  • ACID (атомарность, согласованность, изоляция, долговечность) транзакций.
  • эволюция схемы
  • Скрытое разбиение
  • снимки таблиц

Примером из Postgres, который изначально не может работать с такими форматами, является расширение pg_lakehouse, которое позволяет Postgres работать с Iceberg, взяв на себя роль DuckDB. DuckDB - это, конечно же, альтернатива SQLite для аналитических нагрузок; локальная первая, встраиваемая и подходящая для работы с наукой о данных.

С помощью pg_lake PostgreSQL получает возможность использовать высокопроизводительный аналитический механизм запросов.
Запросы передаются в DuckDB для обработки таких данных, как события, метрики, исторические снимки, данные о поставщиках, но это только одна часть уравнения - механизм запросов. Другая - это возможность получать данные из внешних хранилищ объектов, таких как S3, и таблиц в форматах Iceberg или Delta Lake.

Теперь настала очередь Snowflakes тоже перейти на Iceberg. Для этого файлы, совместимые с Iceberg, рассматриваются как таблицы Snowflake и предоставляют возможность напрямую взаимодействовать с базовыми данными. Таблицы Iceberg сочетают в себе производительность и семантику запросов обычных таблиц Snowflake с внешним облачным хранилищем, которым управляют клиенты. Поэтому они считаются идеальным решением для существующих озер данных, которые клиенты не могут или не хотят хранить в Snowflake; Snowflake в этом случае подключается к вашему хранилищу с помощью внешнего тома, а таблицы Iceberg не требуют затрат на хранение данных в Snowflake.

Чтобы создать таблицу Iceberg, сначала создается внешний том, на который делается ссылка в операторе CREATE таблицы.

CREATE OR REPLACE ICEBERG TABLE customer_iceberg (
c_custkey INTEGER,
c_name STRING,
c_address STRING,
c_nationkey INTEGER,
c_phone STRING,
c_acctbal INTEGER,
c_mktsegment STRING,
c_comment STRING
)
CATALOG='SNOWFLAKE'
EXTERNAL_VOLUME='iceberg_lab_vol'
BASE_LOCATION='';

После этого вы сможете выполнять над ним операции Sql DML.

Хотя добавление Iceberg является нововведением, впереди еще много работы, о которой говорится в дорожной карте:

  • Интеграция каталога Polaris: Каталог Apache Iceberg с открытым исходным кодом, основанный на открытой реализации REST API, будет способствовать устранению изолированности данных.
  • Более глубокая интеграция OneLake: Fabric OneLake будет использовать Iceberg для обеспечения двунаправленного доступа.
  • Более простые конвейеры пакетной и потоковой обработки данных для Iceberg: Динамические таблицы - очень популярная возможность в платформе Snowflake. Поддержка Iceberg в качестве формата хранения динамических таблиц упростит обработку данных в озерах данных.
  • Оптимизированная интеграция каталогов: Автоматическое обновление таблиц Iceberg упрощает и оптимизирует интеграцию Snowflake с таблицами Iceberg, управляемыми извне.
  • Гибкие источники: Решения, не создающие сложностей, являются ключевыми для начала работы с таблицами Iceberg в Snowflake. Прямые» предложения для Parquet и Delta Lake (в настоящее время они находятся в стадии частного предварительного просмотра) предоставляют возможность доступа к данным на месте, без необходимости загружать их в Snowflake.

В заключение следует отметить, что использование Iceberg растет, и поставщики интегрируют или планируют интегрировать его в свои продукты. В частности, для Snowflake поддержка Iceberg очень удобна, поскольку некоторые организации с нормативными или другими ограничениями либо не могут хранить все свои данные в Snowflake, либо предпочитают хранить их снаружи в открытых форматах.

Кроме того, Snowflake может стать хорошим выбором для тех, кто уже использует эту платформу, или для тех, кто ищет полностью управляемый механизм запросов.

Читайте также