Data Catalogを徹底解説!

記事タイトルとURLをコピーする

G-gen の杉村です。Google Cloud のメタデータ管理ツールである Data Catalog を解説します。

概要

Data Catalog とは

Data Catalog とは Google Cloud (旧称 GCP) のメタデータ管理サービスです。フルマネージドであり、インフラの管理は全く必要ありません。

BigQuery のテーブルや Cloud Storage バケット内の非構造化データなど、Google Cloud 上のデータにメタデータを付与してデータカタログ化し、検索してユーザが利用できるようにするためのツールです。

また Google Cloud リソース以外にも、オンプレミスの RDB や Looker、Tableau などの BI ツールに持っているデータモデル、また Apache Hive のメタデータなども管理対象にすることができます。

なお Data Catalog は Dataplex と呼ばれるデータ管理プロダクトの一部とされています。Dataplex については以下の記事をご参照ください。

blog.g-gen.co.jp

Data Catalog の機能

Data Catalog は以下の機能を提供します。

  • メタデータの付与・管理・検索
  • 対象プロダクトのメタデータの自動収集
  • データリネージ (Data lineage)

データカタログの利点

メタデータ管理ツール(=データカタログ)が無いと、従業員はデータが必要になったときに、BigQuery や Cloud Storage の専門知識を使って一つ一つの Google Cloud プロジェクトを開いてテーブル名やファイル名を確認し、設計書を漁ったり、システム管理者に質問して回る必要があります。

データカタログでメタデータを集約管理することで、このような無駄なコミュニケーションを節約し、組織(企業や官公庁)の従業員はデータがどこにあるか検索しやすくなります。

なおここで挙げた「データカタログ」とは、メタデータを管理するためのツール全般を指す一般的な名詞です。当記事で紹介する Data Catalog は、データカタログを Google Cloud がフルマネージドで提供するサービスであるとお考えください。

メタデータとは

そもそもメタデータとは何でしょうか。以下のようなテキストデータがあったとします。

[Data]
吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当が......

これにメタデータを付与するとこのようになります。

[Metadata]
Title: 吾輩は猫である
Author: 夏目漱石
Page count: 380

[Data]
吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当が......

ここでは、小説の本文をデータとして、タイトルや著者名、ページ数などをメタデータとしました。何がデータで何がメタデータなのかは、管理上の都合に応じて決めますが、一般的にメタデータは「データ本体を説明するためのデータ」と言えます。

データだけあっても、たくさんあるデータの中から利用者がそれを見つけ出そうとするときに苦労します。メタデータがあるからこそ、データは活用されます。

現実世界の例でいうと、他に以下のようなものが挙げられます。

名前 データ メタデータ
PC 上のファイル ファイルの中身 ファイル名・サイズ・作成日時・更新日時・アクセス権限
DB のテーブル レコード テーブル名・列名・テーブルや列に関する説明

なお上記で説明した「メタデータ」は広義のものであり、実際には製品によって独自の呼び方をしていたり、独自の方法や区分けで管理されています。

データ検索機能

検索方法

データに対する検索は、Web UI (Google Cloud コンソール) あるいは API 経由で行うことができます。

Web UI は、Dataplex の UI と統合されています。Dataplex 画面で「検索」を選択するか、Web コンソール上部の検索ボックスに Data Catalog と入力することでも、検索画面に遷移できます。

検索画面

検索の範囲は、検索を実行する人の IAM 権限に応じて決まります。データそのものにアクセス権がなくても、メタデータへのアクセス権があれば検索結果には表示されます。

権限があれば、BigQuery、Pub Sub、Cloud Storage (エントリグループとカスタムエントリ。後述)、Dataplex など、Data Catalog でカタログ化された全てのデータが対象となって検索されます。テーブル名、列名、Description、タグ (後述) など広い属性が検索対象になるため、ある程度あいまいな語でもデータに辿り着くことが可能です。

また対象サービスやタイプ (データセット、テーブル、その他)、Dataplex のレイク/ゾーン、Google Cloud プロジェクトなどで対象をフィルタすることが可能です。

クエリの構文

Google 検索のように、単純に検索語を入れて検索することもできますし、記号を使った様々な構文も利用できます。

例えば name:foo とすると、エントリの名称に foo を含むエンティティを検索します。: は部分一致ですが = だと完全一致になります。他にも column label location updatetime など、検索対象とする属性を指定することが可能です。

以下は、例です。

検索クエリ 意味
location=asia-northeast1 name:my-entry 東京リージョンにある、名称に my-entry を含むエントリ
updatetime>=2023-10-26T06:00:00 2023-10-26T06:00:00 (GMT) 以降に更新されたエントリ (タイムゾーンは必ず GMT。+9時間で日本時間)

詳細は以下の記事も参考にしてください。

メタデータ管理機能

Data Catalog が自動収集するメタデータ

Data Catalog は、以下の Google Cloud プロダクトのメタデータを自動的にカタログ化します。カタログ化されたメタデータは、すぐに Data Catalog の UI や API 経由で検索可能です。

