R2 Data Catalog は、R2 バケットに直接組み込まれた、マネージドの Apache Iceberg ↗ データカタログです。標準の Iceberg REST カタログインターフェースを公開するため、すでに使っている Spark、Snowflake、PyIceberg などのエンジンを接続できます。
R2 Data Catalog を使うと、ログ分析、ビジネスインテリジェンス、データパイプラインなど、さまざまな分析ワークロード向けに、R2 バケットをデータウェアハウスやレイクハウスへ変えやすくなります。R2 はエグレス料金がゼロのため、データの利用者は異なるクラウド、データプラットフォーム、リージョンからアクセス・分析しても、転送コストは発生しません。
R2 Data Catalog を始めるには、R2 Data Catalog: はじめに を参照してください。
Apache Iceberg ↗ は、オブジェクトストレージ上の大規模な分析データセット向けに設計されたオープンテーブルフォーマットです。主な機能は次のとおりです。
- ACID トランザクション - データの整合性を保ったまま、信頼性の高い同時読み書きができます。
- 最適化されたメタデータ - インデックス付きメタデータでクエリを高速化し、コストの高いフルテーブルスキャンを避けます。
- 完全なスキーマ進化 - データを書き換えずに、列の追加、名前変更、削除ができます。
Iceberg は、Apache Spark、Trino、Snowflake、DuckDB、ClickHouse などのエンジンで 広くサポート ↗ されており、コミュニティも急速に広がっています。
Iceberg のデータファイルとメタデータファイル自体は R2 などのオブジェクトストレージに直接置かれます。ただし、テーブルの一覧と、現在のメタデータへのポインターは、データカタログが中央で追跡する必要があります。
データカタログは、図書館の索引システムに似ています。本(データ)は棚(オブジェクトストレージ)に物理的に分散していますが、索引は、どの本があるか、どこにあるか、最新版はどれかを示す唯一の情報源です。この索引がなければ、読者(クエリエンジン)は本を探すのに時間を浪費し、古い版を手に取ったり、新しい本を見つけられない場所に置いたりするおそれがあります。
同様に、データカタログは一貫した協調アクセスを保証します。複数のクエリエンジンが、競合やデータ破損なしに、同じテーブルを安全に読み書きできます。