Unity Catalogとは

この記事では、Databricks 上のデータと AI 資産の統合ガバナンス ソリューションである Unity Catalog を紹介します。

Unity Catalog はオープンソース実装としても利用できます。 発表ブログと公開Unity Catalog GitHub リポジトリをご覧ください。

Unity Catalog の概要

Unity Catalogでは、複数のDatabricksワークスペースに対して、一元化されたアクセス制御、監査、系列、およびデータ検出機能を利用できます。

Unity Catalogの図

Unity Catalogの主な機能は次のとおりです。

  • 一度定義すれば、どこでも安全: Unity Catalog は、すべてのワークスペースに適用されるデータ アクセス ポリシーを 1 か所で管理できます。

  • 標準準拠のセキュリティ モデル: Unity Catalogのセキュリティ モデルは標準の ANSI SQLに基づいており、管理者はカタログ、スキーマ (データベースとも呼ばれます)、テーブル、ビューのレベルで、使い慣れた構文を使用して既存のデータレイクに権限を付与できます。

  • 組み込みの監査とリネージ: Unity Catalog は、データへのアクセスを記録するユーザー レベルの監査ログを自動的にキャプチャします。 Unity Catalogは、すべての言語でデータアセットがどのように作成および使用されるかを追跡するリネージデータもキャプチャします。

  • データディスカバリー: Unity Catalogではデータアセットにタグを付けて文書化でき、またデータ利用者がデータを見つけるのに役立つ検索インターフェースを利用できます。

  • システム テーブル (パブリック プレビュー): Unity Catalogを使用すると、監査ログ、課金対象の使用状況、系列など、アカウントの運用データに簡単にアクセスしてアクセスできます。

Unity Catalogオブジェクトモデル

Unity Catalog では、すべてのメタデータがメタストアに登録されます。 任意の Unity Catalog メタストア内のデータベース オブジェクトの階層は 3 つのレベルに分かれており、テーブル、ビュー、ボリューム、モデル、関数を参照するときに 3 レベルの名前空間 ( catalog.schema.table-etc ) として表されます。

Unity Catalogオブジェクトモデル図

メタストア

メタストアは、Unity Catalog 内のメタデータの最上位コンテナーです。 データとAIアセットに関するメタデータと、それらへのアクセスを管理する権限を登録します。 ワークスペースで Unity Catalog を使用するには、Unity Catalog メタストアがアタッチされている必要があります。

ワークスペースがあるリージョンごとに 1 つのメタストアが必要です。 通常、メタストアは、リージョンに初めて Databricks ワークスペースを作成するときに自動的に作成されます。 一部の古いアカウントの場合、アカウント管理者がメタストアを作成し、そのリージョンのワークスペースをメタストアに割り当てる必要があります。

Unity Catalogメタストアの作成」を参照してください。

メタストア内のオブジェクト階層

Unity Catalogメタストアでは、3 レベルのデータベース オブジェクト階層は、スキーマを含むカタログで構成され、スキーマにはテーブルやモデルなどのデータとAIオブジェクトが含まれます。

レベル1:

  • カタログ は、データ資産を整理するために使用され、通常はデータ分離スキームの最上位レベルとして使用されます。 カタログは多くの場合、組織単位またはソフトウェア開発ライフサイクルの範囲を反映します。 「Databricks のカタログとは何ですか?」を参照してください。

  • ストレージ資格情報や外部ロケーションなどのデータ保護不可能なオブジェクトは、 Unity Catalogでデータガバナンス モデルを管理するために使用されます。 これらもメタストアの直下にあります。 これらについては、「 その他のセキュリティ保護可能なオブジェクト」で詳しく説明します。

レベル2:

  • スキーマ(データベースとも呼ばれます) には、テーブル、ビュー、ボリューム、AI モデル、および関数が含まれます。 スキーマは、データと AI アセットをカタログよりも細かい論理カテゴリに整理します。 通常、スキーマは単一のユースケース、プロジェクト、またはチーム サンドボックスを表します。 「Databricks のスキーマとは何ですか?」を参照してください。

レベル3:

Unity Catalog でのデータベース オブジェクトの操作