プロダクト名 対象リソース
BigQuery ・データセット
・テーブル
・BigQuery ML モデル
・ルーチン (ストアド・プロシージャ、ユーザー定義関数 (UDF)、テーブル関数)
・接続 (Connections)
・Analytics Hub でリンクされたデータセット
Dataplex ・レイク
・ゾーン
・アセット
Pub/Sub ・トピック
Cloud Bigtable ・インスタンス
・クラスタ
・テーブル
Cloud Spanner ・インスタンス
・データベース
・テーブル
・ビュー
Dataproc Metastore (Preview) ・サービス
・データベース
・テーブル
Vertex AI (Preview) ・モデル
・データセット

参考 : アセットの自動カタログ

Google Cloud 以外のカタログ化

前述の Google Cloud サービス以外にも、オンプレミスや他クラウドのデータのメタデータをカタログ化することもできます。

例として MySQL や PostgreSQL、Oracle などの RDB や、Looker、Tableau などの BI ツール、Hive などはコミュニティからコネクタが提供されています。

コネクタがない場合、API 経由でカタログに登録することも可能です。Java、Node.js、Python など向けのクライアントライブラリが存在するほか、Data Catalog API を直接コールすることもできます。

参考 : Google Cloud 以外のアセットをカタログ化する

テクニカルメタデータとビジネスメタデータ

テクニカルメタデータ

Data Catalog では「テクニカルメタデータ」と「ビジネスメタデータ」の二種類を管理します。

テクニカルメタデータは、以下のようなものを指します。

  • Google Cloud プロジェクトの情報(プロジェクト ID、プロジェクト名など)
  • Google Cloud リソースのラベル
  • リソース名や説明 (Description)
  • スキーマ名や説明 (Description)

これらはいずれも、Data Catalog によって BigQuery テーブル等から自動的に収集され、Data Catalog で検索可能になります。

ビジネスメタデータ

一方のビジネスメタデータは、以下のようなものを指します。

  • タグ
  • (Preview) データスチュワード : そのデータの管理者の連絡先
  • (Preview) リッチテキスト : そのデータを説明する画像・表・リンク等

1個目に挙げた「タグ」は Google Cloud リソースに付ける「タグ」とは別で、Data Catalog 専用のものです。これについては後述します。

参考 : ビジネス メタデータの種類

Data Catalog のオブジェクト

エントリとエントリグループ

Data Catalog において、エントリは BigQuery データセットやテーブル、Pub Sub トピックなど一つ一つのリソースを指します。またカスタムエントリを作成することで、Google Cloud リソース以外のデータをエントリとして登録できます(SDK 等を用いて API 経由で行う必要があります)。

エントリグループは、エントリをグルーピングする管理単位です。@bigquery@pubsub などの Google Cloud リソースのエントリグループが、Data Catalog によって自動的に作成されます。

カスタムエントリグループの作成も可能で、「Cloud Storage ファイルセット」が対象です。Cloud Storage ファイルセット とは、ユーザによって作成されるエントリで、Cloud Storage 内のオブジェクト群を gs://${バケット名}/〜 の形で指定したものです。ファイルセットには、スキーマ情報を持たせることもできます。

Data Catalog におけるタグ

Data Catalog には「タグテンプレート」「タグ」の概念があります。

タグは、データエントリに付与できるキー・バリューの情報です。たとえば、以下はある BigQuery テーブルに付けたタグの例です。

タグの例

スクリーンショット下部の Quality Contact : Yuma Sugimura というのが、タグです。データを説明する任意のメタデータです。

またその上部に見出し状に Data Quality と表示されているのはタグテンプレート名です。タグテンプレートは、事前定義したタグキーのグループであり、再利用可能です。データエントリに新規にタグを付与するときは、タグテンプレートを選択すれば事前定義されたタグキーに値を入れるだけでよくなります。

タグテンプレート

タグテンプレートを新規に作成するときは「タグテンプレートギャラリー」という Google が用意したプリセットを利用できます。これは「タグテンプレートのテンプレート」と言うことができ、プリセットのままの形でタグテンプレートを作成してもいいですし、タグキーを追加したり削除しても構いません。

タグテンプレートギャラリー

データの自動登録 (Discovery)

Dataplex Discovery は、データレイク内のデータからメタデータを自動でスキャンして抽出し、メタデータ化して Dataproc Metastore、BigQuery、Data Catalog に登録して利用可能にする機能です。

Dataplex の機能の一部として提供されているので、詳細は以下の記事をご参照ください。

データリネージ

データリネージとは

データリネージとは、データがどこからどのように生成され、今の状態にあるのかを追跡する機能です。データリネージも、Data Catalog の機能名ではありますが、Google Cloud に限らず一般的に使われる用語です。なお「リネージ (lineage)」とは血統、系統などを指す英単語です。データの家系図のようなものを連想させます。

Data Catalog (Dataplex) のデータリネージ機能では、プロジェクトで Data Lineage APIData Catalog API の2つを有効化するだけで、自動的に BigQuery テーブルのデータリネージが記録されます。INSERT SELECTCREATE TABLE AS SELECT などのジョブが追跡され、以下の画像のようなリネージグラフとして表示可能になります。

