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

DatabricksにおけるDelta LakeとApache Iceberg向けUnity Catalog マネージドテーブル

このページでは、 Databricksで確実かつ推奨されるテーブル タイプであるDelta LakeおよびApache IcebergのUnity Catalogマネージドテーブルについて説明します。 これらのテーブルはUnity Catalogによって完全に管理および最適化されており、マネージドテーブルは読み取りおよび書き込みパターンから学習するため、パフォーマンス、運用上の利点があり、外部のフォーリンテーブルと比較してストレージとコンピュートのコストが低くなります。 Unity Catalogマネージドテーブルの読み取り、書き込み、ストレージ、および最適化の責任をすべて管理します。 外部Deltaテーブルを管理対象のUnity Catalogテーブルに変換する方法については、こちらをご覧ください。

マネージドテーブルのデータファイルは、それらを含むスキーマまたはカタログに格納されます。 「Unity Catalog で管理されたストレージの場所を指定する」を参照してください。

Databricks 、マネージドテーブルを使用して以下を活用することをお勧めします。

  • ストレージとコンピュートのコストを削減します。
  • すべてのクライアントタイプでクエリパフォーマンスが高速になります。
  • 自動テーブルメンテナンスと最適化。
  • オープンAPIを介した非Databricksクライアントへの安全なアクセス。
  • Delta Lake および Iceberg 形式のサポート。
  • 最新のプラットフォーム機能への自動アップグレード。

マネージドテーブルは、 Delta LakeおよびIcebergクライアントからのアクセスを許可することで相互運用性をサポートします。 Unity Catalog 、オープンAPIsと認証情報販売を通じて、Trino、DuckDB、 Apache Spark 、Daft、 Iceberg RESTカタログ統合エンジン (Dremio など) などの外部エンジンがマネージドテーブルにアクセスできるようにします。 オープンAPIsをサポートしていない外部クライアントの場合は、互換Modeを使用して、 Delta LakeまたはIcebergクライアントを使用してマネージドテーブルを読み取ることができます。 オープンソース プロトコルであるDelta Sharing は、外部のパートナーやプラットフォームとの安全で管理されたデータ共有を可能にします。

マネージドテーブルは、 Databricksでサポートされているすべての言語と製品で操作できます。 マネージドテーブルを作成、更新、削除、またはクエリするには、特定の権限が必要です。 Unity Catalog での特権の管理を参照してください。

注記

このページでは、Unity Catalog マネージドテーブルについてのみ説明します。レガシーHive metastoreのマネージドテーブルについては、レガシーHive metastoreのデータベースオブジェクトを参照してください。

Unity Catalog のマネージドテーブルを使用する理由

Unity Catalog マネージドテーブルは、ストレージコストとクエリ速度を最適化し、Delta Lake および Apache Iceberg に対応するサードパーティツールとの相互運用を可能にします。データマネジメントとパフォーマンスを簡素化するため、これらのマネージドテーブルは、ファイルサイズの圧縮やインテリジェントな統計情報の収集といったAIを活用したテクノロジーを利用します。

以下の機能は、Unity Catalog マネージドテーブルに固有のものであり、外部テーブルおよびフォーリンテーブルでは利用できません。

機能

利点

デフォルトで有効になっていますか?

設定。

カタログコミット

テーブル間での複数ステートメントトランザクションの利用を可能にし、Unity Catalog から直接メタデータを提供することでクエリ計画を高速化し、強制可能なスキーマおよび制約の変更、および外部エンジンからの安全な書き込みを実現します。

いいえ。

はい。

delta.feature.catalogManagedテーブルプロパティを設定します。「カタログコミットを有効にする」を参照してください。

予測的最適化

予測的最適化は、手動のメンテナンス作業を必要とせずに、AI を使用してデータレイアウトとコンピュートを自動的に最適化します。Databricks では、すべてのマネージドテーブルに対し、ストレージとコンピュートのコストを削減するために、予測的最適化を有効にすることをお勧めします。

予測的最適化の自動実行:

はい、2024 年 11 月 11 日以降に作成されたすべての新規アカウントについてです。

既存のアカウントでは、Databricksはデフォルトで予測的最適化を段階的に有効化しています。予測的最適化が有効になっているかどうかを確認するを参照してください。

はい。予測 的最適化を有効にするを参照してください。

マルチステートメントトランザクション

1つまたは複数のテーブル間で複数のSQLステートメントを1つのアトミックコミットとして実行でき、ACID保証を備えています。すべての変更は同時に成功するか、同時にロールバックされます。ミッションクリティカルなウェアハウス ワークロードで、ストアド プロシージャSQL スクリプティングに使用します。

管理対象の Delta Lake テーブルに書き込むトランザクションは、パブリック プレビュー段階です。

マネージド Apache Iceberg テーブルへの書き込みトランザクションは、プライベート プレビューの対象です。

いいえ。

はい。非対話型トランザクションにはBEGIN ATOMIC ... END;を、インタラクティブなトランザクションにはBEGIN TRANSACTION; ... COMMIT;を使用します。「トランザクション モード」を参照してください。

自動 リキッドクラスタリング

予測的最適化が有効なテーブルの場合、自動リキッドクラスタリングによりDatabricksはクラスタリングキーをインテリジェントに選択できます。クエリパターンが変化すると、Databricks はパフォーマンスを向上させ、コストを削減するためにクラスタリングキーを自動的に更新します。

いいえ。

はい。「 リキッドクラスタリングを有効にする」を参照してください。

メタデータのキャッシング

