Databricks データレイクハウスについて整理する

# 背景・目的
データレイクハウスについて、特徴をドキュメントを元に整理します。

# まとめ
データレイクハウスは、データレイクとDWHの最良を組み合わせたアーキテクチャであり、下記の特徴があります。
- トランザクションのサポート
- スキーマの適用とガバナンス
- BIサポート
- ストレージとコンピューティングの分離
- オープン性
- 非構造化データから構造化データまでの多様なデータタイプのサポート
- 様々なワークロードのサポート
- エンドツーエンドのストリーミング
データレイクエンジンの主要なコンポーネントは下記のとおりです。
- データレイクのためのメタデータレイヤー
- データレイクで高性能な SQL 実行を可能にする新たなクエリエンジン設計
- データサイエンスと機械学習ツールへの最適化されたアクセス

# 概要
[What Is a Lakehouse?](https://www.databricks.com/blog/2020/01/30/what-is-a-data-lakehouse.html)をもとに整理します。

1980年後半開始以降、データウェアハウスは、進化を続けてMPPアーキテクチャにより大きなデータサイズを処理できるようになった。しかし、構造化データは最適だったが、現在では半構造化、多様性、速度、量の多い（いわゆる3V）のデータを扱うユースケースには適していなく、コスト効率も良くない。

約10年前（2020年執筆時点なので、2010年頃）には、データレイクに様々な生データのリポジトリを構築し始めた。
データレイクには、データの保存には適しているが、次の課題がある。
- トランザクションをサポートしない
- データ品質を強制しない
- 一貫性/分離性がないため、追加と読み取り、バッチジョブとストリーミングジョブを混在させることは出来ない。

これらの理由から、多くの場合データウェアハウスの利点の多くが失われている。
また、AIの進歩により、必要なデータは非構造化データ（テキスト、画像、ビデオ、オーディオ）を処理するが、一般的なアプローチは複数のシステムを使用し、下記の課題がある。
- 移動、コピーにより、遅延が生じる
- 複雑さ

## What is lakehouse?
レイクハウスは、データレイクとデータウェアハウスの最良の要素を組み合わせた新しいオープンアーキテクチャである。
データウェアハウスと同様のデータ構造とデータ管理機能を、オープンフォーマットの低コストのクラウドストレージ上に直接実装する。

レイクハウスの特徴を下記に記載する。

|特徴 |説明 |
|:--|:--|
|トランザクションのサポート|ACIDトランザクションのサポートにより、複数の利用者がSQLを使用して同時にデータの読み取りまたは書き込みを行う際の一貫性が保証される。|
|スキーマの適用とガバナンス|スキーマの適用と進化をサポートし、Star/Snowfalekeなどのデータウェアハウススキーマアーキテクチャをサポートする方法が必要である。<BR>システムはデータの整合性について推論できる必要があり、堅牢なガバナンスと監査メカニズムを備えている必要がある。|
|BIサポート|Lakehouseを使用すると、ソースに対してBIツールを直接使用できる。DWHとデータレイク間でコピーコストが削減できる|
|ストレージとコンピューティングの分離 | 別のクラスタを使用して、スケーラブルである|
|オープン性|Parquetなど、使用されるストレージ形式はオープンで標準化されているため、MLやPython/Rなどの様々なツールやエンジンで効率的にデータに直接アクセスできる。 |
|非構造化データから構造化データまでの多様なデータタイプのサポート |レイクハウスにより、画像、ビデオ、オーディオ、半構造化データ、テキストなどアクセスが可能|
|様々なワークロードのサポート |データサイエンス、ML、SQLと分析等のワークロードをサポートするツールが同じデータリポジトリに依存する|
|エンドツーエンドのストリーミング |ストリーミングのサポートにより、リアルタイムデータ・アプリケーションの提供専用の別のシステムが不要になる。 |


## シンプル、柔軟で低コストなデータレイクハウス
データウェアハウスと類似のデータ構造とデータ管理機能を、データレイクに使用される低コストのストレージに直接実装している。
データレイクとデータウェアハウスを単一のシステムに統合することで、データ部門が複数システムにアクセスする必要がなくなり、データ処理が迅速化する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/eeb484d8-dbc0-3084-9859-4bcb818eadd1.png)
※出典：https://www.databricks.com/jp/glossary/data-lakehouse

## データレイクハウスを実現する主要テクノロジー
データレイクハウスは下記の技術により実現している。
- データレイクのためのメタデータレイヤー
- データレイクで高性能な SQL 実行を可能にする新たなクエリエンジン設計
- データサイエンスと機械学習ツールへの最適化されたアクセス


### メタデータレイヤ
データレイクストレージ上のメタデータレイヤ。抽象度を上げてACIDトランザクションやその他管理機能を実装できる。
下記のような機能が実装できる。
- ストリーミングのI/Oサポート
- 古いテーブルバージョンへのタイムトラベル
- スキーマの適用と展開
- データのバリデーションなど

