前回の記事では、「Google Cloudではじめるデータエンジニアリング入門」の第1章の内容、データ基盤の必要性と全体像について書きました。
今回は、第2章〜第11章の内容である、データ基盤の各コンポーネントで求められる機能とGCPで該当するサービスについて解説します。
目次
データウェアハウス・データマート
機能・要件
データウェアハウス(以下DWH)は、データ活用をしやすいように整形・加工したデータを保存する場所です。
データマートは、データ活用に最適化されたデータを保存する場所で、主にDWHから作られます。
DWHに求められる要件として、著書では以下のように定義しています。
機能要件
SQLによるデータ整形・加工ができること、BIツールに接続できること、データの取り込み・取り出しができること、大量のデータを格納できること
非機能要件
スケーラビリティ・クエリの速度などの性能、冗長化などの可用性、セキュリティの担保、メンテナンスのしやすさ
上記の要件を全て叶えるのがBigQueryであり、データ活用を推進するためのデータ基盤として、最も重要なサービスとあります。
BigQuery
BigQueryはデータの保存・SQLクエリの実行環境を備えています。BIツールの接続やデータの取り込み・取り出し含め、機能要件を全て満たすことができます。
内部アーキテクチャの特徴としては、コンピュート・ストレージ・メモリの分離、共有ストレージ、列指向などがあげられます。
これらの特徴によって、スケーラビリティや可用性、インデックスの考慮が必要ないといったメンテナンスのしやすさなど、非機能要件にも応えています。
以下は、BigQueryへのデータ取り込み方法、要件をより満たすテーブル設計、データマート設計についてまとめています。
データ取り込み | 【バッチ処理】BigQuery DTS 【ストリーミング処理】Dataflow + Pub/Sub 【外部データソース】BigQueryクエリエンジンを用いた、Cloud SQLやCloud Storageの取り込み |
テーブル設計 | パーティション分割・クラスタ化の適用 マテリアライズドビューの利用 |
データマート設計 | 変更DML(UPDATE、DELETE、MERGE)を避け、洗い替えを行う |
BigQueryの使い方については、BigQueryの使い方解説!利用手順から料金体系までをご紹介をご参照ください。
データレイク
機能・要件
データレイクは、様々な構造化・非構造化データを、加工せずにそのままの状態で格納します。
大規模データの蓄積と処理が要件となります。
オンプレミス環境では、Apache Hadoopを中心としたデータレイクの構築が主流であると書かれています。
Apache Hadoopとは、オープンソースのソフトウェアで、分散コンピューティングによる大規模なデータの蓄積と処理を実現します。
以下はHadoopエコシステムの一例です。
Hadoopエコシステム | 概要 |
---|---|
Hadoop HDFS | 分散ファイルシステム。データを蓄積する場所。 |
Apache Spark | ETL、機械学習、ストリーム処理などを実現するエンジン |
Apache Hbase | 大規模データを格納するデータベース |
著書ではApache Hadoopで構築したデータレイクを、GCPで構築する場合はどうなるかという観点で書かれています。
Cloud Storage・BigQuery・Dataproc
Hadoopで構築されたデータレイクを置き換える場合、データの蓄積にはCloud StorageやBigQuery、データの処理はDataprocを利用します。
Cloud Storageはオブジェクトストレージです。非構造化・構造化データどちらも格納することが可能です。Hadoopエコシステムとの対応では、HDFSにあたります。
Dataprocは、マネージドHadoop / Sparkサービスです。オンプレミスで構築・管理する必要のあったHadoopを簡単に構築でき、管理を自動で行ってくれます。
DWH・データマートで利用するサービスBigQueryは、Hadoopエコシステムと連携したデータレイクとしても活用できます。
オンプレミスからクラウドへ移行することで、インフラコストの最適化、運用コストの削減などのメリットがあると書かれています。
一方、Hadoopを基盤としたデータレイクがない場合や、Apache Hadoop/Sparkに慣れていない場合もあるかと思います。
その場合は、データの蓄積としてCloue Storage・BigQueryを利用し、データの処理や取り込みにはDataflow、Data Fusion、BigQuery DTSなどを利用すると良いかと思います。
ETL/ELT
機能・要件
ETL/ELTは、データを扱いやすくするために、データを整形・加工する処理です。
ETL(Extract、Transform、Load)はデータを取得、変換、取り込みの順で処理し、ELT(Extract、Load、Transform)は取得、取り込み、変換の順で処理します。
ETLとELTの使い分けとして、著書で紹介されている例の一部を紹介します。
ETL | SQLで表現できないバッチ処理がある ストリーミング処理がある 非構造化データを扱う |
ELT | SQLで完結できるデータ処理 |
Dataflow・Dataproc・DataFusion・Dataproc・Dataform
ETL/ELTサービスを以下にまとめます。
サービス | 概要 | 実装 | 用途 |
---|---|---|---|
Dataflow | マネージドデータ処理サービス。バッチ処理とストリーミング処理に対応。 | Java、Python、Go、SQLでプログラミング処理を書く。テンプレートの用意もある。 | ETL処理 SQLで表現できない処理 ストリーミング処理 |
Dataproc | マネージドHadoop / Sparkサービス。バッチ処理とストリーミング処理に対応。 | Scala、Java、Python、R言語で実装する。既存Spark処理の移行が可能。 | ETL処理 Apache Hadoop/Sparkに慣れている 既存処理がある |
Cloud Data Fusion | フルマネージドなデータ統合サービス。バッチ処理とストリーミング処理に対応。 | GUIで実装する。プログラミングは必要ない。SQLの利用もなく、GUIで加工処理を行う。 | ETL/ELT処理 GUIによるデータ統合処理 データパイプライン構築 |
Dataprep by Trifacta | 分析、レポート、機械学習に使用する構造化データと非構造化データをGUIで探索、クリーニングするサービス。 | GUIで実装する。プログラミングは必要ない。SQLの利用もなく、GUIで加工処理を行う。 | ETL/ELT処理 GUIによるデータ探索・クリーニング処理 |
Dataform | DWHのデータ管理プラットフォーム。SQLによる加工、ワークフロー管理、データ定義、テスト実装。バッチ処理のみ対応。 | SQLで実装。SQLの拡張機能であるSQLXが利用できる。 | ELT処理 BigQueryでのELTワークフローの構築 |
Cloud Data FusionとDataprepの機能は似ていますが、最適な用途が異なる印象を持ちました。
Cloud Data Fusionはデータ統合に主軸をおき、あらゆるデータの統合を実現します。バッチ・ストリーミング処理の実装ができ、ワークフローの構築も可能です。
Dataprepはデータの探索やクリーニングに主軸をおき、分析や機械学習で利用するためのデータを見つけるためのサービスです。バッチ処理やワークフローも、単体で実現することは難しいです。
著書に記載はありませんが、BigQueryをベースとしたELTとして、特に活用できそうに感じたものはDataformです。こちらはSQLベースでデータの加工とワークフローの管理ができ、データの定義やテストも可能です。
Dataformの使い方〜ELT、ワークフロー、データ定義、テストがこれ一つで完結!〜でも紹介していますので、ご興味あればご覧ください。
ワークフロー
機能・要件
データの取り込みから活用までの一連の流れをデータパイプライン、データパイプライン処理全体の流れをワークフロー、その管理をワークフロー管理と呼びます。
ETL/ELTなど、データの取得から取り込み、変換を制御する役割です。
Aを実行したらBを実行するといった依存関係の定義や、Aが失敗したらやり直して、成功したらBを実行するなどのエラー制御も、ワークフローでは必要となります。
Cloud Composer・Workflows
Cloud Composerは、ワークフロー管理サービスで、Apache Airflowのマネージドサービスです。
Pythonでワークフローの制御プログラムを書きます。ETL/ELTの機能は主眼としておらず、Cloud Composerの中でETL/ELT処理を行うSQLやDataflow、Cloud Data Fusionを呼び出して実装します。
Cloud Data FusionやDataformも、ワークフローの機能を備えている面があります。ただ、データ基盤全体のワークフローを制御するという観点では、Cloud Composerの利用が最適のようです。
Cloud Composerでワークフローを構築する方法〜BigQueryからGoogle Cloud StorageにCSVを出力する〜記事で、使い方をご紹介しています。
もう一つのワークフロー管理サービスWorkflowsは、サーバーレスのワークフロー管理サービスです。Cloud RunやCloud Functions、HTTPベースのAPI操作ができるものを対象に呼び出すことができます。
単体でのスケジュール機能やエラー通知機能はなく、大量のデータ処理を管理するワークフローには向いていません。
Cloud FunctionなどAPIベースのサービスを利用する、軽いETL処理のワークフローの用途となります。
ストリーミング処理
機能・要件
リアルタイム分析をする際に必要な処理です。数秒、数分単位でデータを取り込み、分析できる必要があります。
著書では、以下のようなユースケースをあげています。
デバイスの故障を予兆検知して、すぐにとりかえなどを判断する必要がある
ライブストリーミング配信中に視聴者の反応を分析し、動的にコンテンツなどプログラムを変える
このようなリアルタイム分析をするための要件としては、以下をあげています。
発生するデータを安定的に収集し続ける
収集されたデータを一定のかたまりに順次区切りながらデータの整形・集計・保存などの処理をリアルタイムに行う
処理されたデータをリアルタイムに蓄積し、ユーザーに対して分析可能にする
ワークロードの突発的な負荷変動に対応する
Pub/Sub・Dataflow・BigQuery
リアルタイム分析の機能・要件を満たすサービスは以下となります。
サービス | 機能 | 概要 |
---|---|---|
Pub/Sub | 収集、メッセージング | データの取り込みとメッセージングを行うマネージドサービス。数百GB/秒まで対応することが可能。 |
Dataflow | ストリーミング処理 | ETL/ELTを参照。ストリーミング処理を担う。 |
BigQuery | 蓄積、分析 | データウェアハウス・データマートを参照。ストリーミング挿入の機能があり、リアルタイムに発生するデータを順次取り込むことが可能。 |
著書では、リアルタイムタクシーデータを用いたリアルタイム分析基盤の構築をサンプルとして提示しています。
Dataflowのドキュメントには、Dataflow SQL によるストリーミング データの結合のチュートリアルが記載されています。
データ活用
ビジネスインテリジェンス
機能・要件
ビジネスインテリジェンス(以下BI)は、企業活動の意思決定をデータに基づいて行うことと定義されています。
要件としては以下の5つがあげられています。
大量データの処理
容易な可視化・分析操作
ダッシュボードレポーティング機能
データ管理におけるセキュリティ
データガバナンス
データ管理におけるセキュリティは、必要な人に必要なデータを見せるなど、人とデータのアクセス制御ができることが重要です。
データガバナンスは、レポートAとBの数値の違いがどこからきているかなど、集計定義を明確に管理することが求められます。
GCPで構築するデータウェアハウス・データマートはBigQueryであり、BIツールとの接続が可能です。
マテリアライズドビューや、BigQuery BI Engineという高速メモリベース機能を利用することで、より効率的なBIツールとの連携が可能です。
コネクテッドシート・データポータル・Looker
GCPで用意されているBIツールは主に3つです。
サービス | 概要 | 用途 |
---|---|---|
コネクテッドシート(Googleスプレッドシート) | Googleスプレッドシートから大量データを扱える機能。スプレッドシートからBigQueryへ接続し、表計算やグラフ作成が可能。 | スプレッドシートでセルフ分析 |
データポータル | Googleアカウントがあれば誰でも利用できる無料の分析・可視化ツール。BigQuery以外の接続も可能で、Googleマップやツリーマップなどのグラフも作成可能。 | データ可視化の共有と分析 |
Looker | エンタープライズ向けの分析プラットフォーム。レポーティング機能以外にも、データガバナンス管理が可能なLookML機能がある。 | データ可視化・分析によるアクション、データガバナンスが必要となる組織 |
表計算で大量データを分析したい場合はコネクテッドシートの利用が最適です。
データポータルとLookerの使い分けは、レポートの運用範囲や目的、データガバナンスの必要性などで決まってきます。
これら以外にも、Power BIやTableauなどもBigQueryと接続が可能です。
データポータルについては、GA4とBigQueryを連携する方法!GA4・BigQuery・データポータルでアクセス解析でも使い方をご紹介しています。
発展的な分析
データ活用の発展として、著書では地理情報の分析と機械学習が取り上げられています。
地理情報分析では、IoTデバイス情報などを収集し、どの地区に顧客が多くきているかなど、位置情報を元にした分析をします。
BigQuery GISというサービスは、地理情報分析のためのさまざまな機能を備えています。
機械学習は、商品のレコメンドや売上予測など、色々な場面で活用されています。
BigQuery MLやAutoML Tablesというサービスは、SQLで機械学習モデルの構築が可能です。
BigQuery MLでTwitterエンゲージメント数の予測モデル作成でも紹介していますので、良ければご覧ください。
セキュリティとコスト管理
データ基盤を安心かつ安全に構築・運用するための設計やサービスが紹介されています。
セキュリティ・監査・検知・コスト管理の観点で利用できるサービスを、以下に記載しています。
観点 | サービス | 概要 |
---|---|---|
セキュリティ | Cloud Identity and Access Management(IAM) | GCPリソースへのアクセス制御を集約、可視化して一元管理するサービス。アカウント単位で制御する。 |
セキュリティ | VPC Service Contrals | 仮想的なセキュリティ境界を定義し、GCPリソースへのアクセスを制御するサービス。IPアドレスなどコンテキス単位で制御する。 |
監査 | Cloud Logging | ログ管理サービス。BigQueryやCloud Storageへのエクスポートが可能。 |
監査 | BigQuery・INFOMATION_SCHEMA | BigQueryにデフォルトで存在する、データセットやテーブルなどのメタデータを参照できるビュー。 |
監査 | Cloud Asset Inventory | 時系列データベースに基づくインベントリサービス。いつ、どのリソースが、どのような設定であったかとうい状態を保持する。 |
検知 | Security Command Center | 監査ログを利用した異常検知と対応を行うサービス。IAMの異常検知のほか、アプリケーション脆弱性の検知も可能。 |
検知 | Cloud DLP | 機密性の高いデータを検知・分類・保護するサービス。クレジットカード番号や個人情報を検知しマスキングすることが可能。 |
コスト管理 | Cloud Billing | 請求を管理するサービス。予算機能や予算アラートを利用することで、コスト管理が可能 |
まとめ
データ基盤の各コンポーネントの機能・要件と、対応するGCPサービスについてご紹介しました。
著書では、紹介したサービスの使い方はもちろん、サービスの詳細なアーキテクチャ、それぞれの使い分けなどの指針が細かく解説されています。
サービスの使い方については、公式ドキュメントのチュートリアル、Qwiklabs、Courseraなどで学ぶことができます。
この記事が、データ基盤構築、GCPサービス理解のきっかけになれば幸いです!