この記事について
Unity Catalog は Databricks のデータガバナンスソリューションである。カタログ、アクセス制御、リネージ、監査を統合的に提供する。AWS Lake Formation + Glue Data Catalog に相当する機能を1つのサービスで実現する。
1. 3レベル名前空間
Unity Catalog は3レベルの名前空間でデータを整理する。
<catalog>.<schema>.<table>
例: prod_catalog.sales.fact_orders
dev_catalog.sales.fact_orders
Metastore(最上位、ワークスペースに紐づく)
└── Catalog(環境やドメインで分離)
├── prod_catalog
│ └── Schema(論理的なグループ)
│ ├── sales
│ │ ├── fact_orders (Table)
│ │ └── dim_product (Table)
│ └── marketing
│ └── campaigns (Table)
└── dev_catalog
└── sales
└── fact_orders (Table)
AWS / Oracle との比較
| レベル | Unity Catalog | AWS | Oracle |
|---|---|---|---|
| 最上位 | Metastore | – | – |
| 第1レベル | Catalog | – | – |
| 第2レベル | Schema | Glue Database | Schema |
| 第3レベル | Table | Glue Table | Table |
Unity Catalog の3レベル構造により、環境分離(dev/prod)やドメイン分離(sales/marketing)が名前空間で自然に表現できる。
2. アクセス制御
2-1. SQL ベースの権限管理
-- Schema への権限
GRANT USE SCHEMA ON prod_catalog.sales TO analyst_group;
-- テーブルへの読み取り権限
GRANT SELECT ON prod_catalog.sales.fact_orders TO analyst_group;
-- カラムマスキング
CREATE FUNCTION mask_email(email STRING)
RETURNS STRING
RETURN CONCAT(LEFT(email, 2), '***@***.com');
ALTER TABLE customers
ALTER COLUMN email SET MASK mask_email;2-2. 権限の粒度
| 粒度 | 説明 |
|---|---|
| Catalog | カタログ全体 |
| Schema | スキーマ内の全テーブル |
| Table | 特定テーブル |
| Column | カラムマスキング |
| Row | 行フィルタ |
2-3. AWS / Oracle との比較
| 機能 | Unity Catalog | Lake Formation | Oracle Data Safe |
|---|---|---|---|
| テーブル権限 | ✅ SQL GRANT | ✅ | ✅ |
| カラム権限 | ✅ マスキング関数 | ✅ カラム除外 | ✅ Data Masking |
| 行フィルタ | ✅ Row Filter | ✅ Data Filter | ✅ VPD |
| タグベース | ❌(将来対応予定) | ✅ LF-Tags | ❌ |
| SQL 構文 | ✅ 標準 SQL | ❌ API/コンソール | ✅ |
Unity Catalog は SQL の GRANT/REVOKE で権限管理できる点が DBA にとって直感的。
3. データリネージ
Unity Catalog はクエリ実行時にリネージを自動取得する。
[raw.orders] ──→ [Spark Job] ──→ [curated.orders] ──→ [SQL] ──→ [gold.fact_sales]
│ │
└── column: order_id ──────────────────────────→ column: order_id
└── column: price × qty ───────────────────────→ column: amount
リネージの粒度: – テーブルレベル:テーブル間の依存関係 – カラムレベル:カラム間の変換関係
AWS では同等の機能を得るために DataZone やサードパーティツールが必要。
4. 監査ログ
Unity Catalog は全アクセスを監査ログに記録する。
| 記録される情報 | 例 |
|---|---|
| 誰が | [email protected] |
| いつ | 2024-04-01 10:30:00 UTC |
| 何を | SELECT on prod_catalog.sales.fact_orders |
| どこから | SQL Warehouse / Notebook |
| 結果 | 成功 / 権限エラー |
5. マルチクラウド対応
Unity Catalog の最大の差別化ポイント。
Unity Catalog Metastore
├── AWS ワークスペース
│ └── s3://datalake-aws/
├── Azure ワークスペース
│ └── abfss://datalake-azure/
└── GCP ワークスペース
└── gs://datalake-gcp/
→ 全ワークスペースから同一のカタログ・権限・リネージを共有
AWS Lake Formation は AWS 内のみ、Oracle Data Catalog は OCI 内のみ。Unity Catalog はクラウドをまたいだ統合ガバナンスを提供する。
6. Securables(管理対象)
Unity Catalog はテーブル以外のアセットも統合管理する。
| Securable | 説明 |
|---|---|
| Table | Delta Lake テーブル |
| View | ビュー |
| Volume | 非テーブルファイル(画像、PDF 等) |
| Function | UDF |
| Model | ML モデル(MLflow 統合) |
| Connection | 外部データソースへの接続 |
ML モデルまでカタログで管理できる点は、SageMaker + Glue では実現しにくい。
7. まとめ
| 機能 | Unity Catalog | AWS 相当 |
|---|---|---|
| カタログ | 3レベル名前空間 | Glue Data Catalog |
| アクセス制御 | SQL GRANT + マスキング + 行フィルタ | Lake Formation |
| リネージ | 自動取得(テーブル + カラム) | DataZone / サードパーティ |
| 監査 | 全アクセスログ | CloudTrail + Lake Formation |
| マルチクラウド | ✅ | ❌ |
| ML モデル管理 | ✅ | SageMaker Model Registry(別サービス) |
Unity Catalog は「1つのサービスで全ガバナンス」を実現する。AWS は複数サービスの組み合わせで同等の機能を構築する。
参考文献
- Databricks. “Unity Catalog Documentation.” https://docs.databricks.com/en/data-governance/unity-catalog/
- Databricks. “Unity Catalog Best Practices.” https://docs.databricks.com/en/data-governance/unity-catalog/best-practices.html