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 | 外部システムに依存します |
データ削除日 | はい | 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宣言型パイプラインとマテリアライズドビューを参照してください。