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

Databricks Unity Catalog テーブルタイプ

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

マネージドテーブル

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

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

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

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

外部テーブル

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

Unity Catalog 外部テーブルは、Delta Lake、CSV、JSON、AVRO、PARQUET、ORC、および TEXT 形式をサポートしています。Databricks は、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ルートにデータを保存します。

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

オプションで、Hive metastore を Unity Catalog にフェデレートし、Unity Catalog でフォーリンテーブルとしてテーブルにアクセスできます。Hive metastore フェデレーション: Hive metastore に登録されたテーブルを Unity Catalog で管理できるようにするを参照してください。

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

Live Tables

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