Contents
Lakehouseフェデレーションとは
Lakehouseフェデレーション機能を使うと、企業が持っているいろいろな場所に保存されているデータに、一つの場所から簡単にアクセスできます。例えば、営業データが一つ、顧客データが別の場所にあるとしても、この機能を使えば、それらを同じ場所(Databricksのプラットフォームから)まとめて一度に見ることができます。
なぜ便利か?
- データをまとめる手間が省ける: いろいろな場所に散らばっているデータを一つにまとめる必要がないので、時間と労力を節約できます。
- 速度: 早く、簡単に必要な情報にアクセスできます。これにより、ビジネスの意思決定もスムーズに行えます。
- 安全性: (Unity Catalogの恩恵を受けることもできるので)誰がどのデータにアクセスできるかをしっかりと管理できるため、安全です。
簡単に言えば、Lakehouseフェデレーションは、企業が持っている様々なデータを一元管理し、それを簡単・早く・安全に使えるようにする機能です。
レイクハウスフェデレーションに対応している外部データソースは現時点で以下です。
- MySQL
- PostgreSQL
- Amazon Redshift
- Snowflake
- Microsoft SQL Server
- Azure Synapse (SQL Data Warehouse)
- Databricks
Lakehouse フェデレーションを使用してクエリを実行する – Azure Databricks | Microsoft Learn
実際に使ってみた
今回は、SQL Server(Azure SQL Database)に対するLakehouseフェデレーションを試してみたいと思います。以下記事を参考にしました。
Microsoft SQL Server のレイクハウス フェデレーション – Azure Databricks | Microsoft Learn
前提:Azure SQL Databaseの状態
接続情報の構成
%sql
CREATE CONNECTION conn_sqlserver TYPE sqlserver
OPTIONS (
host 'sqlserver013.database.windows.net',
port '1433',
user 'XXXXX',
password 'XXXXX'
);
SQL Databae側の事前構成は特にないため、DatabricksでCONNECTIONを作成する権限と、接続先データソースの資格情報を知っていればこのステップを実行できますね。
外部カタログの作成
続いてこの資格情報を用いて外部カタログを作成します。これは、データの実体は外部データソースに保持したまま、メタデータのみを取得してDatabricksでカタログ化できてしまう機能なようです。
%sql
-- 外部カタログの作成
CREATE FOREIGN CATALOG IF NOT EXISTS catalog_sqldb USING CONNECTION conn_sqlserver
OPTIONS (database 'sqldb013');
上記コマンドを実行すると、カタログエクスプローラーからSQL Databaseのテーブル情報が参照できるようになりました。
外部カタログ化された外部データは、DatabricksのUnity Catalogの機能を使って、Databricks上でのデータアクセスを制御することができます。これは便利ですね。
外部データのクエリ
外部カタログ化されたデータは、通常のテーブルと同様に、SQLから参照できるようになります。
%sql
SELECT * FROM catalog_sqldb.dbo.testtable LIMIT(10);
また、以下のように、クエリによっては外部データソースのエンジンで処理を行うプッシュダウンが効くようです。
Microsoft SQL Server のレイクハウス フェデレーション – Azure Databricks | Microsoft Learn
おわりに
DatabricksのLakehouseフェデレーション機能、必要な設定も多くなく、簡単に外部データソースをカタログ化、参照できて、かつUnity Catalogによるきめこまやかなセキュリティも適用できて非常に便利かつ強力だと思いました。いま各クラウドサービスでデータ仮想化を実現するサービスや機能が色々と出てきていると思うので、こうした機能のアップデート動向も追いかけていきたいと思います。
少しでも参考になりましたら幸いです。
おしまい
コメントを残す