Databricks のカタログとは何ですか?
カタログは、 Databricks Unity Catalog データガバナンス モデルにおけるデータ編成の主要な単位です。 この記事では、Unity Catalog のカタログの概要と、それらを最適に使用する方法について説明します。
カタログは、Unity Catalog の 3 レベルの名前空間 (catalog.schema.table-etc
) の最初のレイヤーです。 スキーマにはスキーマが含まれており、スキーマにはテーブル、ビュー、ボリューム、モデル、および関数を含めることができます。 カタログは、Unity Catalog Databricksアカウントの メタストアに登録されます。
データをカタログに整理するにはどうすればよいですか?
データガバナンスモデルを設計するときは、作成するカタログについて慎重に検討する必要があります。 組織のデータガバナンスモデルの最上位レベルとして、各カタログはデータ分離の論理単位とデータアクセスの論理カテゴリを表し、グラントの効率的な階層がスキーマとそれに含まれるデータオブジェクトに流れるようにする必要があります。 したがって、カタログは多くの場合、組織単位またはソフトウェア開発ライフサイクルのスコープを反映します。 たとえば、本番運用データ用のカタログと開発データ用のカタログ、または非顧客データ用のカタログと機密性の高い顧客データ用のカタログを選択できます。
カタログを使用したデータの分離
通常、各カタログには、マネージドのテーブルとボリュームを格納するための独自の マネージドストレージロケーション があり、カタログ レベルでの物理的なデータの分離を提供します。 また、メタストア レベルでデータを保存して、独自のマネージドストレージロケーションを持たないカタログにデフォルトのストレージロケーションを提供することもできます。 スキーマ レベルでストレージを追加して、より詳細なデータ分離を行うことができます。
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 に登録されているすべてのオブジェクトがhive_metastore
カタログの Unity Catalog に表示されます。 と一緒にHive metastore Unity Catalogを操作する方法については、「Unity Catalogと従来の の操作Hive metastore 」を参照してください。Hive metastoreは非推奨であり、すべてのDatabricksワークスペースを Unity Catalogに移行する必要があります。- ワークスペース カタログ : すべての新しいワークスペースでは、このカタログはデフォルトによって作成されます。 通常、その名前はワークスペース名と共有されます。 このカタログが存在する場合、ワークスペース内のすべてのユーザー (およびワークスペースのみ) が デフォルト によってアクセスできるため、ユーザーが Unity Catalogでデータ オブジェクトを作成してアクセスするプロセスを試すのに便利な場所になります。 「手順 1: ワークスペースが Unity Catalog に対して有効になっていることを確認する」を参照してください。
デフォルトカタログ
デフォルト カタログは、 Unity Catalogが有効になっているワークスペースごとに構成されます。 デフォルトのカタログでは、カタログを指定せずにデータ操作を実行できます。 データ操作を実行するときに最上位のカタログ名を省略すると、デフォルトのカタログが想定されます。
ワークスペースで Unity Catalog が自動的に有効になっている場合は、事前プロビジョニング ワークスペース カタログがデフォルト カタログとして指定されます。 ワークスペース管理者は、必要に応じてデフォルトのカタログを変更できます。
詳細については、「 デフォルトカタログの管理」を参照してください。
ワークスペースとカタログのバインド
ワークスペースを使用してユーザーデータアクセスを分離する場合は、ワークスペースとカタログのバインディングを使用できます。 ワークスペースとカタログのバインディングを使用すると、ワークスペースの境界によってカタログへのアクセスを制限できます。 たとえば、ワークスペースの管理者とユーザーが、 prod_catalog
の本番運用データにのみ、本番運用 ワークスペース環境 prod_workspace
からアクセスできるようにすることができます。 カタログは、バインディングを指定しない限り、現在のメタストアに接続されているすべてのワークスペースと共有されます。 「データの整理」および「カタログへのアクセスを特定のワークスペースに制限する」を参照してください。
ワークスペースでUnity Catalogが自動的に有効になっていた場合、事前にプロビジョニングされたワークスペースカタログは、デフォルトでワークスペースにバインドされます。