### データレイクで高性能な SQL 実行を可能にする新たなクエリエンジン設計
性能は、クエリエンジンの設計により高性能なSQL分析が可能になる。下記が含まれる。
- RAM/SSDでのホットデータのキャッシュ
- クラスタの同時アクセスデータのデータレイアウトの最適化
- 統計やインデックスなどの補助的なデータ構造
- 最新C\PUでのベクトル化された実行

### データサイエンスと機械学習ツールへの最適化されたアクセス
データサイエンティストや機械学習エンジニアは、Parquet や ORC などのソースにすでにアクセスがある pandas、TensorFlow、PyTorch、その他の DS/ML エコシステムにおける一般的なツールを使用できる。

## Star Schema
上記の[スキーマの適用とガバナンスで説明](https://qiita.com/drafts/0749da9f6c23b8bfbf42/edit#what-is-lakehouse)されたStar Schemaについて整理します。

この記事は、「[スタースキーマとは](https://www.databricks.com/jp/glossary/star-schema)」をもとに整理しています。


データベース内のデータを整理することで理解・分析しやすくなった多次元データモデルである。
DWHやDB、データマート、その他のツールに適用できる。大規模なデータセットへのクエリを実行するために最適化されている。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/882436b5-30d2-c702-3795-41be6db4670a.png)
※出典:https://www.databricks.com/jp/glossary/star-schema

### ファクトテーブルとディメンションテーブル
ビジネスデータを時間や商品などのディメンションと、金額や数量のトランザクション等に非正規化するために使用される。

スタースキーマの中央には、1つのファクトテーブルがあり、ビジネスのファクト（金額、数量のトランザクション）などが格納される。ファクトテーブルには、時間や製品などのディメンションに沿って、他の複数のディメンションテーブルに接続される。
スタースキーマでは、2つ以上のファクトテーブルとディメンションテーブルを結合することで、ユーザが適切と考える方法でデータをスライスすることや、ダイスすることが可能になる。


### スタースキーマのメリット
- 理解も実装もシンプル
- エンドユーザは必要なデータを容易に見つけられる。データマートやその他のデータリソースに適用できる。
- スノーフレークスキーマのような正規化されたモデルと比較して、スタースキーマはデータにアクセスする際の結合への依存が低いため、単純なクエリに最適
- OLAPモデルによく適合する。
- 計算コストのかかる結合を避けようとするため、正規化されたデータと比較してクエリのパフォーマンスが向上する。

### スタースキーマと3NFの違い
3NF（第正規化）は、スタースキーマーと比較して多くのテーブルを持つのが一般的。そのため、大規模なテーブル間の結合が増えるので、クエリが複雑になる傾向がある。


## Snowflake Schema
上記の[スキーマの適用とガバナンスで説明](https://qiita.com/drafts/0749da9f6c23b8bfbf42/edit#what-is-lakehouse)されたSnowflake Schemaについて整理します。

この記事は、「[スノーフレークスキーマとは](https://www.databricks.com/jp/glossary/snowflake-schema)」をもとに整理します。

スタースキーマを拡張した多次元データモデルで、ディメンションテーブルからサブディメンションテーブルに細分化されたものである。
DWHやデータマート、リレーショナルDBの多次元分析をBIやレポートによく使用される。
Snowflake Schemaでは、エンジニアがソゾレオディメンションテーブルを論理的なサブディメンションに細分化する。
データモデルは複雑にあるが、特定のデータ形式においてはアナリストが操作しやすくなる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/34492938-5d88-276e-423d-90a5333fd8c7.png)
※ 出典：https://www.databricks.com/jp/glossary/snowflake-schema

### Snowflake SchemaとStar Schemaの比較
Snowflakeスキーマは、より正規化が進んでいる。

### メリット・デメリット
- メリット
    - 高速なデータ検索
    - データ品質の確保
    - DWHのためのシンプルで一般的なデータモデル
- デメリット
    - 初期設定時に要する工数
    - 柔軟性にかけるデータモデル
    - 高いメンテナンスコスト


# 考察
データレイクハウスの特徴を整理しました。データレイクハウスでは、過去のDWHの柔軟ではない点や、データレイクのコピーやシステムが分割されることによる複雑さの課題を解決したアーキテクチャということがわかりました。また、このレイクハウスアーキテクチャを支える主要な技術として、下記があることがわかりました。
- データレイクのためのメタデータレイヤー
- データレイクで高性能な SQL 実行を可能にする新たなクエリエンジン設計
- データサイエンスと機械学習ツールへの最適化されたアクセス

今後は、これらの技術を調査しようと思います。


# 参考
https://www.databricks.com/blog/2020/01/30/what-is-a-data-lakehouse.html

https://www.databricks.com/blog/2021/08/30/frequently-asked-questions-about-the-data-lakehouse.html

https://www.databricks.com/jp/glossary/snowflake-schema

https://www.databricks.com/jp/wp-content/uploads/2020/08/p975-armbrust.pdf