AI

オープンソースデータカタログ比較: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',
})

機能比較表

比較項目DataHubOpenMetadataAmundsen
データ発見・検索
データ系譜(Lineage)✅ 詳細
メタデータ自動収集
データ品質テスト✅ Great Expectations
カラムレベル系譜⚠️
用語集(Glossary)
PII分類・マスキング
Slack/Teams通知
REST API
GraphQL API
コネクター数70+80+50+
セットアップの容易さ★★★☆☆★★★★☆★★★☆☆
ライセンスApache 2.0Apache 2.0Apache 2.0
GitHub Stars10k+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

関連外部リソース

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。