Unity Catalogでのデータベース オブジェクトの操作はHive metastoreに登録されているデータベース オブジェクトの操作と非常に似ていますが、 Hive metastoreではオブジェクト名前空間にカタログが含まれていないという点が異なります。 使い慣れた ANSI 構文を使用して、データベース オブジェクトの作成、データベース オブジェクトの管理、権限の管理、Unity Catalog でのデータの操作を行うことができます。 「カタログエクスプローラ」(Catalog Explorer) UI を使用して、データベースオブジェクトの作成、データベースオブジェクトの管理、およびデータベースオブジェクトに対するパーミッションの管理を行うこともできます。

詳細については、 Databricksのデータベース オブジェクト」およびUnity Catalogと従来のHive metastoreの操作」を参照してください。

その他のセキュリティ保護可能なオブジェクト

スキーマに含まれるデータベース オブジェクトと AI アセットに加えて、Unity Catalog は次のセキュリティ保護可能なオブジェクトを使用してデータへのアクセスも管理します。

Delta Sharingセキュリティ保護可能なオブジェクトの詳細については、「 Delta Sharingを使用してデータとAI アセットを安全に共有する」を参照してください。

Unity Catalog 内のデータベース オブジェクトやその他のセキュリティ保護可能なオブジェクトへのアクセスの許可と取り消し

セキュリティ保護可能なオブジェクトへのアクセスは、メタストア自体を含め、階層内の任意のレベルで許可および取り消すことができます。 オブジェクトにアクセスすると、アクセスが取り消されない限り、そのオブジェクトのすべての子に同じアクセス権が暗黙的に付与されます。

一般的な ANSI SQL コマンドを使用して、Unity Catalog 内のオブジェクトへのアクセスを許可および取り消すことができます。 例えば:

GRANT CREATE TABLE ON SCHEMA mycatalog.myschema TO `finance-team`;

カタログ エクスプローラー、 Databricks CLI 、 REST APIsを使用してオブジェクトのアクセス許可を管理することもできます。

カタログエクスプローラを使用した権限の付与

Unity Catalog で権限を管理する方法については、 「Unity Catalog で権限を管理する」を参照してください。

Unity Catalog のデータベース オブジェクトへのデフォルト アクセス

Unity Catalog は最小権限の原則に基づいて動作し、ユーザーは必要なタスクを実行するために必要な最小限のアクセス権を持ちます。 ワークスペースが作成されると、管理者以外のユーザーは自動的に作成されたワークスペース カタログにのみアクセスできるようになります。これにより、このカタログは、ユーザーがUnity Catalogでデータベース オブジェクトを作成してアクセスするプロセスを試すのに便利な場所になります。 ワークスペース カタログの権限を参照してください。

管理者の役割

ワークスペース管理者とアカウント管理者には、デフォルトで追加の権限が与えられます。 メタストア管理者はオプションのロールであり、メタストア レベルでテーブルとボリュームのストレージを管理する場合に必須であり、リージョン内の複数のワークスペースにわたってデータを集中的に管理する場合に便利です。 詳細については、 Unity Catalogの管理者権限」および「 (オプション) メタストア管理者ロールの割り当て」を参照してください。

管理対象のテーブルと外部のテーブルとボリューム

