Databricks のカタログとは何ですか?

カタログは、 Databricks Unity Catalogデータガバナンス モデルにおけるデータ編成の主な単位です。 この記事では、Unity Catalog のカタログの概要と、それらを最適に使用する方法について説明します。

カタログは、Unity Catalog の 3 レベルの名前空間 ( catalog.schema.table-etc ) の最初のレイヤーです。 これらにはスキーマが含まれており、スキーマにはテーブル、ビュー、ボリューム、モデル、および関数を含めることができます。 カタログは、Databricks アカウントの Unity Catalog メタストアに登録されます。

カタログに焦点を当てたUnity Catalogオブジェクト モデル図

データをカタログに整理するには、どうすればよいですか?

データガイドラインモデルを設計するときは、作成するカタログについて慎重に検討する必要があります。 組織のデータガバナンス モデルの最上位レベルとして、各カタログはデータ分離の論理単位とデータ アクセスの論理カテゴリを表す必要があります。これにより、権限の効率的な階層がスキーマとそれに含まれるデータ オブジェクトに伝わります。 したがって、カタログは多くの場合、組織単位またはソフトウェア開発ライフサイクルの範囲を反映します。 たとえば、本番運用データ用のカタログと開発データ用のカタログを用意したり、非顧客データ用のカタログと機密性の高い顧客データ用のカタログを用意したりすることもできます。

カタログを使用したデータの分離

通常、各カタログには、管理対象テーブルとボリュームを格納するための独自の 管理ストレージの場所 があり、カタログ レベルでの物理的なデータの分離を提供します。 また、メタストア レベルでデータを保存して、独自の管理されたストレージ場所を持たないカタログにデフォルトのストレージ場所を提供することもできます。 スキーマ レベルでストレージを追加して、より詳細なデータ分離を行うことができます。

Databricks アカウントにはリージョンごとに 1 つのメタストアがあるため、カタログは本質的にリージョンごとに分離されます。

詳細については、 「 Databricksのデータベース オブジェクトとは何ですか?」および「データはストレージ内で物理的に分離されています」を参照してください。

カタログ・レベルの特権

任意の Unity Catalog オブジェクトに対する権限はそのオブジェクトの子に継承されるため、カタログを所有したり、カタログに対して広範な権限を持つことは非常に強力です。 例えば、カタログ所有者は、カタログおよびカタログ内のオブジェクトに対するすべての特権を持ち、カタログ内の任意のオブジェクトへのアクセス権を付与できます。 カタログに SELECT を持つユーザーは、カタログ内の任意のテーブルを読み取ることができます。 カタログに CREATE TABLE を持つユーザーは、カタログ内の任意のスキーマにテーブルを作成できます。

最小権限の原則、つまり、ユーザーに必要なタスクを実行するために必要な最小限のアクセス権のみを付与する原則を適用するには、通常、ユーザーが必要とする特定のオブジェクトまたは階層内のレベルへのアクセス権のみを付与します。 ただし、カタログ・レベルの権限により、カタログ所有者は、下位レベルのオブジェクト所有者が付与できるものを管理できます。 たとえば、テーブルなどの低レベルのデータ オブジェクトへのアクセス権がユーザーに付与されている場合でも、そのユーザーは、テーブルを含むカタログに対する USE CATALOG 権限も持っていない限り、そのテーブルにアクセスできません。

詳細については、 Unity Catalogオブジェクトの所有権の管理」、 Unity Catalog一般的な権限の種類」、および「データガバナンスとデータ分離の構成要素」を参照してください。

カタログの種類

カタログを作成するときは、次の 2 つのオプションがあります。

  • 標準カタログ: Unity Catalog でデータ オブジェクトを整理するための主要な単位として使用される標準的なカタログ。 これは、この記事で説明するカタログの種類です。

  • 外部カタログ :Unity Catalog レイクハウスフェデレーション シナリオでのみ使用される オブジェクト。外部カタログは外部データ システム内のデータベースをミラーリングし、Databricks ワークスペース内のそのデータ システムに対して読み取り専用クエリを実行できるようにします。 レイクハウスフェデレーションとは何かをご覧ください。

これら 2 つのカタログの種類に加えて、Databricks は新しいワークスペースを作成するときに次のカタログを自動的にプロビジョニングします。

  • hive_metastoreカタログ :Hive metastore これは、Databricks ワークスペース内の従来の によって管理されるすべてのデータのリポジトリです。既存の非Unity CatalogワークスペースがUnity Catalogに変換されると、従来のHive metastoreに登録されているすべてのオブジェクトがUnity Catalogの hive_metastore カタログに表示されます。 Hive metastoreをUnity Catalogと一緒に使用する場合の詳細については、 Unity Catalogと従来のHive metastoreの使用」を参照してください。 Hive metastoreは非推奨であり、すべてのDatabricksワークスペースはUnity Catalogに移行する必要があります。

  • ワークスペース カタログ: すべての新しい ワークスペースでは、このカタログは デフォルト によって作成されます。 通常、ワークスペース名と同じ名前になります。 このカタログが存在する場合、ワークスペース内のすべてのユーザー (自分のワークスペースのみ) がデフォルトでこのカタログにアクセスできるため、ユーザーが Unity Catalog でデータ オブジェクトを作成してアクセスするプロセスを試すのに便利な場所になります。 「ステップ 1: ワークスペースが Unity Catalog に対して有効になっていることを確認する」を参照してください。

デフォルトカタログ

Unity Catalog が有効になっているワークスペースごとに、デフォルトのカタログが構成されます。 デフォルトのカタログを使用すると、カタログを指定せずにデータ操作を実行できます。 データ操作を実行するときに最上位カタログ名を省略すると、デフォルトのカタログが想定されます。

ワークスペースが Unity Catalog に対して自動的に有効になっている場合は、事前にプロビジョニングされたワークスペース カタログがデフォルトのカタログとして指定されます。 ワークスペース管理者は必要に応じてデフォルトのカタログを変更できます。

詳細については、 「デフォルト カタログの管理」を参照してください。

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

ワークスペース を使用してユーザー データ アクセスを分離する場合は、ワークスペース-catalog バインディングを使用することをお勧めします。 ワークスペース-カタログ バインディングを使用すると、ワークスペースの境界によってカタログ アクセスを制限できます。 たとえば、ワークスペース管理者とユーザーが本番運用ワークスペース環境prod_workspaceからのみprod_catalogの本番運用データにアクセスできるようにすることができます。 バインディングを指定しない限り、カタログは現在のメタストアに接続されているすべてのワークスペースと共有されます。 「データを整理する」および「カタログ アクセスを特定のワークスペースに制限する」を参照してください。

ワークスペースで Unity Catalog が自動的に有効になっていた場合、事前にプロビジョニングされたワークスペース カタログは、デフォルトでワークスペースにバインドされます。