Mímisbrunnr知恵の泉

← データエンジニアリング 一覧

🎓 レベル:発展 | 重要度:A(必須)

📎 前提:データウェアハウスデータレイクとオブジェクトストレージ | 関連:メダリオンアーキテクチャべき等性と再実行

要点(BLUF)

概念 ── 「レイクの安さ」と「DWHの規律」を両立

これまで、安いが無秩序なレイク(→ データレイクとオブジェクトストレージ)と、整っているが高いDWH(→ データウェアハウス)は別物でした。レイクハウスは「レイクのファイルに、テーブルとしての約束事を後付けする」ことで、両者の良いとこ取りを狙います。

flowchart TB
    OBJ["オブジェクトストレージ(安い・大量)"] --> PARQ["Parquetファイル群(列指向・圧縮)"]
    PARQ --> META["テーブルフォーマットのメタデータ層"]
    META --> TBL["1つのテーブルとして扱える(ACID・更新・履歴)"]
    ENG["クエリエンジン(Spark/DuckDB/Trino等)"] --> TBL

仕組み ── メタデータ層が「表」を作る

素のレイクは「フォルダにParquetが転がっている」状態で、原子的な更新ができません(書き途中が見える、削除が難しい)。テーブルフォーマットはトランザクションログ/マニフェストを持ち、「今このテーブルを構成するのはどのファイル群か」を版(バージョン)で管理します。

設計の勘所 ── 3レイヤーの対比

レイヤー役割
ストレージ安く大量に置くS3 / GCS / Azure Blob
ファイル形式列指向・圧縮Parquet / ORC
テーブル形式ACID・履歴・更新Delta Lake / Iceberg / Hudi

ポイントは、これらが疎結合なこと。ストレージは安いまま、ファイルは列指向のまま、その上に「表の機能」だけを薄く足す。エンジン(Spark/Trino/DuckDB)はテーブルフォーマット越しに同じデータを読めるので、ベンダーロックインも避けやすい(要最新確認:相互運用の対応状況は流動的)。

なぜそうするか ── 二重持ちをやめる

なぜレイクハウスなのか。従来は「生はレイク、整形済みはDWH」と同じデータを二箇所に持ち、コピー・同期・コストが二重でした。レイクハウスなら1つのストレージに生も整形済みも置き、テーブルフォーマットの規律で品質を担保できる。「安い1つの場所に、DWH並みの信頼性で」——これが二重持ちの解消というレイクハウスの動機です。次節のメダリオン(→ メダリオンアーキテクチャ)は、その1つのレイクハウス内を層で整える設計です。

⚠️ よくある落とし穴

対応ラボ

なし(概念回・本番テーブルフォーマットは外部基盤前提)。層別変換の実演は メダリオンアーキテクチャ のラボで確認。

関連

第5章 データウェアハウスとレイクハウス 目次