テーブルとボリュームは、管理または外部にすることができます。

  • 管理対象テーブルはUnity Catalogによってフルマネージド化されており、 Unity Catalog各管理対象テーブルのガバナンスと基礎となるデータ ファイルの両方を管理します。 管理対象テーブルは、クラウド ストレージ内の Unity Catalog で管理される場所に保存されます。 管理対象テーブルでは常に Delta Lake 形式が使用されます。 マネージ テーブルは、メタストア レベル、カタログ レベル、またはスキーマ レベルで格納できます。

  • 外部テーブルは、Databricks からのアクセスが Unity Catalog によって管理されるテーブルですが、そのデータ ライフサイクルとファイル レイアウトはクラウド プロバイダーやその他のデータ プラットフォームを使用して管理されます。 通常、外部テーブルは、既存の大量のデータを Databricks に登録する場合や、Databricks 外部のツールを使用してデータへの書き込みアクセスが必要な場合に使用します。 外部テーブルは、複数のデータ形式でサポートされています。 外部テーブルが Unity Catalog メタストアに登録されると、マネージド テーブルの場合と同様に、Databricks によるそのテーブルへのアクセスを管理および監査し、操作できるようになります。

  • 管理対象ボリュームはUnity Catalogによってフルマネージド化されており、 Unity Catalogクラウドプロバイダーのアカウント内のボリュームの保存場所へのアクセスを管理します。 管理対象ボリュームを作成すると、そのボリュームは、含まれているスキーマに割り当てられた 管理対象ストレージの場所に 自動的に格納されます。

  • 外部ボリュームは、Databricks の外部で管理されているが、Databricks 内からのアクセスを制御および監査するために Unity Catalog に登録されているストレージの場所にある既存のデータを表します。 Databricksで外部ボリュームを作成するときは、その場所を指定します。その場所は、 Unity Catalogの外部場所で定義されているパス上にある必要があります。

Databricks では、Unity Catalog のガバナンス機能とパフォーマンスの最適化を最大限に活用するために、マネージド テーブルとボリュームを推奨しています。

マネージド テーブルの操作」、「 外部テーブルの操作」、および 「マネージド ボリュームと外部ボリューム」を参照してください。

マネージド ストレージを使用したデータの分離

組織によっては、特定の種類のデータをクラウド テナント内の特定のアカウントまたはバケット内に保存することが必要になる場合があります。

Unity Catalog を使用すると、このような要件を満たすために、メタストア、カタログ、またはスキーマ レベルでストレージの場所を構成することができます。 システムは、スキーマからカタログ、メタストアまでのストレージの場所の階層を評価します。

たとえば、組織に人事リソースに関連する本番運用データをバケット s3://mycompany-hr-prod に保存することを要求する企業コンプライアンス ポリシーがあるとします。 Unity Catalog では、カタログ レベルで場所を設定し、たとえばhr_prodという名前のカタログを作成し、それに場所 s3://mycompany-hr-prod/unity-catalog を割り当てることで、この要件を実現できます。 つまり、 hr_prod カタログで作成されたマネージドテーブルまたはボリューム (たとえば、 CREATE TABLE hr_prod.default.table を使用) は、データを s3://mycompany-hr-prod/unity-catalog に保存します。 必要に応じて、スキーマ レベルの場所を指定して、 hr_prod catalog 内のデータをより詳細なレベルで整理できます。

一部のカタログでストレージの分離が必要ない場合は、必要に応じてメタストア レベルでストレージの場所を設定できます。 この場所は、ストレージが割り当てられていないカタログとスキーマ内の管理対象テーブルとボリュームのデフォルトの場所として機能します。 ただし、通常、Databricks では、カタログごとに個別の管理対象ストレージの場所を割り当てることをお勧めします。

詳細については、 「 Unity Catalogで管理対象ストレージの場所を指定する」および「 ストレージ内でデータが物理的に分離される」を参照してください。

ワークスペースとカタログのバインディング

デフォルトでは、カタログ所有者 (およびアカウントに定義されている場合はメタストア管理者) は、同じ Unity Catalog メタストアに接続された複数のワークスペースのユーザーがカタログにアクセスできるようにすることができます。 ただし、ワークスペースを使用してユーザーのデータ アクセスを分離する場合は、アカウント内の特定のワークスペースへのカタログ アクセスを制限して、特定の種類のデータがそれらのワークスペースでのみ処理されるようにする必要があります。 たとえば、本番運用と開発のワークスペースを別々にしたり、個人データを処理するための別のワークスペースが必要になる場合があります。 これは、ワークスペース カタログ バインディングと呼ばれます。 「特定のワークスペースへのカタログ アクセスを制限する」を参照してください。

データの分離を強化するために、クラウド ストレージ アクセスを特定のワークスペースにバインドすることもできます。 「(オプション) 特定のワークスペースにストレージ資格情報を割り当てる」および「(オプション) 特定のワークスペースに外部ロケーションを割り当てる」を参照してください。

データ・アクセスの監査

