APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

レイクハウスフェデレーションによるpostgreSQLとの連携

はじめに

GLB事業部Lakehouse部の阿部です。
今年のData + AI SUMMITで発表されたLakehouse Federation(レイクハウスフェデレーション)をさわってみました。

https://learn.microsoft.com/ja-jp/azure/databricks/query-federation/postgresql

注意
記事執筆時点では、この機能はパブリックプレビュー段階です。

Lakehouse Federationとは

複数の外部データベースからデータをLakehouseに移行せずに、Lakehouseからアクセスできる機能です。
データベースを外部カタログとしてミラーリングし、Unity Catalogのオブジェクトとしてセキュリティ保護します。
もちろん、そのデータをデータパイプラインに利用することも可能です。

(https://vimeo.com/875314307から引用)

ここで、Lakehouse Federationの典型的なワークフローを紹介します。

  1. DISCOVER
    外部データソースを外部カタログとして登録(ミラーリング)する。

  2. QUERY
    データソースのメタデータやデータ自体、テーブルの確認をする。

  3. GOVERN
    Unity Catalogのオブジェクトとして管理するため、例えば、テーブルやカラム、行レベルでアクセス権限の付与を行う。

  4. PRODUCTIONIZE
    DLTパイプラインにおけるデータソースやMatearized Viewとしての利用、Structured Streamingでの使用といったworkflowsで利用する。

このように、Unity Catalogで管理されたセキュアなデータを本番環境でのworkflowに利用できます。

Lakehouse Federationを使う理由

データソースが複数の組織に散在することで、以下の課題が生まれます。

  • データが複数のデータソースに散らばっており、保管場所や認証の面からアクセスが難しい。

  • データを外部データソースからDWHなどのプラットフォームに移行するには労力がかかるが、データの価値と労力が見合わない。

  • 複数のデータソースに散らばることで、データガバナンスが効いていない

詳しくは公式のドキュメントに書いています。

これらの課題を解決するために、Lakehouse Federationを使います。
たとえば、複数のデータソースからデータを外部カタログにミラーリングした後、お互いのテーブルをJoinしてtransformationを行います。
このようにして、メダリオンアーキテクチャにおけるデータ品質が高いsilver, gold tableを作成できます。

それでは、実際にLakehouse Federationを使ってみます。

postgreSQLと接続する

使用するデータベースは、EC2にインストールしたpostgreSQLとします。
postgreSQLのインストールや設定は、こちらの記事で解説しています。

https://techblog.ap-com.co.jp/entry/2023/11/07/090325

UIとクエリーでの両方の設定が可能であるため、どちらも解説します。

UIで設定する場合

CatalogからConnectionsを選択し、画面右上のCreate connectionボタンをクリックします。

表示されたポップアップ画面から各種設定を行います。

  • Connection name: 自分で接続名を決めて入力します。

  • Connection type: データベース種類からPostgreSQLを選択します。

  • User: postgreSQLのユーザー名

  • Password: postgreSQLのパスワード

  • Host: データソースのhost名を入力します。ここではEC2のパブリックIPアドレスを入力しました。

画面左下のTest connectionをクリックし、接続テストします。
※ここで接続テストを通らないと、次に行う接続情報の登録ができても接続できません。

接続テストに通りました。
Createボタンをクリックし、接続情報を登録します。

Catalog ExplorerにpostgreSQLのアイコンが表示され、接続情報を登録できました。

sqlで設定する場合

CREATE CONNECTION postgresql_ec2_abe TYPE postgresql
OPTIONS (
  host '<host_name>',
  port '5432',
  user 'postgres',
  password 'XXXXX'
);

外部カタログにpostgresqlをミラーリングする

postgreSQLをUnity Catalog内のオブジェクトとして管理するため、外部カタログにミラーリングします。
先ほど登録したconnection nameをクリックし、Create catalogをクリックすると以下の画面がポップアップします。
Databaseには、postgresqlの中に作成したデータベース名を入力します。

以下のように、クエリでも外部カタログを作成できます。

CREATE FOREIGN CATALOG IF NOT EXISTS dvdrental USING CONNECTION postgresql_ec2
OPTIONS (database 'dvdrental');

Catalog Explorerを確認すると、postgreSQLというカタログへのミラーリングが確認できます。

作成したカタログにクエリーを叩いて、actorテーブルの中身を確認します。

SELECT * FROM postgresql.public.actor;

実行結果です。

Lakehouse Federationによって外部データベースのデータを読み取れました。

おわりに

Lakehouse Federationを用いて、外部データソースであるpostgreSQLからのデータを確認できました。
今回は行いませんでしたが、他のテーブルとのJoin, Transformationを通して新たなテーブルを作成できるため、silverやgold tableといったデータ品質が高いテーブルを用意できます。
ユースケースに応じてLakehouse Federationを効果的に活用したいと思います。

最後までご覧いただきありがとうございます。
私たちはDatabricksを用いたデータ分析基盤の導入から内製化支援まで幅広く支援をしております。
もしご興味がある方は、お問い合わせ頂ければ幸いです。

www.ap-com.co.jp

そして、一緒に働いていただける仲間も募集中です!
APCにご興味がある方の連絡をお待ちしております。

www.ap-com.co.jp