Delta Live Tablesの新機能とパフォーマンス最適化の発表

[New Delta Live Tables Capabilities and Performance Optimizations \- The Databricks Blog](https://databricks.com/blog/2022/06/29/delta-live-tables-announces-new-capabilities-and-performance-optimizations.html)の翻訳です。

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

# DLTはETLワークロード向けのパフォーマンス最適化技術であるEnzymeの開発と、強化オートスケーリングを含む新機能を発表します

4月に全てのクラウドでDelta Live Tables(DLT)がGA([アナウンス](https://qiita.com/taka_yayoi/items/eaf1f9b176825819a7c2))になって以来、開発をより容易にするために新機能を導入し続けており、強化された自動化インフラストラクチャ管理、ETL処理をスピードアップするためのEnzymeプロジェクトと呼ばれる新たな最適化レイヤーを発表し、いくつかのエンタープライズ向け機能の導入やUXの改善を行いました。

DLTを用いることで、アナリストやデータエンジニアはSQLやPythonでクイックにプロダクションレベルのストリーミングやバッチETLパイプラインを作成することができます。DLTはデータ処理パイプラインを宣言的に定義することで、ETLの開発をシンプルにします。DLTはあなたのパイプラインの依存関係を読み取り、ほぼ全てのオペレーションの複雑な部分を自動化します。

Delta Live Tableは導入以来、世界中のリーディングカンパニーにおけるプロダクションETLユースケースを支援するために成長を続けてきました。DLTは、ADP、シェル、H&R Block、Jumbo、Bread Finance、JLLを含むスタートアップからエンタープライズに至る1,000以上の企業で使用されています。

DLTによって、エンジニアはパイプラインのオペレーションや維持ではなく、データのデリバリーに集中することができ、キーとなる機能を活用することができます。効率的かつ容易に連続的に到着するデータを捕捉するための[チェンジデータキャプチャ(CDC)](https://databricks.com/blog/2022/02/10/databricks-delta-live-tables-announces-support-for-simplified-change-data-capture.html)のサポートを含むいくつかのエンタープライズ向け機能の導入やUXの改善をおこなっており、ストリーミングワークロードにおいて優れた性能を提供する[強化オートスケーリング](https://docs.databricks.com/data-engineering/delta-live-tables/delta-live-tables-concepts.html#databricks-enhanced-autoscaling)のプレビューを発表しました。以降では、これらの改善点を詳細に見ていきましょう。

# 開発を容易に

ETLのエンドツーエンドのライフサイクルの管理を容易にするためにUIを拡張しました。

**UXの改善** DLTパイプラインの管理、エラーの参照を容易にできるようにUIを拡張し、豊富なパイプラインACLでチームメンバーにアクセスを提供できるようにしました。また、単一のビューでデータ品質メトリクスを観測できるUIを追加し、UIからパイプラインを容易にスケジューリングできるようにしました。詳細は[こちら](https://docs.databricks.com/data-engineering/delta-live-tables/delta-live-tables-ui.html)を参照ください。

**パイプラインのスケジュールボタン** DLTでは、ETLパイプラインを継続的あるいはトリガーモードで実行することができます。継続的パイプラインは新たなデータが到着するたびに処理を行い、データのレーテンシーが重要なシナリオでは有効です。しかし、多くのお客様はパイプラインの実行とコストをより細かく制御するために、トリガーモードでDLTパイプラインを実行することを選択しています。Databricksジョブを用いて、繰り返しのスケジュールでDLTパイプラインを容易に起動できるように、DLT UIを去らずに数クリックだけで繰り返しのスケジュールをセットアップできるように、DLTのUIに`Schedule`ボタンを追加しました。また、ジョブの実行履歴を参照するためや、メール通知を設定するためにジョブの詳細にクイックに移動できるようにしました。詳細は[こちら](https://docs.databricks.com/data-engineering/delta-live-tables/delta-live-tables-ui.html#schedule-a-pipeline)を参照ください。

**チェンジデータキャプチャ(CDC)** DLTにおいては、データエンジニアはSQLあるいはPythonで新たな宣言型APIである`APPLY CHANGES INTO`で用いることで、容易にCDCを実装することができます。この新機能によって、ETLパイプラインは容易にソースデータの変更を検知し、レイクハウスを通じて、それらをデータセットに適用することができます。DLTはインクリメンタルにデータの変更をDelta Lakeに反映させ、CDCイベントを取り扱う際にはinsert、update、deleteすべきレコードにフラグをつけます。詳細は[こちら](https://qiita.com/taka_yayoi/items/5319b9b010ce4703e98a)を参照ください。

**CDC SCD(Slowly Changing Dimensions) Type 2** 変化するデータを取り扱う際(CDC)、多くの場合、最新のデータを追跡するためにレコードを更新する必要があります。SCD Type 2は、オリジナルのデータを保持するようにターゲットの変更を適用する方法です。例えば、データベースにあるユーザーのエンティティが異なる住所に引っ越した際、そのユーザーの以前の全ての住所を格納することができます。DLTは、変更の監査証跡を維持する必要がある企業のためにSCD type 2をサポートします。SCD2は値の全ての履歴を保持します。属性の値が変更した際、現在のレコードがクローズされ、変更された値を持つ新たなレコードが作成され、新たなレコードが現在のレコードになります。詳細は[こちら](https://qiita.com/taka_yayoi/items/5319b9b010ce4703e98a)を参照ください。

# インフラストラクチャ管理の自動化

**強化オートスケーリング(プレビュー)** ストリーミングのワークロードのように、変化し続け、予測できないデータにおいて、最適なパフォーマンスを達成するように手動でクラスターのサイジングを行うことは困難であり、過剰なプロビジョンにつながることがあります。現在のクラスターのオートスケーリングはストリーミングのSLOを気にしておらず、データの到着スピードに遅れることで処理が失敗していたとしてもクイックにスケールアップせず、負荷が低い場合にもスケールダウンしません。DLTではストリーミングに特化した強化オートスケーリングのアルゴリズムを活用します。DLTの強化オートスケーリングは、全体的なエンドツーエンドのレーテンシーを最小化することを保証しつつも、クラスターの使用率を最適化します。これは、取り込みを待っているデータを含むストリーミングワークロードの変動を検知し、(ユーザーが指定した制限の中で)必要な適切な量のリソースをプロビジョンすることで実現されます。さらに、強化オートスケーリングはパイプラインへの影響を避けるために、全てのタスクの待避を保証しつつも、使用率が低い場合は徐々にクラスターをシャットダウンします。このため、強化オートスケーリングを使用しているワークロードでは、より少ないインフラストラクチャのリソースが使用されるので、コストを削減することができます。詳細は[こちら](https://docs.databricks.com/data-engineering/delta-live-tables/delta-live-tables-concepts.html#databricks-enhanced-autoscaling)を参照ください。

**自動化されたアップグレード&リリースチャンネル** Delta Live Tables(DLT)のクラスターはDatabricksランタイム(DBR)をベースとしたDLTランタイムを使用します。DatabricksはDLTランタイムを1-2ヶ月周期で自動的にアップグレードします。DLTはエンドユーザーの介入なしに、自動でDLTランタイムをアップグレードし、アップグレード後のパイプラインの健康状態を監視します。DLTランタイムのアップグレードによってDLTパイプラインがスタートできないことを検知した場合、パイプラインが以前のバージョンのランタイムを使用するように復旧します。DLTランタイムのプレビューバージョンをテストするために、DLTのチャンネルを活用することで、initスクリプトや他のDBRの挙動に対する後方互換性のない変更の早期アラートを取得することができ、レグレッションがある場合には自動で通知を受け取ることができます。プロダクションのワークロードではCURRENTチャンネルを使用することをお勧めします。詳細は[こちら](https://docs.databricks.com/data-engineering/delta-live-tables/delta-live-tables-manage-upgrades.html)を参照ください。

# ETLの処理のスピードアップに特化した最適化レイヤーであるEnzymeの発表

後段での分析に使用できるようにデータを変換することは、Databricksプラットフォームにおける多くのワークロードの前提条件となっています。SQLとデータフレームを用いることで、ユーザーは比較的容易に自分の変換処理を表現できますが、入力データは常に変換し続けています。これによって、ETLによって生み出されたテーブルの再計算が必要となります。最初から結果を再計算することはシンプルですが、大規模なデータを取り扱っているお客様においては、多くの場合コストが膨大なものとなります。

ETLにおける新たな最適化レイヤーであるプロジェクトEnzymeを開発していることを発表できて嬉しく思っています。Enzymeは、Deltaテーブルに格納されている特定のクエリーの結果の最新のマテリアライゼーションを効率的に保持しします。そして、従来型のマテリアライズドビュー、delta-to-deltaのストリーミング、そして、多くのお客様によってよく使われている手動のETLパターンを含むさまざまなテクニックの中から、コストモデルを用いて最適なものを選択します。
![](https://databricks.com/wp-content/uploads/2022/06/db-227-blog-img-1.png)
*Enzymeのパフォーマンス vs. 手動のインクリメンタル処理*

# レイクハウスでDelta Live Tablesを使い始める

データエンジニアやアナリストにとって、どれだけDLTが使いやすいものであるのかを知るには以下のデモをご覧ください。
<iframe width="560" height="315" src="https://www.youtube.com/embed/BIxwoO65ylY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

すでにDatabricksを使っているのであれば、[スタートガイド](https://qiita.com/taka_yayoi/items/0cde1f2732ff859a726f)に従ってDLTを使ってみてください。このGAリリースに何が含まれているのかに関しては、リリースノートを参照ください。まだ、Databricksを使っていないのであれば、[フリートライアル](https://databricks.com/jp/try-databricks)にサインアップいただき、こちらのDLTの[価格帯](https://databricks.com/jp/product/pricing)を確認してみてください。

Data + AI Summit 2022での発表やアップデートに関して、データに熱中している人たちが会話している[Databricks Community](https://community.databricks.com/s/topic/0TO8Y000000VJEhWAO/summit22)に参加してみてください。学び、ネットワークを作り、祝いましょう。

### Databricks 無料トライアル

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