Unity Catalog は、メタストアに対して実行されたアクションの監査ログをキャプチャし、管理者が特定のデータセットにアクセスしたユーザーとそのユーザーが実行したアクションに関する詳細な情報にアクセスできるようにします。

Unity Catalogによって管理されるシステムテーブルを使用して、アカウントの監査ログにアクセスできます。

Unity Catalogイベントの監査」Unity Catalogイベント」 、および「システムテーブルを使用した使用状況の監視」を参照してください。

トラッキングデータ

Unity Catalog を使用すると、Databricks クラスターまたは SQL ウェアハウスで実行される任意の言語のクエリ全体でランタイム データ リネージをキャプチャできます。 リネージは列レベルまでキャプチャされ、クエリに関連するノートブック、ワークフロー、ダッシュボードが含まれます。 詳細については、 Unity Catalogを使用したデータリネージのキャプチャと表示」を参照してください。

レイクハウスフェデレーションと Unity Catalog

レイクハウスフェデレーションは、Databricksのクエリーフェデレーションプラットフォームです。 クエリー フェデレーション という用語は、すべてのユーザーを統一されたシステムに移行しなくても、ユーザーとシステムが複数のサイロ化された Data に対してクエリーを実行できるようにする機能のコレクションを表します。

Databricks は、 Unity Catalog を使用してクエリー フェデレーションを管理します。 Unity Catalog を使用して、一般的な外部データベース システムへの読み取り専用 接続 を構成し、外部データベースをミラーリングする フォーリンカタログ を作成します。 Unity Catalog のデータガバナンスとデータリネージ ツールを使用すると、Databricks ワークスペース内のユーザーが作成したすべてのフェデレーション クエリーのデータ アクセスが管理および監査されます。

「レイクハウスフェデレーションとは」をご覧ください。

Delta Sharing、Databricks Marketplace、Unity Catalogなど

Delta Sharing は、Databricks を使用しているかどうかに関係なく、組織外のユーザーとデータや AI 資産を共有できる安全なデータ共有プラットフォームです。 Delta Sharing はオープンソース実装として利用可能ですが、Databricks では拡張機能を最大限に活用するには Unity Catalog が必要です。 Delta Sharing を使用してデータと AI アセットを安全に共有するを参照してください。

データ製品を交換するためのオープンフォーラムである Databricks Marketplace は Delta Sharing 上に構築されているため、Marketplace プロバイダーになるには Unity Catalog 対応のワークスペースが必要です。 「Databricks Marketplace とは何ですか?」を参照してください。

自分の組織のUnity Catalogを設定するにはどうすればよいですか?

Unity Catalog を使用するには、Databricks ワークスペースで Unity Catalog が有効になっている必要があります。つまり、ワークスペースは Unity Catalog メタストアにアタッチされている必要があります。 すべての新しいワークスペースは作成時に自動的に Unity Catalog に対して有効になりますが、古いワークスペースではアカウント管理者が Unity Catalog を手動で有効にする必要がある場合があります。 ワークスペースがUnity Catalogに対して自動的に有効になっているかどうかに関係なく、 Unity Catalogを開始するには次の手順も必要です。

  • カタログとスキーマを作成して、テーブルやボリュームなどのデータベースオブジェクトを含めます。

  • 管理対象のストレージの場所を作成して、これらのカタログとスキーマに管理対象のテーブルとボリュームを格納します。

  • カタログ、スキーマ、およびデータベース・オブジェクトへのアクセス権をユーザーに付与します。

Unity Catalogで自動的に有効になるワークスペース。これは、すべてのワークスペース ユーザーに広範な権限が付与されるワークスペース カタログです。 このカタログは、Unity Catalog を試すための便利な出発点です。

詳細なセットアップ手順については、 「Unity Catalog のセットアップと管理」を参照してください。

既存のワークスペースを Unity Catalog に移行する

最近Unity Catalog用に有効にした古いワークスペースがある場合は、従来のHive metastoreによって管理されているデータがある可能性があります。 そのデータは に登録されているデータと一緒に操作できますが、従来のUnity Catalog Hive metastoreHive metastoreUnity Catalogは非推奨になっており、Unity Catalog の優れたガバナンス機能とパフォーマンスを活用するには、できるだけ早く のデータを に移行する必要があります。

