Delta vs Iceberg: 決定的な評価基準としてのパフォーマンス

[Delta vs Iceberg : Performance as a decisive criteria \| by DataBeans \| Jun, 2022 \| Medium](https://databeans-blogs.medium.com/delta-vs-iceberg-performance-as-a-decisive-criteria-add7bcdde03d)の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

# イントロダクション

データレイクハウスは、単一のデータプラットフォーム上でデータレイクのスケーラビリティとコスト効率性と、データウェアハウスの信頼性、パフォーマンスを組み合わせるオープンデータアーキテクチャです。

簡単に言えば、データレイクハウスはデータウェアハウスのデータ品質、ガバナンス標準を維持しつつも、非構造化データ、準構造化データ、構造化データを含むすべてのタイプのデータを格納することができる唯一のデータアーキテクチャです。

データレイクハウスのキーとなる柱の一つはオープンフォーマットです。データを格納するフォーマットは、データレイクハウスを構築する際に行うべき最も重要な意思決定の一つとなる可能性が高いです。単にデータを格納するフォーマットを変更することで、新機能を解放し、全体的なシステムパフォーマンスを改善できるかもしれないということを考えることは興奮するものです。

残念ながら、情報が伝えられた状態での意思決定をサポートするために利用できるすべてのDeltaとIcebergとの間の比較は機能に限定されています。これが、TPC-DSベンチマークを用いてリアルワールドのシナリオをシミュレートすることでパフォーマンスの比較を行うモチベーションとなりました。

# TPC-DSとは？

[TPC\-DS](http://tpc.org/tpcds/default5.asp)はTransaction Processing Performance Council (TPC)によって定義されるデータウェアハウスのベンチマークです。TPCはリアルワールドのシナリオをシミュレートすることで、データベースシステムのパフォーマンスを客観的にテストするために使えるベンチマークを開発することを目的として1980年代後半にデータベースコミュニティで設立された非営利組織です。TPCはデータベース業界で大きな影響力を持っています。

TPC-DSのDSは「意思決定サポート(Decision support)」の略です。シンプルな集計処理から高度なパターン分析に至る合計で99個のクエリーが含まれています。

# 環境のセットアップ

このベンチマークでは、以下の表に示す環境コンポーネントで**Delta 1.0**と**Iceberg 0.13.0**を使用しました。

![](https://miro.medium.com/max/1400/1*_tzqnE8F9ca0XyQrvA1qhw.png)

上で議論したように、Delta ossで提供される[オープンソースのTPC-DSベンチマーク](https://github.com/delta-io/delta/tree/master/benchmarks)を使用し、Icebergをサポートするように拡張しました。ParquetフォーマットからDelta/Iceburgテーブルにデータをロードするのに要する時間であるロード性能を記録しました。次にクエリー性能を記録しました。それぞれのTPC-DSクエリーは三回実行され、平均実行時間を考慮するようにしました。

# ベンチマークの結果

## 1. 全体的なパフォーマンス

ベンチマークを完了した後で、テーブルのロードとクエリーの全体的なパフォーマンスは、IceberよりもDeltaが**3.5倍高速**であるという結果となりました。DeltaにデータをロードしTPC-DSクエリーを実行するのに**1.68時間**かかり、同じことをIcebergで行った場合には**5.99時間**かかりました。**図1**
![](https://miro.medium.com/max/1400/0*4k6gVSa6wdrBu7DD)
図1: ロード、クエリーのパフォーマンス

## 2. ロードのパフォーマンス

Parquetを対象のフォーマットにロードした際、DeltaはIceburgよりも1.3倍高速でした。**図2**
![](https://miro.medium.com/max/1400/0*qsgTwDiIEzq-l39t)
図2: ロードのパフォーマンス

ロードのパフォーマンスの結果をさらに解析するために、それぞれのテーブルの詳細なロード結果を調査し、テーブルサイズが大きくなるとロード時間に違いが出てくることに気づきました。例えば、customerテーブルをロードする際、DeltaとIcebergは実際には同じパフォーマンスでした。同時に、TPC-DSベンチマークで最も大きいテーブルの一つであるstore_salesテーブルでは、DeltaはIcebergよりも**1.5倍**高速でした。

これは、データをロードする際、DeltaはIcebergよりも高速かつスケーラブルであることを示しています。**図3**
![](https://miro.medium.com/max/1400/0*hyAncRjZgdHgUI88)
図3: ロードパフォーマンスの詳細

## 3. クエリーのパフォーマンス

TPC-DSを実行する際、Deltaは全体的にIcebergよりも**4.5倍高速**でした。Deltaですべてのクエリーを実行するのに**1.14時間**かかりましたが、Icebergでは同じ処理に**5.27時間**かかりました。**図4**
![](https://miro.medium.com/max/1400/0*bJFAPPmqbvkkwPPR)
図4: 合計のクエリーパフォーマンス

IcebergとDeltaは、**query34**、**query41**、**query46**、**query68**においては、ほぼ同じパフォーマンスを示しました。

しかし、程度は違いますが、その他のTPC-DSクエリーではDeltaはIcebergよりも高速でした。

**query72**のようないくつかのクエリーにおいては、DeltaはIcebergよりも**66倍高速**でした。

そして、他のクエリニーにおいては、DeltaとIcebergの違いは約**1.1倍**から**24倍**となり、Deltaの方が高速でした。**図5**
![](https://miro.medium.com/max/1400/0*xNVHvD6DjlXQC_5v)
図5: クエリーパフォーマンスの詳細

# 結論

ベンチマークを実行したことで、Deltaは予想できないほどのマージンでIcebergをスケーラビリティとパフォーマンスの点で上回ることがわかりました。このベンチマークはレイクハウスを構築する際にどのソリューションを選択するのかに関して、我々、我々のお客さまにとっての明確な回答となっています。

また、IcebergとDeltaは他の改善点を含めて改善を続けているということに言及することは重要であり、我々はこれらの改善点を注視し、より広いコミュニティに結果を共有していくつもりです。

このベンチマークに対して更なる分析を行ったり、自身の手で洞察を抽出したいのであれば、[こちら](https://github.com/saifeddine1992/TPC-DS-Benchmark-report.git)から完全なベンチマークレポートをダウンロードすることができます。