Databricks

Delta Lakeとは?初心者向け完全ガイド|ACID・Time Travel・Z-Order

2026-03-21
NicheeLab編集部

Delta Lakeは、データレイクに信頼性・パフォーマンス・ガバナンスを付与するオープンソースのストレージレイヤーです。Apache Parquetファイル形式の上にトランザクションログを追加することで、ACIDトランザクション・スキーマエンフォースメント・Time Travel・増分処理といったデータウェアハウス並みの機能をデータレイク上で実現します。Databricks Lakehouse Platformの基盤技術であり、すべてのDatabricks認定試験で出題される最重要テクノロジーです。

この記事では、Delta Lakeの基本概念から実践的な使い方まで、初心者にもわかりやすく完全解説します。ACID特性・Time Travel・スキーマエボリューション・Z-Order・Liquid Clustering・Auto Compaction・Medallion Architectureといった重要トピックを網羅しているので、Databricks試験対策としてもぜひ活用してください。

Delta Lakeとは

Delta Lakeは、Linux Foundation傘下のオープンソースプロジェクトとして開発されたストレージフレームワークです。従来のデータレイク(Parquet/CSV/JSONファイルの集まり)が抱えていた「データの信頼性の低さ」「スキーマの不整合」「同時書き込みの競合」「ファイル管理の煩雑さ」といった課題を、トランザクションログ(_delta_log)の仕組みで根本的に解決します。

Delta Lakeのデータファイル自体はApache Parquet形式です。Delta Lakeが追加するのはトランザクションログ(JSONおよびCheckpointファイル)であり、このログがすべてのデータ変更操作(INSERT/UPDATE/DELETE/MERGE)を追跡することで、ACIDトランザクション・バージョン管理・データの一貫性を保証します。これにより、データレイクとデータウェアハウスの長所を兼ね備えた「Lakehouse」アーキテクチャが実現されます。

ACIDトランザクション

Delta Lakeの最も重要な特徴のひとつが、データレイク上でのACIDトランザクションのサポートです。ACIDとは、Atomicity(原子性)・Consistency(一貫性)・Isolation(分離性)・Durability(永続性)の4つの特性を指し、従来リレーショナルデータベースでのみ保証されていたトランザクション品質をデータレイク上で実現します。

Atomicity(原子性)

トランザクション内のすべての操作が完全に成功するか、まったく適用されないかのいずれかを保証します。たとえば、大量のデータを書き込む途中でジョブが失敗した場合、中途半端な状態のデータが残ることはありません。トランザクションログにコミットが記録されるまで、変更は可視化されません。

Consistency(一貫性)

スキーマエンフォースメントにより、テーブルに書き込むデータが定義済みのスキーマに適合することを保証します。スキーマに合わないデータが書き込まれようとした場合、Delta Lakeは自動的にエラーを発生させ、データの一貫性を維持します。

Isolation(分離性)

複数のユーザーやジョブが同時にテーブルを読み書きしても、互いの操作が干渉しません。Delta Lakeは楽観的同時実行制御(Optimistic Concurrency Control)を採用しており、読み取り操作は書き込み操作をブロックせず、競合する書き込みは自動的に検出・解決されます。

Durability(永続性)

コミットされたトランザクションは永続的に保存され、システム障害が発生しても失われません。データファイル(Parquet)とトランザクションログの両方がクラウドストレージに保存されるため、高い耐久性が保証されます。

Time Travel

Delta LakeのTime Travel機能は、テーブルの過去のバージョンにアクセスできる機能です。すべてのデータ変更操作がトランザクションログに記録されるため、任意の時点のデータを参照・復元できます。データの誤削除からの復旧、監査・コンプライアンス対応、MLモデルの再現性確保など、さまざまなユースケースで活用されます。

バージョン指定でのアクセス

特定のバージョン番号を指定してデータを読み取ることができます。構文は SELECT * FROM table_name VERSION AS OF version_number です。PySparkでは spark.read.format("delta").option("versionAsOf", version_number).load(path) で同等の操作が可能です。

タイムスタンプ指定でのアクセス

特定の日時を指定してデータを読み取ることもできます。構文は SELECT * FROM table_name TIMESTAMP AS OF '2026-03-01' です。指定した日時以前の最新バージョンのデータが返されます。

バージョン履歴の確認

DESCRIBE HISTORY table_name コマンドで、テーブルの変更履歴(バージョン番号・操作内容・タイムスタンプ・ユーザー情報)を確認できます。RESTORE TABLE構文を使えば、テーブル全体を過去のバージョンに復元することも可能です。なお、VACUUMコマンドで古いデータファイルを削除した場合、そのバージョンのTime Travelは利用できなくなるため注意が必要です。

スキーマエンフォースメントとエボリューション

