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

Databricks Unity Catalog テーブルタイプ

Unity Catalog は、主に 3 つのテーブル タイプをサポートしています:マネージド、外部、およびフォーリンテーブルです。データの保存、管理、ガバナンスの方法は、種類によって異なります。

マネージドテーブル

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

マネージドテーブルはDelta LakeまたはApache Icebergを基盤とし、以下を提供します:

  • ストレージおよびコンピュートコスト削減のための自動最適化
  • すべてのクライアントタイプでクエリ性能を高速化
  • 自動テーブルメンテナンス
  • オープンAPIsを介した非Databricksクライアントへの安全なアクセス
  • 最新プラットフォーム機能への自動アップグレード

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

外部テーブル

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

Unity Catalog 外部テーブルは、Delta Lake フォーマット(推奨)と CSV、JSON、AVRO、PARQUET、ORC、TEXT フォーマットをサポートしています。Deltaではない外部テーブルは、Delta Lakeのトランザクション保証とパフォーマンス最適化を提供しません。

次の場合に外部テーブルを使用します:

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

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

フォーリンテーブル

フォーリンテーブル(フェデレーテッドテーブルとも呼ばれる)は、フォーリンカタログの一部としてUnity Catalogを使用して登録されます。外部システムがデータとメタデータを管理する一方、Unity Catalog はクエリのためにデータガバナンスを追加します。

Databricks はフォーリンテーブルを登録するための2つの方法をサポートしています。

  • クエリフェデレーション: PostgreSQLやMySQLなどの外部データシステムへのセキュアなJDBC接続を使用します。
  • カタログフェデレーション :外部カタログを接続し、ファイルストレージ内のデータを直接クエリします。

Delta Lakeを用いたフォーリンテーブルは、Unity Catalogマネージドテーブルが持つ多くの最適化を有していません。本番運用ワークロードや頻繁にクエリされるデータセットについては、パフォーマンス向上のためにUnity Catalogマネージドテーブルへ移行してください。フォーリンテーブルの操作を参照してください。

比較:テーブルタイプ

次の表は3つのテーブルタイプを比較します。

機能

マネージドテーブル

外部テーブル

フォーリンテーブル

データライフサイクル管理

Unity Catalog が管理します

管理する

外部システムが管理します

ストレージロケーション

Unity Catalog が管理します

指定します

外部システムが管理します

自動最適化

はい

限定

No

サポートされている形式

Delta Lake、Apache Iceberg

Delta Lake (推奨)、CSV、JSON、AVRO、PARQUET、ORC、TEXT

外部システムに依存します

データ削除日 DROP TABLE

はい

No

No

どのようなタスクにベストなのか

本番運用ワークロード、頻繁にクエリされるデータ

レガシー統合、既存データ

外部システムからの移行、一時的なアクセス

その他のテーブルタイプ

Databricks では、特定のユースケース向けに専用のテーブルタイプもサポートされています。

  • ストリーミングテーブル:増分処理ロジックを備えた、Delta LakeによってサポートされるLakeflow Spark宣言型パイプライン データセット
  • マテリアライズドビュー :Delta Lake によってサポートされ、マネージド フロー ロジックを使用してクエリ結果をマテリアライズする、Lakeflow Spark宣言型パイプライン データセット。

レガシーテーブルタイプ

以下のレガシーテーブルタイプは後方互換性のためにサポートされていますが、新規開発には推奨されません。

Hive テーブル

Hiveテーブルは、レガシーHive metastore、Hive SerDeコーデック、またはHive SQL構文などのレガシーパターンを使用します。デフォルトで、レガシーHive metastoreを使用して登録されたテーブルは、レガシーDBFSルートにデータを保存します。

レガシーHMSからすべてのテーブルを Unity Catalog に移行します。従来のHive metastore内のデータベース オブジェクトを参照してください。必要に応じて、Hive metastore を Unity Catalog にフェデレートできます。Hive metastoreフェデレーション: Hive metastoreに登録されたテーブルを管理するためのUnity Catalogの有効化 をご覧ください。

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

Live Tables

*ライブ テーブル*という用語は、現在*マテリアライズドビュー*として実装されている機能の以前の実装を指します。ライブテーブルを参照するレガシーコードは、マテリアライズドビューの構文を使用するように更新する必要があります。Lakeflow Spark宣言型パイプラインマテリアライズドビューを参照してください。