モダンデータレイクにおけるApache Icebergの5つの主要機能

ビッグデータは2000年代後半の発足以来、大きく進化しました。多くの組織はこのトレンドに迅速に適応し、Apache Hadoopのようなオープンソースツールを使用してビッグデータプラットフォームを構築しました。その後、これらの企業は急速に進化するデータ処理ニーズの管理に苦労するようになりました。彼らはスキーマレベルの変更、パーティションスキームの進化、データを過去に遡って見ることに関する課題に直面しました。

私は2010年代に大手テクノロジー企業とヘルスケア顧客のために大規模な分散システムを設計する際に、同様の課題に直面しました。いくつかの業界では、銀行、金融、ヘルスケアの規制に従うためにこれらの機能が必要です。Netflixのようなデータ駆動型の企業も同様の課題に直面しました。彼らは「アイスバーグ」と呼ばれるテーブルフォーマットを発明し、既存のデータファイルの上に位置し、そのアーキテクチャを活用して重要な機能を提供します。これはデータコミュニティで急速に関心を集め、すぐに主要な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