Delta Lake は、Databricks によって開発されたデータレイクソリューションです。Delta Lake は、データレイクへのデータの書き込み、データの管理、データのクエリ、およびデータレイクからのデータの読み取りに使用できる機能を提供します。 Delta Lake とサードパーティのアップストリームおよびダウンストリームツールを使用することで、使いやすく安全なデータレイクを構築できます。
背景情報
従来のデータレイクソリューションでは、Alibaba Cloud Object Storage Service(OSS)や Hadoop Distributed File System(HDFS)などのビッグデータストレージエンジンを使用してデータレイクを構築し、さまざまな種類のデータをデータレイクに格納できます。 データレイクを Spark や Presto などの分析エンジンに接続して、データレイクに格納されているデータを分析できます。 従来のデータレイクソリューションには、次の欠点があります。
- データの取り込みが失敗する可能性があります。 データの取り込みが失敗した場合、ダーティデータのクリーンアップとジョブリカバリが必要になります。
- 抽出、変換、ロード(ETL)操作がないため、データ品質管理は利用できません。
- ストリーミング処理とバッチ処理では、トランザクションを使用して読み取りと書き込みを分離することはできません。
Delta Lake ソリューションの説明:
- このソリューションは、ビッグデータストレージレイヤーの上にデータ管理レイヤーを提供します。 このデータ管理レイヤーは、データベースのメタデータ管理モジュールと同様の方法で機能します。 Delta Lake メタデータはデータと共に保存され、ユーザーに表示されます。 データウェアハウスとデータレイク は例を示しています。
- Delta Lake は、メタデータ管理に基づいて atomicity、consistency、isolation、durability(ACID)トランザクションを提供し、不正なデータの取り込みを防ぎ、データの取り込み中の読み取りと書き込みを分離します。 これにより、ダーティデータが生成されないことも保証されます。
- フィールド情報はメタデータに保存されます。 Delta Lake は、データの取り込み中にデータを確認して、データ品質を確保します。
- トランザクション機能は、ストリーミング処理とバッチ処理で読み取りを書き込みから分離します。
説明 ACID は、データベーストランザクションの 4 つの基本的なプロパティを指します。 4 つの基本的なプロパティは、原子性、一貫性、分離性、および耐久性です。

次の表は、データウェアハウス、従来のデータレイク、および Delta Lake を比較したものです。
| 項目 | データウェアハウス | データレイク | Delta Lake |
| アーキテクチャ | 統合または分離されたコンピューティングとストレージ | 分離されたコンピューティングとストレージ | 分離されたコンピューティングとストレージ |
| ストレージ管理 | 厳格で非一般的な形式 | ネイティブ形式 | 一般的で軽量な形式 |
| シナリオ | レポートと分析 | レポート、分析、およびデータサイエンス | レポート、分析、およびデータサイエンス |
| 柔軟性 | 低 | 高 | 中 |
| データ品質と信頼性 | 高 | 低 | 中 |
| トランザクション | サポートされている | サポートされていない | サポートされている |
| パフォーマンス | 高 | 低 | 中 |
| スケーラビリティ | 特定のシナリオに基づく | 高 | 高 |
| 典型的なユーザー | 管理スタッフ | 管理スタッフとデータサイエンティスト | 管理スタッフとデータサイエンティスト |
| コスト | 高 | 低 | 低 |
シナリオ
Delta Lake は、クラウドベースのデータレイクを管理するための理想的なソリューションです。 Delta Lake は、次のシナリオで使用できます。
- リアルタイムクエリ: アップストリームデータはリアルタイムで Delta Lake に取り込まれ、リアルタイムクエリをサポートします。 たとえば、Change Data Capture(CDC)シナリオでは、Spark Streaming ジョブを使用してバイナリログをリアルタイムで消費する場合、Delta Lake によって提供されるマージ機能を使用して、アップストリームデータの更新をリアルタイムで Delta Lake にマージできます。 このようにして、Hive、Spark、または Presto を使用してデータをリアルタイムでクエリできます。 ACID トランザクションは、データの書き込みをクエリから分離して、ダーティリードを回避します。
- 一般データ保護規則(GDPR)リクエストによるデータの削除と更新: 従来のデータレイクは、データの削除や更新をサポートしていません。 データを削除する場合は、手動でデータを削除する必要があります。 データを更新する場合は、元のデータを手動で削除し、更新されたデータをストレージに書き込む必要があります。 Delta Lake は、データの削除と更新をサポートしています。
- CDC に基づくリアルタイムデータ同期: Delta Lake によって提供されるマージ機能を使用して、ストリーミングジョブを実行して、アップストリームデータの更新をリアルタイムで Delta Lake にマージできます。
- データ品質管理: Delta Lake は、データの取り込み中に異常データを削除できるスキーマ検証機能を提供します。 この機能を使用して、異常データを処理することもできます。
- データ進化: データスキーマを変更する必要がある場合があります。 Delta Lake は、データスキーマを変更するための API を提供します。
- リアルタイム機械学習: 機械学習シナリオでは、データのクレンジング、変換、特性評価など、データの処理にかなりの時間がかかる場合があります。 また、履歴データとリアルタイムデータを個別に処理する必要があります。 Delta Lake は、これらのワークフローを簡素化します。 Delta Lake は、データのクレンジング、変換、および特性評価を行うための完全で信頼性の高いリアルタイムストリームを提供します。 履歴データとリアルタイムデータを個別に処理する必要はありません。
オープンソース Delta Lake との比較
EMR Delta Lake は、オープンソース Delta Lake よりもパフォーマンスが高くなっています。 たとえば、EMR Delta Lake はより多くの SQL ステートメントをサポートし、最適化機能を提供します。 次の表に、Delta Lake の基本機能を示し、EMR Delta Lake とオープンソース Delta Lake 0.6.1 を比較します。
| 機能 | EMR Delta Lake | オープンソース Delta Lake |
| SQL |
|
|
| API |
|
|
| Hive コネクタ | サポートされている | サポートされている |
| Presto コネクタ | サポートされている | サポートされている |
| Parquet | サポートされている | サポートされている |
| ORC | サポートされていない | サポートされていない |
| テキスト形式 | サポートされていない | サポートされていない |
| データスキップ | サポートされている | サポートされていない |
| Z オーダー | サポートされている | サポートされていない |
| ネイティブ DeltaLog | サポートされている | サポートされていない |