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 を使用してバイナリログをリアルタイムで消費できます。Delta Lake のマージ機能は、上流のデータをデータレイクに更新し、Hive、Spark、または Presto でクエリを実行できます。ACID がサポートされているため、データインジェストとクエリは分離され、ダーティリードを防ぎます。
-
一般データ保護規則 (GDPR) のための削除または更新:一般的なデータレイクソリューションは、削除や更新をサポートしていません。これらのソリューションでデータを変更するには、生データをクリアしてストレージに再書き込みする必要があります。Delta Lake は、データの直接的な削除と更新をサポートします。
-
CDC によるリアルタイムデータ同期:Delta Lake のマージ機能を使用して、上流のデータをリアルタイムでデータレイクにマージするストリーミングジョブを実行できます。
-
データ品質管理:Delta Lake のスキーマ検証機能を使用して、インポート中に異常なデータをフィルタリングしたり、さらに処理したりできます。
-
スキーマの進化:データスキーマは固定されていません。Delta Lake では、API を介してデータスキーマを変更できます。
-
リアルタイム機械学習:機械学習のシナリオでは、多くの労力がデータ処理 (クレンジング、変換、特徴抽出) に費やされ、通常は履歴データとリアルタイムデータを別々に処理する必要があります。Delta Lake は、データ処理パイプライン全体を単一の信頼性の高いリアルタイムストリームに統合することで、これを簡素化します。データクレンジング、変換、特徴量エンジニアリングなどの操作はストリームアクションとなり、履歴データとリアルタイムデータを別々に処理する必要がなくなります。
オープンソースの Delta Lake との比較
EMR Delta Lake は、オープンソースの Delta Lake を拡張し、SQL、Optimize などのサポートを追加しています。次の表は、EMR Delta Lake とオープンソースの Delta Lake (バージョン 0.6.1) の機能を比較したものです。
|
機能 |
EMR Delta Lake |
オープンソース Delta Lake |
|
SQL |
|
|
|
API |
|
|
|
Hive コネクタ |
サポート |
サポート |
|
Presto コネクタ |
サポート |
サポート |
|
Parquet |
サポート |
サポート |
|
ORC |
非サポート |
非サポート |
|
テキスト形式 |
非サポート |
非サポート |
|
データスキッピング |
サポート |
非サポート |
|
ZOrder |
サポート |
非サポート |
|
ネイティブ DeltaLog |
サポート |
非サポート |