Azure Databricks のカタログとは
カタログは、Azure Databricks Unity Catalog データ ガバナンス モデルのデータ組織の主要な単位です。 この記事では、Unity カタログのカタログの概要と、その使用方法について説明します。
カタログは、Unity カタログの 3 レベル名前空間 (catalog.schema.table-etc
) の最初のレイヤーです。 スキーマが含まれており、テーブル、ビュー、ボリューム、モデル、関数を含めることができます。 カタログは、Azure Databricks アカウントの Unity カタログ メタストアに登録されます。
データをカタログに整理する方法
データ ガバナンス モデルを設計するときは、作成するカタログについて慎重に考える必要があります。 組織のデータ ガバナンス モデルの最上位レベルとして、各カタログは、データ分離の論理単位とデータ アクセスの論理カテゴリを表す必要があります。これにより、許可の効率的な階層がスキーマと、含まれているデータ オブジェクトに流れ込みます。 したがって、カタログは多くの場合、組織単位またはソフトウェア開発ライフサイクル スコープを反映します。 たとえば、運用データ用のカタログと開発データ用のカタログ、または顧客以外のデータ用のカタログと機密顧客データ用のカタログを選択できます。
カタログを使用したデータ分離
通常、各カタログには、マネージド テーブルとボリュームを格納するための独自 のマネージド ストレージの場所 があり、カタログ レベルで物理的なデータを分離できます。 また、メタストア レベルでデータを格納することも選択でき、独自の管理ストレージの場所を持たないカタログの既定の格納場所を提供できます。 より詳細なデータ分離のために、スキーマ レベルでストレージを追加できます。
Azure Databricks アカウントにはリージョンごとに 1 つのメタストアがあるため、カタログは本質的にリージョンごとに分離されます。
詳細については、「Azure Databricks のデータベース オブジェクトとは」を参照してください。また、データはストレージで物理的に分離されています。
カタログ レベルの特権
Unity Catalog オブジェクトに対する許可はそのオブジェクトの子によって継承されるため、カタログを所有しているか、カタログに対する広範な特権を持つことは非常に強力です。 たとえば、カタログ所有者はカタログとカタログ内のオブジェクトに対するすべての権限を持ち、カタログ内の任意のオブジェクトへのアクセス権を付与できます。 カタログを使用 SELECT
しているユーザーは、カタログ内の任意のテーブルを読み取ることができます。 カタログを使用 CREATE TABLE
しているユーザーは、カタログ内の任意のスキーマにテーブルを作成できます。
ユーザーが必要なタスクを実行するために必要な最小限のアクセス権を持つ最小特権の原則を適用するには、通常、ユーザーが必要とする階層内の特定のオブジェクトまたはレベルにのみアクセス権を付与します。 ただし、カタログ レベルの特権を使用すると、カタログ所有者は下位レベルのオブジェクト所有者が付与できる内容を管理できます。 たとえば、ユーザーにテーブルのような低レベルのデータ オブジェクトへのアクセス権が付与されている場合でも、そのユーザーはテーブルを含むカタログに対する権限を持っていない USE CATALOG
限り、そのテーブルにアクセスできません。
詳細については、Unity カタログ オブジェクトの所有権の管理、一般的な Unity カタログ権限の種類、データ ガバナンスとデータ分離の構成要素に関するページを参照してください。
カタログの種類
カタログを作成すると、次の 2 つのオプションが表示されます。
- 標準カタログ: Unity カタログでデータ オブジェクトを整理するためのプライマリ ユニットとして使用される一般的なカタログ。 これは、この記事で説明するカタログの種類です。
- 外部カタログ: Lakehouse フェデレーション シナリオでのみ使用される Unity Catalog オブジェクト。 外部カタログは外部データ システム内のデータベースをミラー化し、Azure Databricks ワークスペースでそのデータ システムに対して読み取り専用クエリを実行できるようにします。 「Lakehouse フェデレーションとは」をご覧ください。
これらの 2 つのカタログの種類に加えて、Azure Databricks では、新しいワークスペースを作成すると、次のカタログが自動的にプロビジョニングされます。
hive_metastore
catalog: これは、Azure Databricks ワークスペースのレガシ Hive メタストアによって管理されるすべてのデータのリポジトリです。 既存の Unity カタログ以外のワークスペースが Unity カタログに変換されると、従来の Hive メタストアに登録されているすべてのオブジェクトが、カタログ内の Unity カタログにhive_metastore
表示されます。 Unity カタログと共に Hive メタストアを操作する方法については、「Unity カタログと従来の Hive メタストアの操作」を参照してください。 Hive メタストアは非推奨となり、すべての Azure Databricks ワークスペースを Unity カタログに移行する必要があります。- ワークスペース カタログ: すべての新しいワークスペースで、このカタログは既定で自動的に作成されます。 通常、その名前はワークスペース名と共有されます。 このカタログが存在する場合、ワークスペース内のすべてのユーザー (およびワークスペースのみ) が既定でアクセスできるため、ユーザーが Unity Catalog でデータ オブジェクトを作成してアクセスするプロセスを試すのに便利な場所になります。 「手順 1: ワークスペースが Unity Catalog で有効になっていることを確認する」を参照してください。
既定のカタログ
既定のカタログは、Unity Catalog に対して有効になっているワークスペースごとに構成されます。 既定のカタログを使うと、カタログを指定せずにデータ操作を実行できます。 データ操作を実行するときに、最上位レベルのカタログ名を省略すると、既定のカタログが使われます。
ワークスペースが Unity カタログに対して自動的に有効になっている場合は、事前プロビジョニングされたワークスペース カタログが既定のカタログとして指定されます。 ワークスペース管理者は、必要に応じて既定のカタログを変更できます。
詳細については、「既定のカタログの管理」を参照してください。
ワークスペースとカタログのバインド
ワークスペースを使用してユーザー データ アクセスを分離する場合は、ワークスペース カタログ バインドを使用できます。 ワークスペース カタログ バインドを使用すると、ワークスペース境界でカタログ アクセスを制限できます。 たとえば、ワークスペース管理者とユーザーが、運用ワークスペース環境 (prod_workspace
) から prod_catalog
の運用データにのみアクセスできるようになります。 カタログは、バインドを指定しない限り、現在のメタストアにアタッチされているすべてのワークスペースと共有されます。 「データの整理」および「特定のワークスペースへのカタログ アクセスの制限」を参照してください。
ワークスペースで Unity Catalog が自動的に有効になっている場合、事前プロビジョニングされたワークスペース カタログは既定でワークスペースにバインドされます。