DatabricksにおけるすべてのDelta的なものは何か？

[What are all the Delta things in Databricks? \| Databricks on AWS](https://docs.databricks.com/introduction/delta-comparison.html) [2023/3/17時点]の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

本書では、Databricksにおいて全体的に*Delta*とブランドされているテクノロジーを紹介します。Deltaは、[Delta Lakeオープンソースプロジェクト](https://delta.io/)の、あるいはそれに関連するテクノロジーを指します。

本書では以下に回答します:

- Databricksにおける*Delta*テクノロジーとは何か？
- それらは何をするのか？あるいは、何に使われるのか？
- それぞれはどのように他のものと関連するのか？

# Delta的なものは何に使われるのか？

Deltaとは、Databricksレイクハウスプラットフォームにおいてデータやテーブルを格納する基盤であるDelta Lakeによって導入された用語です。Delta Lakeは、ParquetデータファイルをACIDトランザクションのためのファイルベースのトランザクションログやスケーラブルなメタデータ管理で拡張することで、ビッグデータに対するトランザクション型のリアルタイムあるいはバッチ処理のための、統合データ管理システムとして考え出されました。

# Delta Lake: レイクハウスにおけるオープンソースのデータ管理

[Delta Lake](https://delta.io/)は、クラウドストレージ(AWS S3、Azureストレージ、GCS)に格納されているデータの上にトランザクション型のストレージレイヤーを追加することで、データレイクに信頼性をもたらすオープンソースのストレージレイヤーです。これは、ACIDトランザクション、データのバージョン管理、ロールバック機能を実現します。同じ方法でバッチデータとストリーミングデータを取り扱うことができます。

Deltaテーブルはこのストレージレイヤー上に構築され、テーブルの抽象化を提供し、SQLやデータフレームAPIを用いて大規模な構造化データの取り扱いを簡単なものにします。

# Deltaテーブル: デフォルトのデータテーブルアーキテクチャ

Deltaテーブルは、Databricksのデフォルトデータフォーマットであり、Delta Lakeオープンソースフレームワークの機能です。Deltaテーブルは通常、ストリーミングあるいは大規模バッチでデータが取り込まれるデータレイクで使用されます。

以下をご覧ください:

- [Delta Lake quickstart: Create a table](https://docs.delta.io/latest/quick-start.html#create-a-table)
- [Updating and modifying Delta Lake tables](https://docs.databricks.com/delta/index.html#updates)
- [DeltaTable class](https://docs.delta.io/latest/api/python/index.html#deltatable): Deltaテーブルをプログラムから操作するためのメインクラス。

# Delta Live Tables: データパイプライン

Delta Liveテーブルは、大量のDeltaテーブル間のデータフローを管理し、ETL開発、管理におけるデータエンジニアの作業をシンプルにします。パイプラインは[Delta Live Tables](https://docs.databricks.com/delta-live-tables/index.html)における実行のメインユニットとなります。Delta Live Tablesは、宣言型のパイプライン開発、改善されたデータ信頼性、クラウド規模のプロダクションオペレーションを提供します。ユーザは、同じテーブルに対してバッチとストリーミングオペレーションの両方を実行することができ、データは即座にクエリーできるようになります。データに実行する変換処理を定義すると、Delta Live Tablesはタスクのオーケストレーション、クラスター管理、モニタリング、データ品質、エラーハンドリングの面倒を見ます。Delta Live Tablesの強化オートスケーリングは、スパイクがあったり、予測不可能なストリーミングワークロードに対応することができます。

[Delta Live Tablesクイックスタート](https://qiita.com/taka_yayoi/items/7fe8ed2c2f95fd53cc3d)をご覧ください。

# Deltaテーブル vs. Delta Live Tables

Deltaテーブルはテーブルにデータを格納する手段であり、Delta Live Tablesは、これらのテーブル間をどのようにデータが流れるのかを宣言的に記述することを可能とします。Delta Live Tablesは、大量のDeltaテーブルを作成し、最新の状態を保つことでそれらのテーブルを管理する宣言型のフレームワークです。要するに、Deltaテーブルはデータテーブルのアーキテクチャであり、Delta Live Tablesはデータパイプラインのフレームワークです。

# Delta: オープンソースかプロプライエタリか？

Databricksプラットフォームの強みは、お客様をプロプライエタリなツールにロックインしないことです: テクノロジーの大部分は、Databricksがコミットしているオープンソースプロジェクトによって支えられています。

- [Delta Lake project](https://delta.io/): レイクハウスのためのオープンソースストレージ。
- [Delta Sharing protocol](https://delta.io/sharing/): セキュアなデータ共有のためのオープンプロトコル。

Delta Live Tablesは、Databricksのプロプライエタリなフレームワークです。

# Databricksにおける他のDeltaは？

名前に*Delta*を含む他の機能の説明です。

## Delta Sharing

セキュアなデータ共有のためのオープンスタンダードであり、[Delta Sharing](https://docs.databricks.com/data-sharing/index.html)によって、計算プラットフォームに関係なしに企業間でデータ共有を行うことができます。

## Deltaエンジン

Databricksに含まれているDelta Lakeオープンソーステクノロジーを活用するビッグデータ向けのクエリーオプティマイザです。Deltaエンジンは、計算処理をデータにプッシュすることで、Spark SQL、Databricks SQL、データフレームオペレーションのパフォーマンスを最適化します。

## Delta Lakeトランザクションログ(Deltaログ)

ユーザーがテーブルに行うすべての変更を追跡する単一の信頼できる情報源であり、Delta Lakeが[原子性](https://qiita.com/taka_yayoi/items/10f6f1abc6bd8d1f8915#databricks%E3%81%A7%E3%81%AF%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E5%8E%9F%E5%AD%90%E6%80%A7%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%8B)を保証するメカニズムです。GitHubの[Delta transaction log protocol](https://github.com/delta-io/delta/blob/master/PROTOCOL.md)をご覧ください。

このトランザクションログは多くの重要な機能において実行される共通のスレッドなので、これはDelta Lakeを理解する際の鍵となります。

- ACIDトランザクション
- スケーラブルなメタデータハンドリング
- タイムトラベル
- などなど

### Databricksクイックスタートガイド

[Databricksクイックスタートガイド](https://www.amazon.co.jp/dp/B09V1YXFVQ/)


### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)