Топ 5 ключевых особенностей Apache Iceberg для современных озёр данных

Большие данные значительно эволюционировали с момента их появления в конце 2000-х годов. Многие организации быстро адаптировались к тенденции и построили свои платформы больших данных, используя инструменты с открытым исходным кодом, такие как Apache Hadoop. Позже эти компании столкнулись с проблемами управления быстро развивающимися потребностями в обработке данных. Они столкнулись с трудностями при обработке изменений на уровне схем, эволюции схем разбиения и возможностью возврата в прошлое для анализа данных.

Я сталкивался с аналогичными проблемами, проектируя крупномасштабные распределенные системы в 2010-х годах для крупной технологической компании и клиента в области здравоохранения. Некоторые отрасли нуждаются в этих возможностях, чтобы соблюдать нормативные требования в области банковского дела, финансов и здравоохранения. Компании, основанные на данных, такие как Netflix, также столкнулись с аналогичными проблемами. Они придумали формат таблиц под названием “Iceberg”, который располагается поверх существующих файлов данных и предлагает ключевые функции, используя свою архитектуру. Это быстро стало ведущим проектом ASF, так как вызвало стремительный интерес в сообществе данных. В этой статье я рассмотрю 5 ключевых функций Apache Iceberg с примерами и диаграммами.

1. Путешествие во времени

Рисунок 1: Путешествие во времени в формате таблицы Apache Iceberg (изображение создано автором)

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

SQL

 

2. Эволюция схемы

Эволюция схемы Apache Iceberg позволяет вносить изменения в вашу схему без значительных усилий или дорогостоящих миграций. По мере изменения потребностей вашего бизнеса вы можете:

  • Добавлять и удалять столбцы без какого-либо времени простоя или переписывания таблиц.
  • Обновлять столбец (расширение).
  • Изменять порядок столбцов.
  • Переименовывать существующий столбец.

Эти изменения обрабатываются на уровне метаданных без необходимости переписывать базовые данные.

SQL

 

3. Эволюция партиций

Используя формат таблицы Apache Iceberg, вы можете изменить стратегию партиционирования таблицы, не переписывая базовую таблицу или мигрируя данные в новую таблицу. Это стало возможным, поскольку запросы не ссылаются на значения партиций напрямую, как в Apache Hadoop. Iceberg хранит метаданные для каждой версии партиции отдельно. Это упрощает получение разбиений при запросе данных. Например, запрос таблицы на основе диапазона дат, когда таблица использовала месяц в качестве столбца партиции (до) в качестве одного разбиения и день в качестве нового столбца партиции (после) в качестве другого разбиения. Это называется планированием разбиений. См. пример ниже.

SQL

 

4. Транзакции ACID

Iceberg предоставляет надежную поддержку транзакций в терминах Атомарности, Согласованности, Изоляции и Долговечности (ACID). Он позволяет выполнять несколько параллельных операций записи, что обеспечивает высокую пропускную способность в тяжелых задачах с интенсивным использованием данных без ущерба для согласованности данных.

SQL

 

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

SQL

 

Он также поддерживает различные уровни изоляции, что позволяет балансировать производительность и согласованность в зависимости от требований.

SQL

 

Вот краткое резюме, показывающее, как Iceberg обрабатывает обновления и удаления на уровне строк.

Рисунок 2: Процесс удаления записей в Apache Iceberg (изображение создано автором)

5. Расширенные операции с таблицами

Iceberg поддерживает расширенные операции с таблицами, такие как:

  • Создание/управление снимками таблиц: это дает возможность иметь надежный контроль версий.
  • Быстрое планирование запросов и выполнение благодаря высоко оптимизированной метадате
  • Встроенные инструменты для обслуживания таблиц, такие как компактация и очистка неиспользуемых файлов

Iceberg разработан для работы со всеми основными облачными хранилищами, такими как AWS S3, GCS и Azure Blob Storage. Кроме того, Iceberg легко интегрируется с движками обработки данных, такими как Spark, Presto, Trino и Hive.

Заключительные мысли

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

Source:
https://dzone.com/articles/key-features-of-apache-iceberg-for-data-lakes