データリネージ

上記の画像は mrt_purchase_history というテーブルが、purchasecustomer という2つのテーブルから INSERT SELECT によってデータを引いてきたことを示しています。

データ利用者は、この情報によりそのデータが信頼できるソースから来ているのか、またどのようなクエリによって生成されて今に至っているのか知ることができます。

BigQuery の自動トラッキング

データリネージは BigQuery の以下の情報を自動的に記録します。

  • COPY ジョブ(テーブルの複製)
  • Cloud Storage からの LOAD ジョブ
  • 以下の QUERY ジョブ (DDL)
    • CREATE TABLE
    • CREATE TABLE AS SELECT
    • CREATE TABLE COPY
    • CREATE TABLE CLONE
    • CREATE TABLE FUNCTION
    • CREATE TABLE LIKE
    • CREATE VIEW
    • CREATE MATERIALIZED VIEW
  • 以下の QUERY ジョブ (DML)
    • SELECT (ビュー、マテリアライズド・ビュー、外部テーブル)
    • INSERT SELECT
    • MERGE
    • UPDATE
    • DELETE

BigQuery Data Transfer Service による定期的な LOAD ジョブは自動記録されないので注意が必要です。

また、他にも Cloud Data Fusion、Cloud Composer、Dataproc などに対応しています。

さらに、対応していないソースでも、API 経由で記録させることが可能です。

保持期間

リネージ情報の保持期間は30日間です。

なお、BigQuery テーブルなどを削除したとしても、リネージ情報は30日間は残り続けます。

OpenLineage との統合

OpenLineage は(一般用語としての)データリネージの標準仕様の策定を目指しているプロジェクトです。

OpenLineage イベントを Data Lineage API 経由でインポートし、Google Cloud 側で管理することが可能です。詳細は以下の公式ドキュメントをご参照ください。

料金

API コール

Data Catalog の料金は、API コール数とタグを保存するのに要したストレージ容量に応じた従量課金です。なお、以下の料金表示は全て2023年11月現在のものです。

API コールは、月に100万回まで無料で、それ以降は 100,000 API コールあたり$10です。

ストレージは、1 MiB までが無料で、それ以降は $100/GiB/月の料金がかかります。このストレージには、任意に付与したタグが保存されます。

カタログが恒常的・頻繁に利用され、かつタグを大量に付与するまでは無料枠内で利用することができます。

以下の計算例も参考にしてください。

データリネージ

データリネージの料金は、Dataplex premium processing と呼ばれる、コンピュートリソースの使用ボリュームに応じて課金されます。使用ボリュームは Data Compute Unit (DCU) と呼ばれる単位で計算されます。

さらにリネージのデータはメタデータ用のストレージに保存されます。料金は前述のとおりです。

加えて、前述の API コール数に応じての課金もあります。

これらの合算がデータリネージの料金となります。

アクセス制御 (IAM)

メタデータの検索、エントリへのタグ付け、データリネージの閲覧などは、全て IAM によってアクセス制御されます。

「メタデータは検索可能で、リソース名称やメタデータまでは表示させて良いが、データそのものにはアクセスさせない」といった権限管理も可能です。

Google Cloud の IAM では AWS 等と異なりリソースに対して誰が何をできるかを設定します(IAM ポリシーをリソースが持ちます)。Google Cloud の IAM の基本は、以下の記事をご参照ください。

blog.g-gen.co.jp

例えばある BigQuery データセットに対するメタデータ検索の権限や、データそのものへのアクセス権限は、BigQuery データセットに対して設定します。あるいは BigQuery データセットの上位概念である Google Cloud プロジェクトに権限を付与して、継承させます。

ただし、Data Catalog には、カタログ化されたすべての Google Cloud リソースのメタデータ読み取り権限を付与できる roles/datacatalog.viewer ロール(和名 : Data Catalog 閲覧者)があり、このロールをプロジェクトレベルで付与すればそのプロジェクトの全ての Google Cloud リソースのメタデータが閲覧可能になります。

ただし権限管理には Google Cloud の IAM の概念に対する正しい理解が必要なので、ぜひ前述の当社記事をご覧いただき IAM の基礎を把握した後、以下の Data Catalog 公式ドキュメントを確認して権限設計を行ってください。

監査ログ

Google Cloud のすべてのプロダクトでは Cloud Audit Logs により、監査ログ(「誰が、いつ、どこで、何をしたか」)が採取されて Cloud Logging に記録されます。

blog.g-gen.co.jp

Data Catalog でも、エントリの作成、タグの編集などといった「管理アクティビティログ」は必須で記録されます。エントリの閲覧などの「データアクセスログ」は膨大になり得るため、有効化はオプショナルです。

杉村 勇馬 (記事一覧)

執行役員 CTO / クラウドソリューション部 部長

元警察官という経歴を持つ現 IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 12資格、Google Cloud認定資格11資格。X (旧 Twitter) では Google Cloud や AWS のアップデート情報をつぶやいています。