こんにちは、香田です。
今回はData Catalog PostgreSQL コネクターを使用するする方法について紹介していきます。
Data Catalogという名前の製品は複数存在してますが、今回紹介するのはGCPで提供されているData Catalogになります。
Data Catalogについて
はじめにData Catalogについて簡単に紹介すると、
Data CatalogはGCPで提供されているフルマネージドなメタデータ管理サービスで、メタデータ操作のためのUIやAPIアクセスを提供しており、データの検索、タグ付けなどをサポートしています。
GCPで提供されているBigQuery、Pub/Sub、Cloud StorageなどGCP データセットのメタデータ管理が可能です。GCP 以外のメタデータも対応しており、オープンソースのコネクターを使うことでRedshift、PostgreSQL、Hiveなどのメタデータ取り込みにも対応しています。
詳しくは下記のData Catalogの概要を参照してみてください。
検証用 PostgreSQL 環境の作成
まずはData Catalog PostgreSQL コネクターを検証できるよう、DockerでPostgreSQL環境を用意していきます。
下記のdocker-compose.yml
を用意します。
version: "3.3"
services:
postgres:
image: postgres:12
container_name: postgres
environment:
- POSTGRES_PASSWORD=postgres
ports:
- "5432:5432"
PostgreSQLコンテナを起動します。
docker-compose up -d
検証用のサンプルデータベースをPostgreSQL Tutorial
のサイトよりダウンロードします。
サイト内のPostgreSQL Sample Databaseへアクセスし、[Download DVD Rental Sample Database]をクリックします。
ダウンロードしたzipファイルを解凍します。
unzip dvdrental.zip
データベースを作成します。
export PGPASSWORD=postgres
psql -h 127.0.0.1 -U postgres -c "CREATE DATABASE dvdrental"
サンプルデータベースをリストアします。
pg_restore -h 127.0.0.1 -U postgres -d dvdrental ./dvdrental.tar
GCP サービスアカウントキーの作成
次にData Catalog PostgreSQL コネクターで利用するGCP サービスアカウントキーを作成します。
GCPコンソール画面より[IAMと管理]の[サービスアカウント]より[サービス アカウントの作成]をクリックします。
[サービスアカウント名]を入力し作成します。[DataCatalog 管理者]のロールを選択しアクセス権を付与し[完了]をクリックします。
作成したサービスアカウントを選択し、[鍵を追加]、[新しい鍵を作成]、キーのタイプとして[JSON]を選択し、サービスアカウントキーを作成します。
Data Catalog PostgreSQL コネクターのインストール
次にData Catalog PostgreSQL コネクターをインストールします。
python -m venv venv
source venv/bin/activate
pip install google-datacatalog-postgresql-connector
Data Catalog PostgreSQL コネクターのインストール確認
google-datacatalog-postgresql-connector --help
Data Catalog PostgreSQL コネクターの実行
次にData Catalog PostgreSQL コネクターを実行していきます。
コネクター実行時に利用する環境変数を設定します。
export GOOGLE_APPLICATION_CREDENTIALS="<サービスアカウントキー>"
export POSTGRESQL2DC_DATACATALOG_PROJECT_ID="<gcp project_id>"
export POSTGRESQL2DC_DATACATALOG_LOCATION_ID="<gcp location_id>"
export POSTGRESQL2DC_POSTGRESQL_SERVER=127.0.0.1
export POSTGRESQL2DC_POSTGRESQL_USERNAME=postgres
export POSTGRESQL2DC_POSTGRESQL_PASSWORD=postgres
export POSTGRESQL2DC_POSTGRESQL_DATABASE=dvdrental
Data Catalog PostgreSQL コネクターを実行します。
google-datacatalog-postgresql-connector \
--datacatalog-project-id=$POSTGRESQL2DC_DATACATALOG_PROJECT_ID \
--datacatalog-location-id=$POSTGRESQL2DC_DATACATALOG_LOCATION_ID \
--postgresql-host=$POSTGRESQL2DC_POSTGRESQL_SERVER \
--postgresql-user=$POSTGRESQL2DC_POSTGRESQL_USERNAME \
--postgresql-pass=$POSTGRESQL2DC_POSTGRESQL_PASSWORD \
--postgresql-database=$POSTGRESQL2DC_POSTGRESQL_DATABASE
GCPコンソール画面より[Data Catalog]へアクセスします。
検索ボックスへ[system=postgresql]と入力し[検索]をクリックすると下記のように表示されるとはずです。
テーブルに絞って検索する場合、下記のように選択するとこで絞り込み可能です。
検索クエリの詳細については下記を参考にしてみてください。
クリーンアップ
Data Catalog PostgreSQL コネクターの実行によって作成された、Data Catalogのタグ テンプレート、エントリ グループを削除していきます。
タグ テンプレート 削除
gcloud beta data-catalog tag-templates delete postgresql_table_metadata \
--location=<gcp location_id> --force --quiet
gcloud beta data-catalog tag-templates delete postgresql_column_metadata \
--location=<gcp location_id> --force --quiet
gcloud beta data-catalog tag-templates delete postgresql_schema_metadata \
--location=<gcp location_id> --force --quiet
エントリー グループ 削除
for i in $(gcloud beta data-catalog entries list \
--entry-group postgresql \
--location=<gcp location_id> \
--format=json | jq -r .[].name); do
gcloud beta data-catalog entries delete $i \
--entry-group=postgresql \
--location=<gcp location_id> \
--quiet
done
gcloud beta data-catalog entry-groups delete postgresql \
--location=<gcp location_id> \
--quiet
最後にPostgreSQL コンテナを削除しクリーンアップ完了です。
docker-compose down --volumes
さいごに
Data Catalog PostgreSQL コネクターを使用するする方法いかがでしたでしょうか。
PostgreSQL コネクター以外にもData Catalogのコネクターは下記リポジトリに公開されている為、目的に応じて使用してみては如何でしょうか。
Data Catalog PostgreSQL コネクターを使用する上で本記事が参考になれば幸いです。
最後までご覧いただきありがとうございます。