Open6

Apache Icebergって?

dehio3dehio3

以下のリリースの内容が理解できていないので調べる
https://aws.amazon.com/jp/about-aws/whats-new/2024/11/amazon-data-firehose-continuous-replication-database-changes-apache-iceberg-tables-s3/

https://aws.amazon.com/jp/blogs/aws/replicate-changes-from-databases-to-apache-iceberg-tables-using-amazon-data-firehose/

  • PostgreSQL や MySQL などのデータベースで行われた変更をキャプチャし、その更新をAmazon Simple Storage Service (Amazon S3)上のApache Icebergテーブルに複製する、 Amazon Data Firehoseの新しい機能
  • データベースアプリケーションのトランザクションパフォーマンスに影響を与えることなく、データベース更新をストリーミングするためのシンプルなエンドツーエンドのソリューションを提供
  • 数分で Data Firehose ストリームを設定して、データベースから変更データキャプチャ (CDC)更新を配信できる
  • Data Firehose は、最初のデータスナップショットをキャプチャして継続的にレプリケートし、その後、選択したデータベーステーブルに加えられたすべての変更をデータストリームとしてキャプチャします
  • CDC ストリームを取得するために、Data Firehose はデータベースレプリケーションログを使用します
  • ウォーターマーク テーブルを作成する必要があります。ここでのウォーターマークとは、Data Firehose がデータベース テーブルの増分スナップショットの進行状況を追跡するために使用するマーカーです。
dehio3dehio3

https://aws.amazon.com/jp/what-is/apache-iceberg/

Apache Iceberg とは何ですか?
Apache Iceberg は、分散型のコミュニティ主導型の Apache 2.0 ライセンスの 100% オープンソースデータテーブル形式で、データレイクに保存されている大規模なデータセットのデータ処理を簡素化するのに役立ちます。データエンジニアが Apache Iceberg を使っているのは、どんな規模でも高速で効率的で信頼性が高く、データセットが時間の経過とともにどのように変化するかを記録できるからです。Apache Iceberg は、Apache Spark、Apache Flink、Apache Hive、Presto などの一般的なデータ処理フレームワークと簡単に統合できます。

dehio3dehio3

https://dev.classmethod.jp/articles/20241025-amazon-athena-s3-iceberg-disk-usage/

Icebergフォーマットは、単純なファイルサイズ比較では従来のS3ファイルレイアウト(TSV)より大きく見えますが、その高度な機能と最適化により、大規模データ分析において優れたパフォーマンスを発揮します。GZIP圧縮済みのTSVファイルやJSONファイルと比較して、Icebergフォーマットは約2倍のサイズになりますが、その追加サイズは高度な機能と引き換えに十分な価値があると言えるでしょう。

dehio3dehio3

Amazon AuroraのS3 Export機能は、データベースのデータをApache Parquet形式で出力することができますが、Apache Icebergテーブルとは異なる特性と用途があります。以下に、両者の主な違いを説明します。

Apache Parquet形式とApache Icebergの違い

1. データフォーマットの性質

  • Apache Parquet:

    • Parquetは列指向のデータフォーマットであり、データの圧縮と効率的なストレージを提供します。スキーマ情報を内包しており、分析用途に適しています。
    • AuroraのS3 Export機能では、データをParquet形式でエクスポートすることで、Amazon AthenaやAmazon Redshift Spectrumなどのツールを使用して直接分析が可能です[1][4][5]。
  • Apache Iceberg:

    • Icebergは、データレイクにおけるテーブル管理のためのオープンソースのテーブルフォーマットです。データのスキーマ進化、タイムトラベル、ACIDトランザクションのサポートなど、より高度なデータ管理機能を提供します。
    • Icebergは、データのメタデータを管理し、複数のデータ処理エンジン(Spark、Flinkなど)と統合して使用されます[29][30]。

2. データ管理と操作の機能

  • Aurora S3 Export:

    • AuroraのS3 Export機能は、データをエクスポートする際に、特定のデータベース、スキーマ、またはテーブルを選択してエクスポートすることができますが、エクスポート後のデータの管理や更新には限界があります。エクスポートされたデータは静的であり、後からの変更や追加は手動で行う必要があります[4][8]。
  • Apache Iceberg:

    • Icebergは、データのスキーマを動的に変更できるため、データの追加や削除が容易です。また、タイムトラベル機能により、過去のデータ状態に戻ることができるため、データの履歴管理が可能です。これにより、データの整合性を保ちながら、柔軟なデータ操作が実現します[29][30]。

3. 使用シナリオ

  • Aurora S3 Export:

    • 主にデータのバックアップや分析のために使用され、データを一度エクスポートした後は、分析ツールで直接利用することが目的です。データの更新やリアルタイム処理には向いていません[1][4][5]。
  • Apache Iceberg:

    • データレイクにおけるデータの管理や分析に特化しており、リアルタイムデータ処理や複雑なデータワークフローの構築に適しています。特に、データの更新や変更が頻繁に行われるシナリオでの利用が推奨されます[29][30]。

まとめ

AuroraのS3 Export機能は、データを静的にエクスポートして分析するための便利な手段ですが、Apache Icebergはデータの動的な管理や高度な分析機能を提供するためのフレームワークです。用途に応じて、どちらを選択するかが重要です。