entry-header-eye-catch.html
entry-title-container.html

entry-header-author-info.html
Article by

データ活用の推進に向けたデータのカタログ化

はじめに

こんにちは。CTO室プラットフォーム開発部のshigeniiと申します。
社内では全社横断のデータ基盤の運用保守や改善、データ活用推進の業務を担当しています。

今回はデータ活用を推進する目的で対応を進めた「データのカタログ化」についてお話をさせていただきたいと思います。

データのカタログ化とは

「データのカタログ」とは「データに関する情報(メタデータ)」を指します。 「データに関する情報」には様々なものがありますが、具体的には下記のようなものが挙げられます。

  • データの所有者や管理者
  • データがどのようなものかという説明
  • データを取り扱う上での留意事項
  • データの保持期間

他にもいろいろと考えられますが、これらの情報をまとめ上げることをここでは「データのカタログ化」と呼んでいます。

また、データに関する情報(メタデータ)を集約したものが「データカタログ」と呼ばれるものになります。

補足説明:
「データに関する情報」は一般的に「メタデータ」と呼ばれるものです。
メタデータとは「データについてのデータ」という意味になります。

データをカタログ化することにより実現したいこと

ピクシブではイラストコミュニケーションサービス「pixiv」を始めとして、数多くのプロダクトを展開させていただいており、とても多くのユーザー様にご利用いただいています。

各プロダクトから収集したデータをデータベースに格納し、それらを「カタログ化」することにより、必要な正しい情報を容易に引き出せるようにすることでデータの活用を促進し、ユーザーにより多くの価値を届けたいと考えています。

データのカタログ化にいたった背景

弊社内ではデータの扱いやデータ利活用の相談など、データに関すること全般に関する問い合わせの窓口を開設しています。

窓口には様々な相談が届きますが、その中でも施策の分析等の為に「こういうデータを取得したいのだけど」といった相談が数多く寄せられます。その度に、社内の有識者にどのデータを参照するべきか?このデータで問題はないか?といった確認を随時行う必要があり、解決までに時間がかかる状況となっていました。この状況をできるだけ改善していきたいといったことが背景にありました。

現状の問題点

データを活用したいと考えたとき、まずは必要なデータがどこにあるかを調べて、そこにたどり着く必要があります。

具体的な手段としては下記が考えられます。

  • 社内で運用しているCMSなどのドキュメント類を探す
  • データベース上のテーブルに格納されているデータをのぞいてみる
  • 関連するコードを探す
  • 有識者に聞く

上記のいずれかでデータにはたどり着くことができますが、たどり着くまでに貴重な時間を要しています。
また、必要なデータにたどり着いたとき下記のようなケースが多々見受けられます。

 「それっぽいデータは見つかったけど説明が書かれていないので良いよくわからない。」

 「ドキュメントの更新日付が数年前だけど、現在もこの状態なのだろうか?」

 「こちらとあちらで同じようなことが書いてあるけど微妙に違う。どっちが正しいのだろう?」

 「データを見るとある日時で更新が止まっている。これらは現在使われているのだろうか?」

これらの問題はサービスの成長とともにデータの量や種類が増え、さらに拡大していくと予想できます。

問題点に対する解決策

現状の問題点を踏まえた上での解決策として、下記の2点を実現することを考えました。

  • データに関する情報を一元で管理し、それらを最新の状態に保つしくみを作ること
  • 必要なデータに容易にたどり着けるしくみを作ること

まずはデータに関する情報を一元で管理し、それらを最新の状態に保つしくみです。

これまでは複数の情報源に対してデータに関する情報の記載が散乱していた部分あり、いわゆる「SSOT: Single Source of Truth(信頼できる唯一の情報源)」が確立されていませんでした。

このため、経年を経て一部の情報が意図せず誤った情報に変わってしまっているものも見受けられました。

一元管理する方法としては様々な選択肢が考えられますが、「データに関する情報をデータアセットを作成するSQLスクリプトにdescriptionとして記載し、それをコードリポジトリにて管理する」という方針を取りました。データアセットとはデータベース上の「テーブル」や「ビュー」を指します。そして、リポジトリ上のSQLスクリプトのdescriptionが更新された際、その情報でデータベース上のアセットのdescriptionを更新するようなしくみを作りました。

データアセットを作成するSQLスクリプトのdescriptionでデータに関する情報を管理するということは、データが格納されているデータベース上のメタデータとして情報を管理するということになりますが、この利点は後述いたします。

また、データベースのUI上でデータアセットの情報を更新してしまうと更新の履歴を容易に確認することができません。この為、データに関する情報は変更管理がしやすいリポジトリで管理するようにしました。

次に「必要なデータに容易にたどり着けるしくみを作ること」という点についてです。

データに関する情報を一元で管理できるようになったら、次はそれらの情報に容易にアクセスできるようにする必要があります。

情報を一元管理する場所は様々なものが考えられますが、「データベース上のメタデータ」として管理する方針としました。

これは、データに関する情報はデータを格納するデータベース上のデータアセットの説明として記載しておくのが最も管理がしやすく、そこから他への転用もしやすいことが理由です。

また、ベンダー各社からはデータのカタログを管理する「データカタログ」と呼ばれるプロダクトが各種存在していますが、昨今のクラウドベンダーはデータベースのプロダクトと共にデータカタログのプロダクトを合わせて提供しています。

ピクシブではデータ基盤のデータベースとしてGoogle Cloudの「BigQuery」を利用していますが、Google CloudにはBigQueryをはじめとして数多くのGoogle Cloudプロダクトの情報をカタログとして管理できる機能を保有している「Dataplex」というものがあります。

cloud.google.com

DataplexからはBigQuery上の各データアセットに格納されたデータに関する情報(メタデータ)を容易に検索することができます。

加えて下記の理由から、データカタログとしてDataplexの機能を利用する方針としました。

  • データベースとデータカタログのどちらも同じベンダーのプロダクトのため親和性が良い
  • データカタログを利用するのに初期費用がかからない。
  • データカタログの検索に費用がかからない(APIを利用する場合は費用がかかるようです)
  • 権限の管理がしやすい
  • Dataplexにはデータカタログ以外にもBigQuery上のデータを扱いやすくする機能がある

さらなる改善に向けて

データに関する情報を一元で管理し、必要なデータに容易にたどり着けるしくみを作ることで、結果的に現状の問題点をだいぶ改善することはできました。

今後、さらにデータについてタグや用語集を取り入れて(前述のDataplexでは「Tag Templates」や「Dataplex glossary」といったものがあります)、よりデータ活用しやすいデータ基盤を作っていたきたいと考えています。

おわりに

Google Cloudの「Dataplex」はデータファブリックによる大規模な分散データやガバナンスの管理ができるプロダクトとなっています。特に、BigQueryとの親和性がとても高く、「データリネージ」も既に導入をしました。 inside.pixiv.blog

また、Dataplexには現在も様々な機能強化や機能追加がなされています。こういった機能をデータ基盤にうまく取り入れ運用し、データ活用の推進を行うことで、より良いピクシブのプロダクトをユーザーに届けていきたいと考えています。

20220927102812
shigenii
2022年1月に中途入社。全社を横断したデータ基盤の運用保守や改善、データ活用の推進、データマネジメント業務を担当しています。お酒、海外旅行、手芸、ギターが大好きです。