Apache Icebergなどのテーブル形式は、大規模なデータクエリの迅速かつ効果的なソリューションとしてデータレイクやデータメッシュの戦略を選択した場合に、その一部として採用されています。適切なテーブル形式を選択することで、データのパフォーマンス、相互運用性、使いやすさが向上し、組織はデータの可能性を最大限に引き出せるようになります。Icebergテーブル形式は他のオープンソーステーブル形式と比較してユニークであり、エンジンやファイル形式に依存しない、非常にコラボレーティブで透明性の高いオープンソースのプロジェクトを実現します。ここでは、大規模データセットの分析にオープンなテーブル形式を使用するメリットと、オープンソーステーブル形式のなかで特にIcebergの人気が急速に高まっている理由について解説します。
テーブル形式によるデータレイクの合理化
データレイクは、大量の半構造化データと非構造化データをネイティブファイル形式で保存する場合に最適です。データレイクを使用する組織は、複数のデータソースから絶え間なく到来するペタバイト単位の情報を包括的に探索、洗練、分析できます。
しかし、データレイク内の個々のファイルに含まれている情報は、クエリエンジンやその他のアプリケーションが効果的にプルーニング、タイムトラベル、スキーマ進化などを行うには不充分です。結果的に、こうした管理タスクの実行は困難で時間がかかります。テーブル形式は、従来のリレーショナルデータベースでSQLテーブルが提供するものと同様の機能をメタデータを使用して実現することで、この問題を解決します。テーブル形式では、テーブル、テーブルのスキーマと履歴、テーブルを構成する各ファイルが明示的に定義されます。さらに、Icebergなどのテーブル形式はACIDコンプライアンスに準拠しているため、複数のアプリケーションで同時に同一データを安全に扱えます。
APACHE ICEBERGとは
Icebergはもともと、ApacheのHive Hadoopプロジェクトで直面したさまざまな課題に対処するためにNetflixが開発したオープンソーステーブル形式です。そして2018年に行われた最初の開発の後に、完全にオープンソース化されたオープン管理のプロジェクトとしてNetflixからApacheソフトウェア財団に寄贈されました。その後、初期バージョンの多くの欠点が改善され、すぐに非常に人気の高いオープンソーステーブル形式となりました。
APACHE ICEBERGテーブル形式のメリット
Icebergテーブル形式は、データレイクアーキテクチャの強化に役立つさまざまな機能を備えています。
表現力の高いSQL
Icebergは、柔軟なSQLコマンドを完全にサポートしています。そのため、既存の行の更新、新しいデータのマージ、ターゲットを絞った削除などのタスクを行えます。また、Icebergを使用してデータファイルを書き換えることで、読み取りパフォーマンスを改善できます。delete deltaによって更新頻度を高めることも可能です。
スキーマ進化
Icebergは、スキーマ進化を完全にサポートします。Icebergテーブルのスキーマ更新では、メタデータのみが変更されます。データファイル自体は影響を受けません。スキーマ進化の変更には、追加、ドロップ、名前変更、並べ替え、型の昇格が含まれます。
パーティション進化
パーティションは、大規模なテーブル内の類似した行をグループ化して複数の小さなテーブルに分割することにより、データの一部のみにアクセスする必要があるクエリの読み取りとロードにかかる時間を短縮します。パーティションの仕様は、古い仕様に記述されている古いデータを変更しなくても進化します。パーティションの各バージョンに関連付けられたメタデータは、個別に格納されています。
タイムトラベルとロールバック
Icebergのタイムトラベル機能は、同じテーブルスナップショットの再現性のあるクエリの実行を可能にして、ユーザーが以前の変更を検証できるようにします。このロールバック機能を使用してテーブルを前の状態にリセットすると、簡単にエラーのない状態に戻せます。
トランザクションの一貫性
データレイクやデータメッシュのアーキテクチャに保存されているデータは、組織内の複数の独立したアプリケーションで同時に利用できます。これは大きなメリットですが、特に複数のユーザーが同一データに対して同時に書き込みを行う場合などには、甚大なリスクが生じる可能性があります。しかし、IcebergではACIDトランザクションを大規模に実現できるため、複数のライターの同時実行が可能です。ACIDを満たしているため、リーダーはライターからの部分的な変更やコミットされていない変更の影響を受けません。ライターが変更をコミットすると、Icebergはテーブルのデータファイルとメタデータの変更不可能なバージョンを新たに作成します。
クエリの高速化
Icebergは巨大な分析データセットでの使用を目的として設計されており、高速スキャンプランニング、不要なメタデータファイルのプルーニング、マッチデータを含んでいないデータファイルのフィルタリングなど、クエリの高速化と効率化のためのさまざまな機能を備えています。
活発なユーザーや貢献者で構成された活気あるコミュニティ
Icebergは、Apacheソフトウェア財団の主力プロジェクトの一つです。Apache Parquet、Apache Avro、Apache ORCなどのさまざまな処理エンジンやファイル形式に対応していることから、優れた商用ユーザーを幅広く引きつけており、継続的な成功のための積極的な貢献が行われています。
APACHE ICEBERGとSNOWFLAKE
Snowflakeデータクラウドでは、Parquet、Avro、ORC、JSON、XMLなどのさまざまなファイル形式を使用して、ビッグデータワークロードを簡単に実行できます。Snowflakeのフルマネージドの内部テーブル形式は、暗号化、トランザクションの一貫性、バージョン管理、フェイルセーフ、タイムトラベルなどのストレージメンテナンスを大幅に簡素化します。しかし、規制などの制約が存在する組織では、すべてのデータをSnowflakeに保管することができない場合や、オープン形式でデータを外部に保管したい場合があります。Snowflakeデータクラウドは、現在パブリックプレビュー中のIcebergテーブルを通じてApache Icebergをサポートしています。Icebergテーブルは、お客様が管理するクラウドストレージに、Snowflakeのテーブルのパフォーマンスと馴染みのあるクエリセマンティクスをもたらします。
Snowflakeユーザーは、データの真の価値を実現する際の一般的な障壁に対処する必要はありません。Snowflakeは、データサイロの解消、複雑なデータセットの社内メンバーや外部データパートナーとの安全な共有、膨大なデータセットに対する大規模な分析タスクの迅速で効率的な実行を可能にします。
Snowflakeのさまざまな機能について、ぜひご自身でお確かめください。Snowflakeのご試用は、無料トライアルの登録からお申し込みいただけます。