[レポート] Project Nessieで実現するデータレイクにおける分散型トランザクション – Subsurface LIVE Summer 2021

2021.08.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

米国時間2021年07月21日〜22日の計2日間、オンラインで開催された「Subsurface LIVE Summer 2021」では、主催となるDremio社のサービスやクラウドデータレイクに関する各種サービスやプロダクトのセッションが展開されていました。

当エントリでは、その中から「Distributed Transactions on the Data Lake w/ Project Nessie」(Project Nessieで実現するデータレイクにおける分散型トランザクション)というセッションについてレポートします。

目次

 

セッション概要

セッション概要は以下の通り。

<セッションタイトル>
Distributed Transactions on the Data Lake with Project Nessie
(Project Nessieで実現するデータレイクにおける分散型トランザクション)

<登壇者>
Ryan Murray - Co-creator of Project Nessie and OSS Engineer @ Dremio

<発表内容>
While database concepts like transactions, commits and rollbacks are necessary for traditional data warehousing workloads, they’re not sufficient for modern data platforms and data-driven companies. Project Nessie is a new open source metastore that builds on table formats such as Apache Iceberg and Delta Lake to deliver multi-table, multi-engine transactions. In this talk we will discuss the transactional model of Nessie and how it can help improve the ETL workflow. We will introduce the recently released Nessie Airflow provider and its use in multi-stage and complex workflows as an example of the power of Nessie transactions. We will finish with a demo and a discussion on the production readiness of Project Nessie.

(トランザクション、コミット、ロールバックといったデータベースの概念は、従来のデータウェアハウスのワークロードには必要ですが、最新のデータプラットフォームやデータドリブンな企業にとっては十分ではありません。Project Nessieは新しいオープンソースのメタストアで、Apache IcebergやDelta Lakeなどのテーブルフォーマットをベースにして、マルチテーブル、マルチエンジンのトランザクションを実現します。本講演では、Nessieのトランザクションモデルと、それがETLワークフローの改善にどのように役立つかについて説明します。最近リリースされた Nessie Airflow プロバイダを紹介し、Nessie トランザクションの威力を示す例として、多段階で複雑なワークフローでの使用方法を紹介します。最後にデモを行い、Project Nessieの本番対応について議論します。)

 

セッションレポート

ここからはセッションレポートとなります。それぞれのトピックに関して要点をまとめる形で紹介。

アジェンダ

  • Nessieプロジェクトを立ち上げるに至った動機
  • Nessieにおけるトランザクション
  • AirflowとNessie
  • NessieのGAと今後について

データレイクにおけるGitの扱い:2つの側面

データレイクの進化と欠点

  • データレイクにおけるサービスやプロダクトは以下の部分で改善を遂げてきた
    • テーブル
    • SQLインタフェース
    • テーブルフォーマットとトランザクション
  • 一方、依然として以下のような部分についてはまだまだ機能としては足りない...という部分は否めない
    • 複数テーブルにおけるトランザクション
    • 共通パターン
  • 近年以下のようなトピックが台頭していることを踏まえると、我々のやっていることはソフトウェアエンジニアリングに近いものなのでは?
    • アナリティクスエンジニアリング
    • データ品質と観測性
    • DataOps
    • 再現性(MLOps)
    • アトミックパイプラントランザクション

Project Nessie:概要

Project Nessieにおける「用語」の定義

  • Commit:1つまたは複数のテーブル/ビューに影響を与えるトランザクション
    • トランザクションを介してIcebergテーブルにデータを追加
    • ビューの定義を更新
  • Branch:順序付けされたコミットのリスト
    • 常に直線的な履歴を持つ(例:main, etl, ryans-experimental-change)
    • デフォルトで、全ての操作はメインブランチで行われる
  • Tag:ブランチと同じだが、コミット出来ない(例:EOY-2020)
    • Nessieの特定の状態を記録するための「不変的な」参照
  • Merge:あるブランチのコミットを別のブランチに移動
    • 例)etlブランチの変更をメインブランチのコンシューマに見えるようにする

Nessieにおけるトランザクション例

/** 一般的な例だとこうだけど */
START TRANSACTION
INSERT INTO
INSERT INTO
INSERT INTO
COMMIT

/** Nessieだとこういう風に出来るらしい */
[Nessie] CREATE BRANCH etl AS main
[Nessie] Job 1
[Nessie] Job 2
[Nessie] Reflection Refresh 1
[Nessie] Reflection Refresh 2
[Nessie] MERGE etl INTO main

トランザクション周りの対応

DBAの場合:Transactions

  • 従来のデータベースのセマンティクス
  • 分離レベル
    • コミットされた読み込み
    • 反復読み込み
    • Serializable
  • Nessieではシングルコミットに対応

ソフトウェアエンジニアの場合:パイプラインのアトミック性

    1. Consumersがメインブランチから読み込む
    1. データエンジニアがETLブランチにコミット
    1. 変更がメインブランチにマージされる

Airflowとアトミックパイプライン

  • Nessie Airflow Provider
  • AirflowオペレータとNessieへの接続
  • Airflow DAG → アトミックパイプライン
  • データで継続的インテグレーションを実現

今後の展開

Airflowパイプライン

  • Airflowリトライとの連携強化
  • より多くのオーケストレーションツールとの連携強化
  • リネージやデータクオリティにおける連携機能強化

Nessieの正式リリースと今後の予定

  • 秋にはGA予定らしい
    • APIとストレージの互換性保証
    • IcebergとDeltaを優先サポート
    • データベースバックエンドの追加
    • 認証認可
  • 今後の取り組み
    • ツールでのサポート強化の充実
    • デプロイメントオプションの追加

 

まとめ

という訳で、クラウドデータレイクイベント『Subsurface LIVE Summer 2021』のセッション「Distributed Transactions on the Data Lake w/ Project Nessie」(Project Nessieで実現するデータレイクにおける分散型トランザクション)のレポートでした。

対応している環境・サービスは限られてしまいますが、トランザクション周りで抱いている懸念が解消出来るのは嬉しいところですね。プロダクトのGAも待ち遠しい限りです。