メインコンテンツまでスキップ

フォーリンテーブルを使用する

外国テーブル は、時に フェデレーテッドテーブル とも呼ばれ、Unity Catalogを使って外国カタログの一部として登録されるテーブルです。フォーリンテーブルには外部システムが管理するデータやメタデータが含まれており、Unity Catalogはこれらのテーブルをクエリするためのデータガバナンスを追加しています。

Databricks では、登録する フォーリンテーブルに対して、以下のメソッドをサポートしています。

  • クエリフェデレーションは 、セキュアなJDBC接続を使用して、PostgreSQLやMySQLなどの外部データシステムにフェデレーションします。
  • カタログ フェデレーションは 、 Hive metastore、 AWS Glue、 Snowflake Horizon Catalog などの外部カタログを接続して、ファイル ストレージ内のデータを直接クエリします。
重要

レガシーなApache SparkやDatabricksワークロードとの後方互換性のために、フェデレーションされたHiveメタストアは、テーブルがHiveのマネージドテーブルなのか、Hive外部テーブルなのかを含むひHiveメタストアのメタデータを返却します。

フォーリンテーブルの使用タイミング

フォーリンテーブルは、 Databricks を既存のデータシステムに統合するとき、またはレガシーシステムから移行するときに柔軟性を提供します。

多くのフォーリンテーブルは、Databricksが管理しないデータに直接アクセスするための一時的なソリューションとして機能し、上流のETLワークフローでデータ移行やコードリファクタリングを必要としません。Databricksは、本番運用ワークロードを駆動するデータセットや頻繁にクエリされるデータセットをUnity Catalogマネージドテーブルに移行することを推奨しています。マネージドテーブルは最高のパフォーマンスを提供し、多くの最適化機能が組み込まれています。「 フォーリンテーブルを管理されたUnity Catalogテーブルに変換する」を参照してください。

クエリフェデレーションは、Lakeflow Connectでサポートされていない外部データシステムからデータを読み込むための補完的なソリューションです。Databricksは、フォーリンテーブルをUnity Catalogに複製するためにマテリアライズドビューを使うことを推奨しています。マテリアライズドビューを持つフォーリンテーブルからデータをロードする」を参照してください。

フォーリンテーブルを作成するか、フォーリンテーブルに書き込む

十分な権限があり、ワークスペースが内部フェデレーテッドHive metastoreで構成されている場合は、その内部フェデレーテッドHive metastoreを基盤とするフォーリンテーブルを作成または書き込むことができます。 外部フェデレーションHive metastoreと、レイクハウスフェデレーションを通じてアクセスされるすべてのフォーリンテーブルは読み取り専用です。

フォーリンテーブルは読み取り専用ですが、「 更新された通り」 フィールドは最新のメタデータ更新をトリガーしたユーザーを示します。Databricksは、メタデータが古いと検出すると、クエリ中に自動的にフォーリンテーブルのメタデータを更新します。その結果、「 Updated by」 フィールドにはクエリを実行した session_user が表示されますが、そのユーザーは基礎データを修正していません。

Databricksは、フォーリンテーブルへの書き込みのためのメタデータ、データ、意味論を管理しません。フォーリンテーブルはDelta LakeやApache IcebergのようなACID準拠フォーマットでバックアップされている場合がありますが、Unity Catalogマネージドテーブルのようなトランザクション保証は提供しません。

ほとんどのDatabricksクエリパフォーマンスの最適化、書き込み速度の向上、データスキッピング、およびメタデータのみのクエリには、Unity Catalogが必要です。Databricksは、最新のDatabricks Runtimeバージョンを使用して、フォーリンテーブルとUnity Catalog マネージドテーブル間の読み取りおよび書き込みクエリパフォーマンスを比較し、遅延とコストの違いを評価することをおすすめします。Delta LakeおよびApache IcebergのUnity Catalog マネージドテーブルを参照してください。