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