Delta Lake は Databricks が提供するデータレイクソリューションで、データインジェスト、整理、管理から、クエリ、データのエクスポートまで、データライフサイクル全体を管理します。上流および下流のサードパーティ製ツールと組み合わせることで、Delta Lake を使用して高速で使いやすく、安全なデータレイクを構築できます。
背景情報
一般的なデータレイクソリューションでは、Alibaba Cloud Object Storage Service (OSS) やオンプレミスの Hadoop 分散ファイルシステム (HDFS) などのビッグデータストレージエンジンにさまざまな種類のデータを保存し、Spark や Presto などの分析エンジンに接続してデータを解析します。ただし、この方法には次の問題があります:
-
インポートに失敗すると、クリーンアップが困難なダーティデータが生成され、失敗したジョブの復旧も困難です。
-
ETL (抽出、変換、ロード) プロセスがないため、データ品質の監督が不十分になります。
-
読み取り操作と書き込み操作を分離するトランザクションサポートがないため、ストリーミングおよびバッチの読み取り/書き込み操作を独立して実行できません。
Delta Lake ソリューションは次のように動作します:
-
データベースにおけるメタデータ管理と同様に、ビッグデータストレージ層の上にデータ管理レイヤーを追加します。メタデータはデータと同じ場所に保存され、データウェアハウスとデータレイクに示されているように、ユーザーから参照できます。
-
Delta Lake はメタデータ管理に基づいて、原子性、一貫性、分離性、耐久性 (ACID) を導入します。これにより、インポート失敗によるダーティデータの問題と、データインジェスト中に読み取り/書き込みの分離性がない問題を解決します。
-
メタデータにはソーステーブルの列が格納され、Delta Lake はインポート時にデータを検証してデータ品質を確保します。
-
トランザクションサポートにより、バッチおよびストリーミングの読み取り/書き込み操作を分離して実行できます。
ACID は、信頼性の高いデータベーストランザクションを保証する 4 つの主要な特性である、原子性、一貫性、分離性、耐久性の頭字語です。
図 1. データウェアハウスとデータレイク
次の表は、データウェアハウス、データレイク、Delta Lake を比較したものです。
|
比較基準 |
データウェアハウス |
データレイク |
Delta Lake |
|
アーキテクチャ |
コンピューティングとストレージが結合または分離 |
コンピューティングとストレージが分離 |
コンピューティングとストレージが分離 |
|
ストレージ管理 |
厳格、独自仕様 |
ネイティブ形式 |
共通形式、軽量 |
|
シナリオ |
レポーティング、分析 |
レポーティング、分析、データサイエンス |
レポーティング、分析、データサイエンス |
|
柔軟性 |
低い |
高い |
高い |
|
データ品質と信頼性 |
非常に高い |
低い |
高い |
|
トランザクション |
サポート |
非サポート |
サポート |
|
パフォーマンス |
高い |
低い |
高い |
|
拡張性 |
実装によって異なる |
高い |
高い |
|
ユーザー |
管理者 |
管理者、データサイエンティスト |
管理者、データサイエンティスト |
|
コスト |
高い |
低い |
低い |
シナリオ
Delta Lake はクラウドベースのデータレイク管理に適しており、次のシナリオをサポートします:
-
リアルタイムクエリ:データは上流ソースから Delta Lake にリアルタイムで流れ込み、すぐにクエリ可能になります。たとえば、変更データキャプチャ (CDC) のシナリオでは、Spark Streaming を使用して binlog をリアルタイムに消費できます。Delta Lake の merge 機能は、上流データをデータレイクにマージし、その後 Hive、Spark、または Presto でクエリできます。ACID がサポートされているため、データインジェストとクエリは分離され、ダーティリードを防止します。
-
一般データ保護規則 (GDPR) 対応の削除または更新:一般的なデータレイクソリューションは、削除や更新をサポートしていません。これらのソリューションでデータを変更するには、ローデータを削除し、ストレージに書き戻す必要があります。Delta Lake は、データの直接的な削除と更新をサポートします。
-
CDC を使用したリアルタイムデータ同期:Delta Lake の merge 機能を使用して、上流データをリアルタイムでデータレイクにマージするストリーミングジョブを実行できます。
-
データ品質管理:Delta Lake のスキーマ検証を使用して、インポート中に異常データをフィルタリングしたり、さらに処理したりできます。
-
スキーマエボリューション:データスキーマは固定ではありません。Delta Lake では API を使用してデータスキーマを変更できます。
-
リアルタイム機械学習:機械学習のシナリオでは、作業の多くがデータ処理 (クレンジング、変換、特徴抽出) に費やされます。通常、履歴データとリアルタイムデータを別々に処理する必要があります。Delta Lake は、データ処理パイプライン全体を単一の信頼できるリアルタイムストリームに統合することで、これを簡素化します。データのクレンジング、変換、特徴量エンジニアリングなどの操作はストリームアクションとなり、履歴データとリアルタイムデータを別々に処理する必要がなくなります。
オープンソース Delta Lake との比較
E-MapReduce (EMR) の Delta Lake は、SQL、Optimize などへの追加サポートにより、オープンソース Delta Lake を拡張しています。次の表は、EMR の Delta Lake とオープンソース Delta Lake (バージョン 0.6.1) の機能を比較したものです。
|
機能 |
EMR Delta |
オープンソース Delta |
|
SQL |
|
|
|
API |
|
|
|
Hive connector |
サポート |
サポート |
|
Presto connector |
サポート |
サポート |
|
Parquet |
サポート |
サポート |
|
ORC |
非サポート |
非サポート |
|
テキスト形式 |
非サポート |
非サポート |
|
データスキッピング |
サポート |
非サポート |
|
ZOrder |
サポート |
非サポート |
|
ネイティブ DeltaLog |
サポート |
非サポート |