環境構築
OpenMetadataの導入
公式ドキュメントに書いてある通りでよいが、Db2へ接続するときにCan't load plugin: sqlalchemy.dialects:db2.ibm_db
というエラーが発生したので、openmetadata_injestion
コンテナ内でibm_db_sa
をインストールしたところ解消した。
sudo apt install python3.10-venv
source env/bin/activate
python3 -m venv env
source env/bin/activate
pip3 install --upgrade pip setuptools
pip3 install --upgrade "openmetadata-ingestion[docker]"
metadata docker --help
metadata docker --start
ibm_db_sa
をインストール
docker exec -it openmetadata_ingestion bash
pip3 install ibm_db_sa
Db2のインストール
DockerHubのドキュメントに記載されている通り。サンプルDBを作るために、SAMPLEDB=true
を追加した。
docker run -itd --name mydb2 --privileged=true -p 50000:50000 \
-e LICENSE=accept -e DB2INST1_PASSWORD=<パスワード> -e SAMPLEDB=true -e DBNAME=testdb \
ibmcom/db2
OpenMetadataからDb2への接続
Host And Portの部分はDockerが提供しているホストを指すhost.docker.internal
を使った。
Ingestionの設定
接続できたらDb2からデータを取得するためのIngestionを追加する。Metadata IngestionとProfiler Injestionを追加した。
Metadata Ingestionは特にパラメータを指定不要だったが、Profiler InjestionのほうはカラムにLOB持つテーブルを読み込めないようだったので、EMP_PHOTO, EMP_RESUMEを除外指定(Exclude)した。
OpenMetadataでできることを確認
テーブルを変更した場合に変更履歴が取得される
テーブルにカラムを追加したあとでMetadataが取得されると履歴が保存される。columns middlename has been addedのようにどんな変更だったかをぱっと見てわかるようになっていて見やすい。特に変更していない時もtableConstraints has been addedという履歴が溜まっていく理由はよくわからなかった。
テーブルの値の情報を見ることができる
Data Typeだけでなく、Null %, Unique %, Distinct %のように実際の値に基づいた情報を見ることができるのは便利そう。
用語集
テーブルのカラムに説明を記述できるだけでなく、カラムとは独立した用語集を作成できカラムと紐づけることができる。ある用語と関連があるテーブルを一覧化することができる。
その他の感想
- Data Lineage(データがどこで生まれてどうやって派生していくか)を有向グラフで表示できる
- ER図を表示する機能はなさそう
- ユーザー、チームごとにできる操作を分ける機能(Role, Policy)はあるようだが、どのデータを操作できるかは指定する方法はわからなかった(まだ機能がない?)
- データごとにオーナー、Tier(組織全体にとってクリティカルなデータ、部門に閉じたデータなど)を指定できる。タグ機能も使って個人情報がどれかを指定すると便利そう
- メッセージング(Kafkaなど)、ダッシュボード(Metabaseなど)、パイプライン(Airflowなど)のデータを扱うことが可能