オープンソースデータカタログ比較:DataHub vs OpenMetadata vs Amundsen でデータガバナンスを構築する
オープンソースラボ編集部 ・ 2026年6月13日
オープンソースデータカタログ比較:DataHub vs OpenMetadata vs Amundsen でデータガバナンスを構築する
社内のデータレイク・DWH・データベースのテーブルやダッシュボードを一元検索・管理するデータカタログをオープンソースで構築しましょう。DataHub・OpenMetadata・Amundsenは、Collibra・Atlanのような高価なデータガバナンスSaaSの代替として使えます。
データカタログが解決する課題
- データの発見可能性: 「このデータはどこにある?」をエンジニア・アナリスト誰でも探せる
- データ系譜(Lineage): このBigQueryのテーブルはどのソースから来たか?どこで使われているか?
- メタデータ管理: テーブルの説明・オーナー・タグ・品質スコアを一元管理
- データ品質: NULL率・一意性・鮮度などのデータプロファイリング
- コンプライアンス: PIIカラムの特定・アクセス制御ポリシーの適用
主要ツールの概要
DataHub
LinkedInが開発したメタデータ管理プラットフォームです。KafkaとElasticsearchをバックエンドに使い、大規模なデータエコシステムのメタデータを管理します。REST API・GraphQL API・Python SDKを提供します。
# DataHubをdocker-composeで起動(quickstart)
pip install acryl-datahub
datahub docker quickstart
# UIは http://localhost:9002 でアクセス(datahub/datahub)
# DataHub Python SDK(datahub-ingestion)でメタデータを取り込む
from datahub.emitter.mce_builder import make_dataset_urn
from datahub.emitter.rest_emitter import DatahubRestEmitter
from datahub.metadata.schema_classes import (
DatasetSnapshotClass,
MetadataChangeEventClass,
DatasetPropertiesClass,
SchemaMetadataClass,
SchemaFieldClass,
SchemaFieldDataTypeClass,
StringTypeClass,
NumberTypeClass,
)
emitter = DatahubRestEmitter("http://localhost:8080")
# データセットのメタデータをエミット
dataset_urn = make_dataset_urn(
platform="bigquery",
name="my_project.my_dataset.users",
env="PROD",
)
mce = MetadataChangeEventClass(
proposedSnapshot=DatasetSnapshotClass(
urn=dataset_urn,
aspects=[
DatasetPropertiesClass(
description="ユーザーマスターテーブル。登録日・プランタイプ・最終アクセス日を含む。",
tags=["pii", "core", "users"],
customProperties={"team": "data-platform", "sla": "99.9%"},
),
],
)
)
emitter.emit_mce(mce)
# DataHub取り込みレシピ(PostgreSQL→DataHub)
# recipe.yml
source:
type: postgres
config:
host_port: "postgres:5432"
database: "my_db"
username: "datahub"
password: "${POSTGRES_PASSWORD}"
include_tables: true
include_views: true
profiling:
enabled: true
profile_table_level_only: false
sink:
type: datahub-rest
config:
server: "http://datahub-gms:8080"
token: "${DATAHUB_TOKEN}"
# レシピを実行(取り込み)
datahub ingest -c recipe.yml
# 定期実行(cron)
0 6 * * * datahub ingest -c /etc/datahub/recipes/postgres.yml
OpenMetadata
セキュリティと使いやすさを重視したモダンなデータカタログです。ワンクリックのコネクター設定・データ品質テスト(Great Expectations統合)・Slack/Teams通知・詳細なデータ系譜を提供します。
# OpenMetadataをdocker-composeで起動
git clone https://github.com/open-metadata/OpenMetadata.git
cd OpenMetadata
python metadata/ingestion/api/source.py
# 公式のdocker-compose
curl -sL https://github.com/open-metadata/OpenMetadata/releases/latest/download/docker-compose.yml -o docker-compose.yml
docker compose up -d
# UIは http://localhost:8585 でアクセス(admin@open-metadata.org/Admin1234)
# OpenMetadata Python SDK
from metadata.ingestion.ometa.ometa_api import OpenMetadata
from metadata.generated.schema.api.data.createTable import CreateTableRequest
from metadata.generated.schema.entity.data.table import Column, DataType, ColumnName
from metadata.generated.schema.type.entityReference import EntityReference
server_config = {"hostPort": "http://localhost:8585/api", "authProvider": "openmetadata",
"securityConfig": {"jwtToken": "your-jwt-token"}}
metadata = OpenMetadata(server_config)
# テーブルメタデータを登録
table_request = CreateTableRequest(
name="users",
databaseSchema=EntityReference(id="schema-id", type="databaseSchema"),
columns=[
Column(name=ColumnName("user_id"), dataType=DataType.BIGINT,
description="ユーザーの一意ID", tags=["primary_key"]),
Column(name=ColumnName("email"), dataType=DataType.VARCHAR,
description="メールアドレス", tags=["pii", "personal_data"]),
Column(name=ColumnName("created_at"), dataType=DataType.TIMESTAMP,
description="アカウント作成日時"),
],
description="ユーザーマスターテーブル",
)
table = metadata.create_or_update(table_request)
Amundsen
Lyftが開発したデータ発見・メタデータプラットフォームです。Neoを使ったグラフデータベースでデータ系譜を表現し、Elasticsearchで高速検索します。
# AmundsenをDockerで起動
git clone https://github.com/amundsen-io/amundsen.git
cd amundsen
docker compose -f docker-amundsen.yml up
# UIは http://localhost:5000 でアクセス
# AmundsenのPyhocon設定でBigQueryメタデータを取り込む
from pyhocon import ConfigFactory
from databuilder.extractor.bigquery_metadata_extractor import BigQueryMetadataExtractor
from databuilder.loader.fs_neo4j_csv_loader import FsNeo4jCSVLoader
from databuilder.publisher.neo4j_csv_publisher import Neo4jCsvPublisher
from pyhocon import ConfigFactory
job_config = ConfigFactory.from_dict({
'extractor.bigquery_metadata.project_id': 'my-gcp-project',
'extractor.bigquery_metadata.key_path': '/path/to/credentials.json',
'extractor.bigquery_metadata.filter_key': 'labels.team:data-platform',
'loader.filesystem.neo4j.node_dir_path': '/tmp/nodes',
'loader.filesystem.neo4j.relationship_dir_path': '/tmp/rels',
'publisher.neo4j.neo4j_endpoint': 'bolt://localhost:7687',
'publisher.neo4j.neo4j_user': 'neo4j',
'publisher.neo4j.neo4j_password': 'test',
})
機能比較表
| 比較項目 | DataHub | OpenMetadata | Amundsen |
|---|---|---|---|
| データ発見・検索 | ✅ | ✅ | ✅ |
| データ系譜(Lineage) | ✅ 詳細 | ✅ | ✅ |
| メタデータ自動収集 | ✅ | ✅ | ✅ |
| データ品質テスト | ✅ | ✅ Great Expectations | ❌ |
| カラムレベル系譜 | ✅ | ✅ | ⚠️ |
| 用語集(Glossary) | ✅ | ✅ | ❌ |
| PII分類・マスキング | ✅ | ✅ | ❌ |
| Slack/Teams通知 | ✅ | ✅ | ❌ |
| REST API | ✅ | ✅ | ✅ |
| GraphQL API | ✅ | ✅ | ❌ |
| コネクター数 | 70+ | 80+ | 50+ |
| セットアップの容易さ | ★★★☆☆ | ★★★★☆ | ★★★☆☆ |
| ライセンス | Apache 2.0 | Apache 2.0 | Apache 2.0 |
| GitHub Stars | 10k+ | 6k+ | 4k+ |
ナレッジ管理・データツールはknowledgeカテゴリ(/categories/knowledge)で一覧でき、AI・LLM活用データツールはLLMツールカテゴリ(/categories/llm-tools)でも探せます。
FAQ
Q. データカタログとデータウェアハウス(DWH)は何が違いますか?
A. DWH(BigQuery・Snowflake・Redshift等)は実際のデータを保存・クエリする基盤です。データカタログはDWHを含む全データソースのメタデータ(どんなデータがあるか・どこにあるか・誰が管理するか・どこから来たか)を管理するインデックス/地図のような存在です。データカタログ自体にはデータは保存されず、DWH・S3・PostgreSQL・dbtモデル・BI(Metabase・Tableau)のメタデータを集約して「どのデータが何で、どこにあるか」をカタログ化します。
Q. データ系譜(Data Lineage)はなぜ重要ですか?
A. データ系譜はデータがどのように変換・移動するかを追跡します。実際の事例: ダッシュボードの数字がおかしいとき「このKPIはどのクエリから来て、どのテーブルが元か、そのテーブルはどのETLで更新されているか」をすぐに辿れる・規制対応で「このレポートに使われているPIIはどこから来たか」を説明できる・テーブルを削除する前に「このテーブルを使っている下流のダッシュボードやモデルがいくつあるか」を確認できる。データガバナンスの基盤です。
Q. dbtのモデルはDataHubやOpenMetadataで管理できますか?
A. はい。DataHubはdbt Cloudおよびdbt Coreの両方にコネクターを持ち、dbtのモデル・テスト・源泉情報を自動取り込みできます。OpenMetadataも同様にdbtコネクターを持ちます。dbtのmanifest.jsonとcatalog.jsonを定期的にメタデータプラットフォームに送ることで、dbtで定義したカラムの説明・テスト結果・系譜がデータカタログ上で参照できるようになります。
Q. Collibra・Atlanとオープンソースのデータカタログはどこが違いますか?
A. CollibraやAtlanは企業向けのデータガバナンスSaaSで、エンタープライズサポート・AI補助・コンプライアンスレポート・ワークフロー(承認フロー)・詳細なアクセス制御が充実しています。一方でライセンス費用は数百万〜数千万円/年規模です。DataHubやOpenMetadataはコア機能(発見・系譜・メタデータ)は十分カバーしており、コストを大幅に削減できます。データエンジニアリングチームが2〜3人以上いる組織でオープンソース版を使いこなすケースが増えています。
まとめ
| ユースケース | 推奨ツール |
|---|---|
| 大規模・Kafka統合 | DataHub |
| 使いやすさ・データ品質 | OpenMetadata |
| グラフ系譜・Lyft発祥 | Amundsen |
| Collibra/Atlan代替 | DataHub または OpenMetadata |