外部データベースとカタログに接続する

Azure Databricksでは、データを移行せずに外部データベースやカタログ内のデータに対してクエリを実行したり、データにアクセスしたりするための複数のオプションが提供されます。 アクセス パターン、ガバナンス要件、書き込みニーズ、コンピューティング設定に基づいてアプローチを選択します。

アプローチを選択する

次の表は、クエリフェデレーションとカタログフェデレーションを比較して、適切なアプローチを選択するのに役立ちます。

Description クエリの実行 書き込みサポート Governance 最適な用途
クエリ フェデレーションとは 外部カタログを介した自動クエリ プッシュダウンと Unity カタログ ガバナンスを使用して、JDBC を使用して外部リレーショナル データベースに対してフェデレーション クエリを実行します。 JDBC を使用して外部データベースにプッシュダウンします。 クエリは、Azure Databricksコンピューティングとリモート コンピューティングの両方で実行されます。 サポートされていません (読み取り専用)。 テーブル レベルのアクセス制御を備えた Unity カタログ外部カタログ。 運用データベースへのアドホック レポート、BI、概念実証アクセス。
カタログ フェデレーション 外部カタログ プラットフォーム (Hive Metastore、AWS Glue、Snowflake など) を接続して、オブジェクト ストレージ内のデータを直接照会できるようにします。 Azure Databricks コンピューティング上でのみ、オブジェクト ストレージに対して直接実行されます。 クエリ フェデレーションよりもコスト効率が高く、パフォーマンスが最適化されています。 サポートされていません (読み取り専用)。 テーブル レベルのアクセス制御を備えた Unity カタログ外部カタログ。 Unity カタログへの段階的な移行、または外部カタログ内のデータを使用した長期的なハイブリッド モデルの維持。

レイクハウスフェデレーション

Lakehouse Federation は、Azure Databricks クエリ フェデレーション プラットフォームです。 Unity カタログの外部カタログを通じて外部データに対する管理された読み取り専用アクセスを提供し、テーブル レベルで自動クエリ プッシュダウンときめ細かいアクセス制御を行います。

Lakehouse フェデレーションには、クエリ フェデレーションとカタログ フェデレーションの 2 種類があります。

カタログ フェデレーションと比較したクエリ フェデレーション

次の表では、クエリ フェデレーションとカタログ フェデレーションの主な違いについて説明します。

クエリ パス 利用シーン 手順の概要
クエリ フェデレーションとは Unity カタログ クエリは、JDBC を使用して外部データベースにプッシュダウンされます。 クエリは、Azure Databricksとリモート コンピューティングの両方で実行されます。
  • 外部データベースに格納されている運用データへのアドホック レポートまたは概念実証アクセスが必要です。
  • データ移動を最小限に抑え、外部システムへのライブ アクセスを維持したいと考えています。

ソースが Lakehouse Federation と Lakeflow Connect の両方をサポートしている場合、データ ボリュームの増加と待機時間の短縮のパフォーマンスが優先される場合、Azure Databricksは Lakeflow Connect を推奨します。
  • アクセス資格情報と JDBC URL を使用して、Unity カタログに接続を作成します。
  • 接続を使用して外部カタログを作成します。
  • 外部カタログ内のテーブルに対する権限をユーザーに付与します。
  • クエリを実行します。 これらは外部データベースにプッシュダウンされます。
カタログ フェデレーション Unity カタログ クエリは、オブジェクト ストレージ内の外部テーブルに直接アクセスします。 カタログ フェデレーションは、カタログおよびストレージ サービスへの直接アクセスをサポートするプラットフォームで使用できます。 クエリはAzure Databricksコンピューティングでのみ実行されます。つまり、カタログ フェデレーションはクエリ フェデレーションよりもコスト効率が高く、パフォーマンスが最適化されます。
  • Unity カタログに移行中だが、外部カタログで管理されるデータを段階的に移行する必要がある。
  • 一部のデータが外部カタログに留まり、一部のデータが Unity Catalog によって管理される長期的なハイブリッド モデルが必要です。
  • 外部カタログにアクセスするための接続を Unity カタログに作成します。
  • ストレージ資格情報と、テーブル パスの外部の場所を作成します。
  • 接続と外部の場所を使用して外部カタログを作成します。
  • 外部カタログ内のテーブルに対する権限をユーザーに付与します。
  • クエリを実行します。 これらはオブジェクト ストレージに対して直接実行されます。

サポートされているデータ ソース

クエリ フェデレーションを使用して、次のソースに接続します。

カタログ フェデレーションを使用して、次のソースに接続します。

Spark データ ソース

Spark データ ソース API を使用すると、Azure Databricksから直接外部データベースの読み取りと書き込みを行うことができます。 Lakehouse Federation がソースをサポートしていない場合、書き込みアクセスが必要な場合、またはクエリの実行と並列化をより詳細に制御する必要がある場合に使用します。

Databricks Runtime には、PostgreSQL、SQL Server、MySQL、Snowflake、Redshift などの一般的なデータベース用のバンドル されたコネクタが含まれています。 JDBC 互換データベースの場合は、JDBC Unity カタログ接続を使用して、一元化された資格情報管理を使用して独自のドライバーを使用できます。 また、PySpark DataSource API を使用して、専用クラスターにサード パーティ製コネクタをインストールしたり、Pythonで完全カスタム コネクタを構築したりすることもできます。

セットアップ手順と詳細については、「 Spark データ ソース」を参照してください。

その他のリソース