トランザクションメタデータのインメモリキャッシュにより、クラウド上に保存されているトランザクションログへのリクエストが最小限に抑えられ、クエリのパフォーマンスが向上します。

はい。

いいえ。メタデータキャッシュは、マネージドテーブルに対して常に有効になっています。

全文検索インデックス

フルテキスト検索インデックスは、マネージドテーブルのテキスト列における部分文字列およびキーワードの検索を高速化します。インデックスが適用されると、Databricks は一致する行を含まないファイルをスキップし、スキャンされるデータ量を削減します。

全文検索インデックスは、search関数とisearch関数を使用して、部分文字列と単語の検索を高速化します。

全文検索インデックスはベータ版であり、Databricks Runtime 18.2以降が必要です。

いいえ。

はい、CREATE SEARCH INDEXで作成します。

DROP TABLEコマンド後の自動ファイル削除

マネージドテーブルをDROPすると、Databricksは8日後にクラウドストレージ内のデータを削除して、ストレージコストを削減します。外部テーブルでは、ストレージバケットからファイルを**手動で削除する必要があります**。

はい。

いいえ。マネージドテーブルの場合、ファイルは常に 8 日後に自動的に削除されます。

外部システムを使用して Databricks データにアクセスする

マネージドテーブルは、 Delta LakeおよびIcebergクライアントからのアクセスを許可することで相互運用性をサポートします。 Unity Catalog 、オープンAPIsと認証情報販売を通じて、Trino、DuckDB、 Apache Spark 、Daft、 Iceberg RESTカタログ統合エンジン (Dremio やSnowflakeなど) などの外部エンジンがマネージドテーブルにアクセスできるようにします。 サポートされている外部エンジンのリストについては統合を参照してください。このリストに含まれていない場合は、エンジンのドキュメントを確認してください。

次のオープンAPIs 、外部システムからUnity Catalogマネージドテーブルへのアクセスを提供します。

  • Unity REST API :Deltaクライアントが管理対象のDeltaテーブルに対して、読み取り、書き込み、および作成のアクセス権を提供します。
  • Iceberg RESTカタログ(IRC) :Icebergクライアントが管理対象のIcebergテーブルに対して読み取り、書き込み、作成のアクセス権を提供し、Iceberg読み取りが有効になっているDeltaテーブル(UniForm)に対しては読み取り専用アクセス権を提供します。

どちらのAPIs資格情報販売をサポートしており、これにより、要求元のDatabricksプリンシパルの権限を継承する一時的なスコープ付き資格情報が提供されるため、ガバナンスとセキュリティ制御が維持されます。

さらに、 Delta Sharing 、外部パートナーやプラットフォームへの安全かつ管理されたデータ アクセスを可能にするオープンソース プロトコルです。 Delta Sharing を使用すると、パートナーに一時的な読み取り専用アクセスを許可できます。

マネージドテーブルへのすべての読み取りと書き込みでは、テーブル名とカタログ名、およびスキーマ名が存在する場合にはそれらの名前を使用する必要があります。 たとえば、 catalog_name.schema_name.table_name 。Unity Catalogマネージドテーブルへのパスベースのアクセスは、 Unity Catalogアクセス制御をバイパスし、マネージドテーブルの機能が適切に動作しないため、サポートされていません (互換Modeを除く)。

マネージドテーブルを作成する

マネージドテーブルを作成するには、次のものが必要です。

  • USE SCHEMA テーブルの親スキーマ上。
  • USE CATALOG テーブルの親カタログ。
  • CREATE TABLE テーブルの親スキーマ上。

次の SQL 構文を使用して、 SQLを使用して空のマネージドテーブルを作成します。 プレースホルダーの値を置き換えます。

  • <catalog-name>:テーブルを格納するカタログの名前。
  • <schema-name>: テーブルを含むスキーマの名前。
  • <table-name>:テーブルの名前。
  • <column-specification>: 各列の名前とデータ型。
SQL
-- Create a managed Delta table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
<column-specification>
);

-- Create a managed Iceberg table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
<column-specification>
)
USING iceberg;

読み取りと書き込みのパフォーマンスを維持するために、Databricks はマネージド Iceberg テーブルのメタデータを最適化する操作を定期的に実行します。このタスクは、Iceberg テーブルに対するMODIFY権限を持つサーバレス コンピュートを使用して実行します。このオペレーションはテーブルのメタデータにのみ書き込みを行い、コンピュートはジョブの実行期間中のみテーブルへのアクセス許可を保持します。

注記

Iceberg テーブルを作成するには、 USING icebergを明示的に指定します。それ以外の場合、 Databricks は デフォルト によって Delta Lake テーブルを作成します。

マネージドテーブルは、クエリ結果から作成することも、 DataFrame 書き込み操作から作成することもできます。 次の記事では、 Databricksでマネージドテーブルを作成するために使用できる多くのパターンの一部を示しています。

マネージドテーブルをドロップする

マネージドテーブルを削除するには、次のものが必要です。

  • MANAGE テーブル上に表示されるか、テーブルの所有者である必要があります。
  • USE SCHEMA テーブルの親スキーマ上。
  • USE CATALOG テーブルの親カタログ。

マネージドテーブルを削除するには、次のSQLコマンドを実行します。

SQL
DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

Unity Catalogドロップされたマネージドテーブルを 8 日間復元するためのUNDROP TABLEコマンドをサポートしています。 8 日後、Databricks は基になるデータをクラウド テナントから削除対象としてマークし、自動テーブル メンテナンス中にファイルを削除します。UNDROP を参照してください。