Delta Lakeは、データの品質を保つための2つの重要なスキーマ管理機能を提供します。

スキーマエンフォースメント

テーブルに書き込むデータのスキーマが既存のテーブルスキーマと一致するかを自動的にチェックする機能です。デフォルトで有効になっており、カラム名・データ型・カラム数が一致しないデータの書き込みを拒否します。これにより、「いつの間にかスキーマが変わっていた」というデータレイクの典型的な問題を防止します。

スキーマエボリューション

スキーマの変更を自動的に受け入れる機能です。書き込み時に .option("mergeSchema", "true") を指定するか、SQLで ALTER TABLE table_name ADD COLUMNS を使うことで、新しいカラムの追加やデータ型の変更を安全に行えます。MERGE INTO文では WHEN NOT MATCHED BY SOURCE と組み合わせて柔軟なスキーマ進化が可能です。

パフォーマンス最適化

Delta Lakeは、クエリパフォーマンスを向上させるための複数の最適化機能を提供しています。大量のデータを扱う実運用環境では、これらの機能を適切に活用することが不可欠です。

OPTIMIZE & Z-Order

OPTIMIZE コマンドは、小さなファイル(Small Files Problem)を統合して大きなファイルにまとめる操作(Compaction)です。多数の小さなファイルが蓄積するとメタデータの処理オーバーヘッドが増大し、クエリ性能が劣化します。OPTIMIZE はこの問題を解決します。

Z-ORDER BY column_name は、指定したカラムの値に基づいてデータを空間的に近い位置に配置するコロケーション手法です。頻繁にフィルタ条件に使用するカラム(日付、地域、ユーザーIDなど)を指定することで、データスキッピングの効果が最大化され、クエリ実行時に読み込むファイル数を大幅に削減できます。構文は OPTIMIZE table_name ZORDER BY (col1, col2) です。

Liquid Clustering

Z-Orderの後継として登場した次世代のデータレイアウト最適化機能です。Z-Orderとの違いは、書き込み時に自動的・増分的にクラスタリングが行われる点です。ALTER TABLE table_name CLUSTER BY (col1, col2) で設定すると、以降の書き込みとOPTIMIZE時に自動的にデータが最適配置されます。Z-Orderは全データを再書き込みする必要がありましたが、Liquid Clusteringは変更されたデータのみを効率的に再配置するため、大規模テーブルでのコストとパフォーマンスが大幅に改善されます。

Auto Compaction & Optimized Writes

Auto Compactionは、書き込み操作の後に自動的に小さなファイルを統合する機能です。手動でOPTIMIZEを実行する頻度を減らせます。Optimized Writesは、書き込み時にパーティション内のファイルサイズを最適化し、小さなファイルの発生自体を抑制する機能です。どちらもテーブルプロパティで有効化でき、Databricksでは多くのケースでデフォルト有効となっています。

VACUUM

VACUUM table_name RETAIN 168 HOURS は、指定した保持期間より古い、現在のテーブルバージョンから参照されていないデータファイルを削除するコマンドです。ストレージコストの削減に使いますが、削除されたファイルに対応するバージョンのTime Travelが利用できなくなる点に注意が必要です。デフォルトの保持期間は168時間(7日間)で、これより短い期間を指定するとデータ破損のリスクがあるため警告が表示されます。

Medallion Architecture

Medallion Architecture(メダリオンアーキテクチャ)は、Delta Lakeを用いたデータレイクのデータ品質を段階的に向上させる設計パターンです。Bronze → Silver → Goldの3層構造で、各レイヤーでデータの品質と構造を段階的に高めていきます。

Bronze層(生データ)

ソースシステムからの生データをそのまま取り込むレイヤーです。「まず生データを安全に保存する」ことが目的で、スキーマの変換やデータクレンジングはこのレイヤーでは行いません。Auto Loaderを使ったクラウドストレージからの増分取り込みや、Change Data Capture(CDC)によるデータベースの変更キャプチャが典型的なパターンです。取り込み日時やソース情報のメタデータカラムを付与しておくと、後続の処理やデバッグに役立ちます。

Silver層(クレンジング・標準化)

Bronze層のデータをクレンジング・標準化・正規化するレイヤーです。重複排除、NULL値処理、データ型の統一、結合処理(JOIN)、フィルタリング(不要レコードの除外)などを行い、分析可能な品質のデータに変換します。エンタープライズレベルのデータとして、複数のビジネスユースケースに対応できる汎用的な構造を目指します。

Gold層(ビジネスレベル集計)

Silver層のデータをビジネス要件に合わせて集計・加工するレイヤーです。KPIダッシュボード用の集計テーブル、MLモデルの特徴量テーブル、レポート用のサマリーテーブルなど、特定のユースケースに最適化されたデータセットを作成します。各Gold層テーブルは通常、特定のビジネスチームやアプリケーションに紐づいています。

