Databricks Unity カタログテーブルの種類

Unity カタログでは、マネージド テーブル、外部テーブル、および外部テーブルの 3 種類のプライマリ テーブルがサポートされています。 データの格納方法、管理方法、および統制方法は、種類によって異なります。

マネージド テーブル

マネージド テーブルは、既定で推奨されるテーブルの種類です。 Unity カタログは、データのライフサイクル、ストレージの場所、および最適化を管理します。 マネージド テーブルを削除すると、メタデータと基になるデータ ファイルの両方が削除されます。

マネージド テーブルは Delta Lake または Apache Iceberg によってサポートされ、次の機能を提供します。

  • ストレージとコンピューティングのコストを削減するための自動最適化
  • すべてのクライアントの種類でクエリのパフォーマンスを向上
  • テーブルの自動メンテナンス
  • 開いている API を使用して Databricks 以外のクライアントのアクセスをセキュリティで保護する
  • 最新のプラットフォーム機能への自動アップグレード

データ ファイルは、テーブルを含むスキーマまたはカタログに格納されます。 Delta Lake と Apache Iceberg の Unity カタログマネージド テーブルを参照してください。

外部テーブル

外部テーブルは、管理するクラウド オブジェクト ストレージに格納されているデータを参照します。 Unity カタログはデータ アクセスを管理しますが、データのライフサイクル、最適化、またはストレージ レイアウトは管理しません。 外部テーブルを削除すると、カタログ メタデータのみが削除され、基になるデータ ファイルは残ります。

Unity カタログの外部テーブルでは、Delta Lake、CSV、JSON、AVRO、PARQUET、ORC、TEXT の各形式がサポートされます。 Databricks では、Delta Lake 形式にはトランザクションの保証とパフォーマンスの最適化があり、他の形式では使用できないので、使用することをお勧めします。

次の必要がある場合は、外部テーブルを使用します。

  • Unity カタログのマネージド テーブルと互換性のない既存のデータを登録する
  • 他の外部アクセス パターンをサポートしていない Databricks 以外のクライアントからの直接データ アクセスを提供する

外部テーブルを操作する」を参照してください。

外部テーブル

外部テーブル (フェデレーション テーブルとも呼ばれます) は、Unity カタログに登録されている外部カタログによって管理される読み取り専用テーブルです。 外部システムはデータとメタデータを管理しますが、Unity Catalog ではクエリ用のデータ ガバナンスが追加されます。

Azure Databricks では、外部テーブルを登録するための 2 つの方法がサポートされています。

  • クエリフェデレーション: PostgreSQL や MySQL などの外部データ システムへのセキュリティで保護された JDBC 接続を使用します
  • カタログ フェデレーション: 外部カタログを接続して、ファイル ストレージ内のデータに直接クエリを実行します

Delta Lake 形式を使用する外部テーブルには、Unity カタログのマネージド テーブルで使用できる多くの最適化がありません。 運用環境のワークロードまたは頻繁にクエリを実行するデータセットの場合は、パフォーマンスを向上させるために Unity カタログのマネージド テーブルに移行します。 外部テーブルの操作を参照してください。

テーブル型の比較

次の表は、3 つのテーブルの種類を比較しています。

機能 マネージド テーブル 外部テーブル 外部テーブル
データ ライフサイクル管理 Unity カタログを管理します。 あなたは管理する 外部システムが管理する
ストレージの場所 Unity カタログを管理します。 指定してください。 外部システムが管理する
自動最適化 Yes Limited No
サポートされている形式 Delta Lake、Apache Iceberg Delta Lake (推奨)、CSV、JSON、AVRO、PARQUET、ORC、TEXT 外部システムに依存
DROP TABLE にデータが削除されました Yes No No
最適な用途 運用ワークロード、頻繁にクエリを実行するデータ 従来の統合、既存のデータ 外部システムからの移行、一時的なアクセス

その他のテーブルの種類

Azure Databricks では、特定のユース ケースに特化したテーブルの種類もサポートされています。

  • ストリーミング テーブル: 増分処理ロジックを使用して Delta Lake によってサポートされる Lakeflow パイプライン データセット
  • 具体化されたビュー: マネージド フロー ロジックを使用してクエリ結果を具体化する Delta Lake に基づく Lakeflow パイプライン データセット

レガシ テーブルの種類

次のレガシ テーブルの種類は下位互換性のためにサポートされていますが、新しい開発には推奨されません。

Hive のテーブル

Hive テーブルは、従来の Hive メタストアによって管理され、Hive SerDe コーデックや Hive SQL 構文などのレガシ パターンを使用します。 既定では、レガシ Hive メタストアを使用して登録されたテーブルは、レガシ DBFS ルートにデータを格納します。

Databricks では、すべてのテーブルをレガシ HMS から Unity カタログに移行することをお勧めします。 「レガシ Hive メタストア内のデータベース オブジェクト」を参照してください。

必要に応じて、Hive メタストアを Unity カタログにフェデレーションし、Unity カタログの外部テーブルとしてテーブルにアクセスできます。 Hive メタストアのフェデレーション: Unity カタログを有効にして、Hive メタストアに登録されているテーブルを管理する方法に関する説明を参照してください。

Apache Spark では Hive テーブルの登録とクエリがサポートされていますが、Hive SerDe コーデックはAzure Databricks用に最適化されていません。 外部システムによって書き込まれたデータに対するクエリをサポートする必要がある場合にのみ、Hive テーブルを登録します。 Hive テーブル (レガシ) を参照してください。

リアルタイム テーブル

ライブ テーブルという用語は、具体化されたビューとして利用できるようになった機能の以前の実装を指します。 具体化されたビュー構文を使用するように、ライブ テーブルを参照するレガシ コードを更新します。 Spark 宣言型パイプライン具体化されたビューを参照してください。