移行には、次のものが含まれます。

  1. ワークスペースのローカル グループをアカウント レベルのグループに変換します。 Unity Catalog は、アカウント レベルで ID 管理を集中化します。

  2. Hive metastoreで管理されているテーブルとビューをUnity Catalogに移行します。

  3. クエリとワークフローを更新して、古い テーブルではなく、新しいUnity Catalog Hive metastoreテーブルを参照するようにします。

移行の管理に役立つのは、次の点です。

Unity Catalogの要件と制限

Unity Catalog 、以下で説明する特定の種類のコンピュートおよびファイル形式が必要です。 また、以下に、すべての Databricks Runtime バージョンの Unity Catalog で完全にサポートされていない Databricks 機能もいくつか示します。

リージョンのサポート

すべてのリージョンで Unity Catalog がサポートされています。 詳細については、「Databricks のクラウドとリージョン」を参照してください。

コンピュートの要件

Unity Catalogは、Databricks Runtime 11.3 LTS以上を実行するクラスターでサポートされます。Unity Catalogは、すべてのSQLウェアハウスコンピュートバージョンでデフォルトでサポートされています。

以前のバージョンのDatabricks Runtimeで実行されているクラスターでは、Unity Catalog GAの一部の機能がサポートされない場合があります。

Unity Catalog のデータにアクセスするには、クラスターを正しいアクセス モードで構成する必要があります。 Unity Catalog はデフォルトで安全です。 クラスターが共有またはシングルユーザー アクセス モードで構成されていない場合、クラスターは Unity Catalog 内のデータにアクセスできません。 アクセス・モードを参照してください。

Databricks Runtime の各バージョンでの Unity Catalog 機能の変更の詳細については、 リリースノートを参照してください。

Unity Catalog の制限事項は、アクセス モードと Databricks Runtime のバージョンによって異なります。 「Unity Catalog のコンピュート アクセス モードの制限事項」を参照してください。

ファイル形式のサポート

Unity Catalogでは、次のテーブル形式がサポートされています。

セキュリティ保護可能なオブジェクトの名前付け要件

Unity Catalog内のすべてのオブジェクト名には、次の制限が適用されます。

  • オブジェクト名は 255 文字を超えることはできません。

  • 次の特殊文字は使用できません。

    • 期間 (.)

    • スペース ( )

    • スラッシュ (/)

    • すべての ASCII 制御文字 (00-1F 16 進数)

    • 削除文字 (7F 16 進数)

  • Unity Catalog は、すべてのオブジェクト名を小文字で格納します。

  • SQL で UC 名を参照する場合は、バッククォートを使用して、ハイフン (-) などの特殊文字を含む名前をエスケープする必要があります。

列名には特殊文字を使用できますが、特殊文字を使用する場合は、すべての SQL ステートメントで名前をバッククォートでエスケープする必要があります。 Unity Catalog では列名の大文字と小文字の区別が保持されますが、 Unity Catalog テーブルに対するクエリーでは大文字と小文字が区別されません。

制限

Unity Catalog には以下の制限があります。 これらの一部は、古いDatabricks Runtimeバージョンおよびコンピュート アクセス モードに固有のものです。

構造化ストリーミング ワークロードには、Databricks Runtime とアクセス モードに応じて追加の制限があります。 Unity Catalogのコンピュート アクセス モードの制限を参照してください。