問題例

Databricks試験でDelta Lakeに関して出題される形式のサンプル問題を2問掲載します。

Delta Lake - OPTIMIZE

問題 1

Delta LakeテーブルでOPTIMIZEコマンドを実行する主な目的として最も適切なものはどれですか?

  1. テーブルのスキーマを最適化して不要なカラムを自動削除する
  2. 小さなファイルを統合して大きなファイルにまとめ、クエリパフォーマンスを向上させる
  3. テーブルの全データを再エンコードして圧縮率を改善する
  4. 古いバージョンのデータファイルを削除してストレージを解放する

正解: B

OPTIMIZEコマンドの主な目的は、多数の小さなファイル(Small Files Problem)を統合して大きなファイルにまとめるCompaction(ファイル統合)です。これにより、ファイルスキャンのオーバーヘッドが削減され、クエリパフォーマンスが向上します。選択肢Aのスキーマ最適化はOPTIMIZEの機能ではありません。選択肢Cの再エンコードも行いません。選択肢Dの古いファイル削除はVACUUMコマンドの機能です。OPTIMIZEとVACUUMの違いは試験頻出ポイントです。

Delta Lake - Medallion Architecture

問題 2

Medallion Architecture(Bronze/Silver/Gold)において、Silver層で行うべき処理として最も適切なものはどれですか?

  1. ソースシステムからの生データの取り込み
  2. KPIダッシュボード用の集計テーブルの作成
  3. データのクレンジング・重複排除・スキーマの標準化
  4. MLモデルの学習と推論の実行

正解: C

Silver層はBronze層の生データをクレンジング・標準化するレイヤーです。具体的には、重複排除(DISTINCT、ROW_NUMBER + フィルタ)、NULL値処理(COALESCE、フィルタリング)、データ型の統一(CAST)、テーブル結合(JOIN)、不要レコードのフィルタリングなどを行います。選択肢Aの生データ取り込みはBronze層、選択肢Bの集計テーブル作成はGold層の役割です。選択肢DのMLは通常、Gold層のデータを入力として別のワークフローで実行します。

Delta Lakeの問題を今すぐ解いてみよう

Databricks試験で頻出のDelta Lake問題を日本語で体験できます

無料で問題を解く

よくある質問(FAQ)

Delta LakeとApache Parquetの違いは?

Delta LakeはApache Parquetファイル形式の上に構築されたストレージレイヤーです。Parquet単体ではACIDトランザクション・スキーマエンフォースメント・Time Travelなどの機能がありませんが、Delta Lakeはトランザクションログ(_delta_log)を追加することでこれらの機能を実現しています。つまり、Delta Lakeのデータファイル自体はParquet形式ですが、トランザクションログによってデータレイクに信頼性・一貫性・バージョン管理を付与している点が決定的な違いです。

Delta LakeはDatabricks以外でも使えますか?

はい、Delta Lakeはオープンソースプロジェクト(Linux Foundation傘下)であり、Databricks以外の環境でも利用可能です。Apache Spark、Flink、Presto/Trino、Pandas(delta-rs / deltalake Pythonパッケージ)などから読み書きできます。ただし、Liquid ClusteringやUniForm、Predictive Optimizationなど一部の高度な機能はDatabricksプラットフォーム固有です。

Delta LakeはDatabricks試験でどのくらい出題されますか?

Delta Lakeは事実上すべてのDatabricks認定試験で出題される最重要テクノロジーです。Data Engineer Associate(DEA)ではほぼ全ドメインにまたがって出題され、全体の30〜40%の問題がDelta Lakeに関連します。DEP・MLA・DAA・Spark Developerでも頻出です。ACID特性・Time Travel・MERGE INTO・OPTIMIZE/VACUUM・スキーマエボリューションの5つのトピックは特に重要で、いずれの試験でも繰り返し問われます。

Delta Lake 関連記事

Data Engineer Associate 完全解説

Delta Lakeが最も出題される試験

Spark SQL完全ガイド

Delta Lake操作コマンドのSQL構文まとめ

Unity Catalog完全解説

Delta Lakeテーブルのガバナンス

Databricks資格の勉強方法

最短合格ルートと学習時間の目安

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Databricks

Databricks資格一覧|全7試験・難易度・勉強法

Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...

Databricks

Databricks試験の難易度ランキング|全7資格を徹底比較

Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...

Databricks

Databricks資格の勉強方法|最短合格ルートと学習時間の目安

Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...

Databricks

Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略

Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...

Databricks

Databricks Data Engineer Professional完全解説|上級試験の攻略法

Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...

Databricksの記事一覧 (109件)
© 2026 NicheeLab All rights reserved.