G-gen の神谷です。本記事では、Google Cloud のスケーラブルでサーバレスなデータ管理ツールである Dataplex を徹底解説します。
Dataplex の概要
Dataplex とは
Dataplex は Google Cloud (旧称 GCP) で提供されている、分散されたデータの統合・管理を自動化するためのフルマネージドサービスです。以下のことが実現できます。
- 組織内の複数の Google Cloud プロジェクトにまたがるデータを統合してデータメッシュ (後述) を構築する
- データの権限管理を一元化する
- メタデータを付けることでデータをカタログ化し、検索しやすくする
- データの品質やライフサイクル (生成過程) を管理する
また Dataplex の一機能として Data Catalog というサービスも内包されています。Data Catalog は BigQuery や Cloud Storage 上にあるデータのメタデータを管理しカタログ化するフルマネージドサービスです。当記事では Data Catalog の詳細な機能には触れませんが、Dataplex の機能で検知されたメタデータは Data Catalog に自動的に登録されますし、UI 上は Dataplex と Data Catalog は統合されています。
- 参考 : Dataplex の概要
メリット
Dataplex を使うことにより、組織内の散らばったデータを一箇所に集約せずに、そのままの状態で統合管理できます。データの移動やコピーは必要ありません。
具体的には、Cloud Storage や BigQuery に入っているデータがさまざまなプロジェクト、バケット、データセットに分散していても、統合管理をすることができるようになります。
「統合管理」にはデータの検索性のほか、データ品質の自動的なチェックやセキュリティ設定も含まれています。
Dataplex が管理対象にできるデータは、BigQuery、Cloud Storage、Dataproc Metastore などの Google Cloud サービスのほか、Apache Spark や Presto との統合も可能です。
データメッシュとは
Dataplex は「ドメイン」を中心とした「データメッシュ」を提供するプロダクトです。
組織内で、各部署やシステムごとに個別にデータを持ってしまい、かつどこにデータがあるか分からないためにデータの活用ができない状態はデータのサイロ化と呼ばれ、組織のデータの課題として有名です。これを回避するために、従来は単一のデータ基盤にデータを収集することでこれを解決しようとしてきました。
しかしこのアプローチは、データの移動(コピー)が必要になります。この実現には複雑なデータパイプラインの構築が必要なことに加え、コンピュートやストレージリソース、そしてそれらを管理する人のリソースも必要となります。
このような中央集権的な方式とは一線を画する解決策がデータメッシュです。論理的な管理レイヤで仮想的にデータをグルーピングすることで、データを分散配置したままで統合管理を可能にするアプローチです。これにより、データのコピーは不要でありながら、データのサイロ化を回避して、また認証・認可やデータ品質のモニタリングなどを実現できます。
Dataplex で実現するデータメッシュを理解するには、併せて以下の用語も把握してください。
用語 | 説明 |
---|---|
ドメイン | ・特定のビジネス分野や領域を表す概念 ・企業内で共通の言語やルールで情報を管理するための基盤となる ・例えば「セールス」「小売」「財務経理」など |
また、以下は、データメッシュにおける登場人物に関する用語です。
用語 | 説明 |
---|---|
データプロダクトオーナー | データプロデューサーとも呼ばれる。データを生み出す人またはチームであり、ビジネスやデータのドメインに最も詳しい。売上や受発注データに詳しい販売部門、EC サイトのアクセスログや顧客情報に詳しいマーケティング部門等にそれぞれデータプロダクトオーナーが存在する |
データコンシューマー | データアナリストやデータサイエンティスト、あるいはビジネス部門の従業員といった データを消費 (利用) する人またはチーム |
データスチュワード | 組織全体のデータ基盤を管理する人またはチーム。データの管理人であり、データ品質やガバナンス、権限管理、機密情報のマスキングなどを司る |
これらの登場人物が、ドメインごとにデータを生成・管理し、利用可能にする組織アーキテクチャがデータメッシュです。Dataplex はそのデータメッシュを実現するためのプロダクトであると言えます。
構成とオブジェクト
Dataplex の主要オブジェクトは以下のとおりです。前述の用語は組織や概念に関するものでしたが、ここからは実際に Dataplex を触るとシステム的に登場します。
- 参考 : 用語
名称 | 説明 |
---|---|
レイク | データの論理的なまとまり。ドメインごとにレイクを持つことが想定されている |
ゾーン | レイクの中に存在するサブドメイン。データレイク、DWH、データマートのような段階を表現したり、給与や人事情報といった機密性の度合いで分類する。ゾーンには以下の2タイプが存在する。 ・Raw zone : 無加工・未チェックの生データ ・Curated zone : データクレンジング済みでいつでも分析できるデータ。Parquet や Avro などの構造化データ、BigQuery テーブルなどのアセットを含む |
アセット | 実データであり、実体は Cloud Storage バケットや BigQuery データセット。実データが異なる Google Cloud プロジェクトに所属していても、単一ゾーンに所属することができる |
エンティティ | 非構造化・半構造化・構造化データに対するメタデータ |
上記のオブジェクトは、以下のように階層構造を構成します。
従来だとデータは、Google Cloud プロジェクトでグルーピングし、BigQuery のデータセット名や Cloud Storage のバケット名などの命名規則で管理していました。
しかし Dataplex では Google Cloud プロジェクトが何であろうと、リソース名が何であろうと、レイクで階層化することで統合管理 できます。
レイクは複数のゾーンを含めることができますが、ゾーンは一つのレイクにしか存在できないため、ゾーンをドメインに対するタグのように扱うことはできません。
Dataplex Discovery
Dataplex Discovery とは
Dataplex Discovery は、データレイク内のデータからメタデータを自動でスキャンして抽出し、メタデータ化して Dataproc Metastore、BigQuery、Data Catalog に登録して利用可能にする機能です。
新しいゾーンやアセットを作成すると、自動で Dataplex Discovery が有効になりますが、オプショナルで無効にすることもできます。
Discovery が有効になっている Dataplex アセット(Cloud Storage バケット等)では、画像ファイルのような非構造化データや、Parquet / Avro / ORC / JSONL / CSV などの構造化ファイルが 自動でスキャンされます。テーブル名、スキーマ、パーティション定義などのテクニカルメタデータが収集され、Dataproc Metastore に Hive-style テーブルとして、また BigQuery では外部テーブルとして登録されるため、自動的にデータがクエリ可能になります。
これによって、組織内で管理されるデータソースが増えた場合に、わざわざ BigQuery にロードまたは外部テーブル定義したり、Jupyter Notebook で読み込める形に整形加工したりといった作業をせずとも、すぐさまこれらのツールで分析ができます。
- 参考 : データを検出します
Discovery Action
データのスキャン中に問題が検出されると、Discovery Action (検出操作) と呼ばれるアラートが挙げられます。以下のような問題が検出されたときに、Discovery Action が起票されます。
- 無効なデータ形式
- 互換性のないスキーマ
- 無効なパーティション定義
- データの欠損
機能名的に誤解を招きそうですが、Discovery Action はあくまで問題のアラートを上げるだけで、実際の改善アクションはユーザが行う必要があります。
- 参考 : 検出操作
異なるシステムのインターフェースをつなぐデータパイプラインでは、関係者内であらかじめ設計・合意されたスキーマのデータソースが流れていくはずです。
前述のようなデータ不正は想定外の恒久的エラーであるケースが多く、クラウドリソースの枯渇のような一時的エラーとは異なります。システムの自動リトライによって回避できるものではないため、迅速に検知して人が対処する必要があります。Discovery Action はそのような事態の迅速な検知に役立ちます。
アクセス制御
認証・認可 (IAM)
IAM の基本的な理解
当項目の内容を理解するには、以下の記事をお読みになり、Google Cloud の IAM の基礎的な理解をしていただくことが前提となります。Amazon Web Services (AWS) の IAM 等とは概念が異なりますため、ぜひご参照ください。
アセットと IAM
Dataplex では、Cloud Storage や BigQuery といった Dataplex アセットの上に 仮想化階層 を追加し、そこに対してユーザやサービスアカウントの IAM 権限を付与することで権限を管理します。
これにより様々なプロジェクトに分散したアセットの権限管理を集約できます。それが Dataplex を利用する利点の一つです。
レイクの IAM ポリシーはゾーンに伝播 (継承) され、さらにはゾーンが保持するアセットに伝播されます。Dataplex 経由の IAM ポリシーは、リソースにもともとついている通常の IAM ポリシーとは別で管理されます。プロジェクトレベルでロールを管理しなくて良くなり、リソースレベルの IAM 管理になるため最小権限の原則が守りつつ、管理工数を削減することができます。
- 参考 : IAM を使用したアクセス制御
プロジェクトをまたぐ権限管理
管理対象のアセットが Dataplex とは別の Google Cloud プロジェクトに存在している場合は、Dataplex のプロジェクトの「Dataplex サービスアカウント(サービスエージェント)」に対して、アセットが存在するプロジェクトの IAM 権限(Cloud Storage 管理者ロールや BigQuery 管理者ロール)を付与する必要があります。
Dataplex サービスアカウントは service-${プロジェクト番号}@gcp-sa-datalake.iam.gserviceaccount.com
という名称で、Dataplex のプロジェクトに存在しています。
このように、Dataplex サービスアカウントに IAM 権限を委任することで、Dataplex は仮想的な権限レイヤを実現できるのです。
VPC Service Controls
VPC Service Controls を使って Dataplex に追加のアクセス制御層を作り、データ流出のリスクを軽減することができます。
VPC Service Controls は Google Cloud API へのアクセス制御を行うための独立した Google Cloud サービスです。以下の記事をご参照ください。
また以下の公式ドキュメントもご参照ください。
属性ストア
属性ストアは、テーブルに対するアクセス制御とカラムに対するアクセス制御をひとまとめにして定義するための機能です。なお当機能は2023年10月現在、プレビュー中ですのでご留意ください。
通常の BigQuery の IAM だと、テーブル単体や、カラム単体といった形で別々のアクセス制御しかできませんが、Dataplex の属性ストアを使うと、テーブルとカラムをひとまとめにして権限管理できる点がポイントです。
当機能では、単一のアセット (リソース = テーブル、カラムの2種類のみ) に対して複数の属性を設定可能です。属性同士の「マージ(並列化)」や「継承(階層化)」を使いこなすことで、複雑な権限制御が可能になります。
- 参考 : Dataplex 属性ストアの使用
データの品質チェック
Dataplex におけるデータ品質の検証
Dataplex には データの品質チェック機能 がついています。以下の3種類の機能が用意されています。
- 自動データ品質
- データ品質タスク
- データプロファイリング
自動データ品質
自動データ品質とは
自動データ品質機能は、事前に定義したデータ品質に基づいてデータの品質をチェックし、品質要件を満たしていない場合にアラートを発報できる機能です。
ルールは以下の方法で定義できます。
- Dataplex からサジェストされる推奨事項を利用
- 事前定義ルール
- カスタム SQL ルール
自動データ品質チェックをすることで、品質定義を自動化・簡素化することができ、また品質を満たしていない場合の初動対応も迅速に行うことができるようになります。
- 参考 : 自動データ品質の概要
データ品質タスク
Dataplex データ品質タスク ではユーザが独自にカスタマイズ可能なデータ品質チェックの機能です。BigQuery と Cloud Storage に対して実行できます。
データパイプラインに組み込んでデータ検証に用いたり、あるいは定期的なデータ品質チェックに用いることができます。
ルールは YAML で定義します。定義したルールは SQL に変換され、BigQuery 上で処理されるため、インフラ設定は不要です。また、スケジュールに基づいてチェックを実行できるほか、API 経由で呼び出し可能なため、既存のデータパイプラインに組み込むこともできます。
バックエンドではオープンソースの データ品質エンジン である CloudDQ が使われています。CloudDQ は BigQuery 用のデータ品質検証コマンドラインツールであり、クラウドネイティブ、宣言型、スケーラブルといった特性を持ちます。
- 参考 : データ品質タスクの概要
データプロファイリング
データプロファイリングは、BigQuery テーブルの列の統計的特性をレポーティングする機能です。
テーブルの各列の「値の分布」「null の数」「ユニークな値の数(概算)」「最大値・最小値・平均値・標準偏差・近似中央値」などを出すことができます。
スキャンの対象テーブルを指定し、スケジュール実行することもできますし、結果を別の BigQuery テーブルにエクスポートすることもできます。
- 参考 : データ プロファイリングについて
ロギングとモニタリング
ロギング
Dataplex のログは Cloud Logging に自動的に出力されます。アセットを検出したり、スケジューリングされたタスクが実行されると、Cloud Logging にログが出力されます。
また監査ログ(「誰が、いつ、どこで、何をしたか」)も同様に、Cloud Logging に出力されます。
- 参考 : Dataplex のログをモニタリングする
- 参考 : 監査ログの管理
モニタリング
Dataplex は Cloud Monitoring と統合されており「アセットの合計サイズ」「ファイルセットの数」「テーブルの数」などに加え、未解決の管理アクションの有無などもメトリクスとして閲覧できます。
また、アプリケーションのパフォーマンスや稼働状況を視覚的に把握できます。Dataplex から収集した指標やメタデータを Cloud Monitoring のダッシュボードやグラフで表示し、詳細な分析情報を提供します。
これらの指標は自動的に有効化され、直感的にアクセスできます。
料金
Dataplex の料金は Dataplex が使った「コンピュートリソース (CPU)」「ストレージ」によって課金されます。コンピュート課金には Standard と Premium の2ティアがあり、例えば Dataplex Discovery 機能は Standard ティアの単価で課金され、データ探索ワークベンチ (別名 Dataplex Explore) 機能は Premium ティアの単価で課金されます。
どの機能にどの課金が適用されるか、詳細は以下をご参照ください。
- 参考 : Dataplex pricing
その他の機能
ビジネス用語集
ビジネス用語集 (Business glossaries) は、組織全体でビジネス関連の用語を定義して一元管理する機能です。2023年10月現在、プレビュー中の機能です。
用語はカテゴリ分け・階層化することができ、また用語間の関係を定義することもできます。その用語の管理者を明記しておくことも可能です。
さらに定義された用語は、データエントリのカラムにアタッチすることができるため、メタデータ管理の際に表記の揺れを防ぐことにも繋がります。
データ探索ワークベンチ
Dataplex のデータ探索ワークベンチ (別名 Dataplex Explore) は、Spark SQL や Jupyter notebook のインターフェイスにより、インタラクティブなクエリを可能にする機能です。
サーバーレスな環境が起動され、Dataplex で管理されたレイクに対して探索的なクエリが可能になります。
- 参考 : データ探索ワークベンチを使用する
神谷 乗治 (記事一覧)
クラウドソリューション部
クラウドエンジニア。2017 年頃から Google Cloud を用いたデータ基盤構築や ML エンジニアリング、データ分析に従事。クラウドエース株式会社システム開発部マネージャーを経て現職。Google Cloud Partner Top Engineer 2023,2024、Google Cloud Champion Innovators(Database)、著書:「GCPの教科書III【Cloud AIプロダクト編】」