Databricks は、このリストを定期的に縮小する新しい機能をリリースします。

  • 以前にワークスペースで作成されたグループ (つまり、ワークスペース レベルのグループ) は、 Unity Catalog GRANT ステートメントでは使用できません。 これは、ワークスペース全体にまたがるグループの一貫したビューを確保するためです。 GRANT ステートメントで Group を使用するには、アカウント レベルでグループを作成し、プリンシパルまたはグループ管理の自動化 ( SCIM 、Okta、 Microsoft Entra ID (旧Azure Active Directory ) コネクタ、 Terraformなど) を更新して、ワークスペース エンドポイントではなくアカウント エンドポイントを参照するようにします。 アカウント グループとワークスペース ローカル グループの違いを参照してください。

  • R のワークロードは、 Databricks Runtime 15.3 以下を実行しているコンピュート上の行レベルまたは列レベルのセキュリティのための動的ビューの使用をサポートしていません。

    動的ビューをクエリする R のワークロードには、 Databricks Runtime 15.4 LTS以降を実行するシングル ユーザー コンピュート リソースを使用します (パブリック プレビュー)。 このようなワークロードには、サーバレス コンピュートが有効になっているワークスペースも必要です。 詳細については、 「シングルユーザー コンピュートでのきめ細かいアクセス制御」を参照してください。

  • 12.2 Unity Catalog以下を実行しているコンピュートのDatabricks RuntimeLTS では、浅いクローン機能はサポートされていません。Databricks Runtime 13.3 LTS 以降では、シャロー クローンを使用してマネージド テーブルを作成できます。 Databricks Runtime のバージョンに関係なく、これらを使用して外部テーブルを作成することはできません。 Unity Catalogテーブルについては、シャロークローンを参照してください。

  • バケット化は、Unity Catalogテーブルではサポートされません。Unity Catalogでバケットテーブルを作成しようとするコマンドを実行すると、例外がスローされます。

  • 一部のクラスターのみがUnity Catalogにアクセスし、他のクラスターがアクセスしない場合、複数のリージョンのワークスペースから同じパスまたはDelta Lakeテーブルに書き込むと、パフォーマンスの信頼性が低下する可能性があります。

  • ALTER TABLE ADD PARTITIONなどのコマンドを使用して作成されたカスタムパーティションスキームは、Unity Catalogのテーブルではサポートされていません。Unity Catalogは、ディレクトリスタイルのパーティション分割を使用するテーブルにアクセスできます。

  • Unity CatalogへのDataFrame書き込み操作の上書きモードは、Deltaテーブルでのみサポートされ、他のファイル形式ではサポートされません。ユーザーは、親スキーマに対するCREATE権限を持っている必要があり、また既存のオブジェクトの所有者であるか、オブジェクトに対するMODIFY権限を持っている必要があります。

  • Python UDF は、Databricks Runtime 12.2 LTS 以下ではサポートされていません。 UDAFsこれには、 、UDTF、およびPandas SparkapplyInPandas上の ( およびmapInPandas ) が含まれます。Python スカラー UDF は、Databricks Runtime 13.3 LTS 以降でサポートされています。

  • Scala UDF は、共有クラスター上の Databricks Runtime 14.1 以下ではサポートされていません。 Scala スカラー UDF は、共有クラスター上の Databricks Runtime 14.2 以降でサポートされています。

  • 標準のScalaスレッドプールはサポートされていません。代わりに、org.apache.spark.util.ThreadUtilsの特殊なスレッドプール(org.apache.spark.util.ThreadUtils.newDaemonFixedThreadPoolなど)を使用します。ただし、ThreadUtilsのスレッドプール(ThreadUtils.newForkJoinPoolおよびScheduledExecutorServiceスレッドプール)はサポートされません。

Unity Catalogに登録されたモデルには追加の制限があります。 「制限事項」を参照してください。

リソースクォータ

Unity Catalog は、セキュリティ保護可能なすべてのオブジェクトにリソース クォータを適用します。 これらのリソース制限を超えることが予想される場合は、Databricks アカウント チームにお問い合わせください。

以下のクォータ値は、Unity Catalog の親 (または祖父母) オブジェクトを基準にして表されます。

オブジェクト

テーブル

スキーマ

10000

テーブル

メタストア

1000000

ボリューム

スキーマ

10000

ボリューム

メタストア

100000

関数

スキーマ

10000

登録されたモデル

スキーマ

1000

登録されたモデル

メタストア

5000

モデルバージョン

登録されたモデル

10000

モデルバージョン

メタストア

100000

スキーマ

カタログ

10000

カタログ

メタストア

1000

接続

メタストア

1000

ストレージ資格情報

メタストア

200

外部ロケーション

メタストア

10000

Delta Sharing 制限については、「 リソースクォータ」を参照してください。