データを分析する

Last reviewed 2023-08-08 UTC

Google Cloud Architecture Framework のこのドキュメントでは、Google Cloud におけるデータ分析の基本原則とベスト プラクティスについて説明します。さらに、主要なデータ分析サービスの詳細と、これらのサービスがデータ ライフサイクルのさまざまな段階でどのように役立つかについて説明します。これらのベスト プラクティスは、データ分析のニーズを満たし、システム設計を作成する際に役立ちます。

基本原則

どの企業も、データを分析して、その結果から行動につながるインサイトを得たいと考えています。Google Cloud では、データの取り込みからレポートや可視化まで、データのライフサイクル全体をサポートするさまざまなサービスを提供しています。これらのサービスのほとんどはフルマネージド サービスであり、一部はサーバーレスです。Apache Hadoop または Beam をセルフホストするなど、Compute Engine VM 上にデータ分析環境を構築し、管理することもできます。

特定の重点分野、チームの専門知識、戦略的視点があれば、データ分析のニーズに対応するためにどの Google Cloud サービスを採用するかを判断するのに役立ちます。たとえば、Dataflow ではサーバーレス アプローチで複雑な変換を記述できますが、コンピューティングと処理のニーズに対応する独自のバージョンの構成を使用する必要があります。または、Dataproc を使用しても同じ変換を実行できますが、クラスタの管理やジョブの微調整は自分自身で行います。

システム設計では、抽出 / 加工 / 読み込み(ETL)抽出 / 読み込み / 変換(ELT)など、自社のチームで採用する処理戦略を検討します。また、バッチ分析またはストリーミング分析のどちらが必要かも考慮する必要があります。Google Cloud では、統合されたデータ プラットフォームを提供しているため、これにより、ビジネスの要件に合わせてデータレイクデータ ウェアハウスを構築できます。

主なサービス

次の表に、Google Cloud の分析サービスの概要を示します。

Google Cloud サービス 説明
Pub/Sub ストリーム分析とイベント ドリブン コンピューティング システム向けの、シンプルで信頼性の高いスケーラブルな基盤。
Dataflow ストリーム(リアルタイム)モードとバッチ(履歴)モードでデータを変換、拡張するフルマネージド サービス。
Dataprep by Trifacta 分析用の構造化データと非構造化データを視覚的に探索、クリーニング、準備できるインテリジェント データサービス。
Dataproc 高速で使いやすいフルマネージド クラウド サービスであり、Apache Spark クラスタと Apache Hadoop クラスタを実行します。
Cloud Data Fusion クラウド向けに構築されたフルマネージドのデータ統合サービス。ETL/ELT データ パイプラインを構築し、管理できます。Cloud DataFusion は、グラフィカルなインターフェースや、事前構成されたコネクタと変換を含む幅広いオープンソース ライブラリを提供します。
BigQuery ストレージと処理能力のニーズに合わせてスケールする、Google のフルマネージドで低コストのサーバーレス データ ウェアハウスです。BigQuery では、テラバイト規模からペタバイト規模のデータを分析できるカラム型の ANSI SQL データベースを利用できます。
Cloud Composer フルマネージドなワークフロー オーケストレーション サービス。クラウドとオンプレミス データセンターにまたがるパイプラインの作成、スケジューリング、モニタリングを実現します。
Data Catalog フルマネージドでスケーラブルなメタデータ管理サービス。すべてのデータをすばやく検出、管理、把握できます。
Looker Studio インタラクティブなダッシュボードを通じてデータから分析情報を引き出すために役立つ、フルマネージド ビジュアル分析サービス。
Looker マルチクラウド環境でデータを接続、分析、可視化するエンタープライズ プラットフォーム。
Dataform データ パイプラインのコラボレーション、作成、デプロイを行い、データ品質の確保に役立つフルマネージド プロダクト。
Dataplex 一貫性のあるコントロールを使用して、データレイク、データ ウェアハウス、データマートのデータを横断的に管理、モニタリング、運営するマネージド データレイク サービス。
Analytics Hub 組織全体でデータ分析アセットを効率的かつ安全に交換し、データの信頼性とコストの課題を解決できるプラットフォーム。

データ ライフサイクル

システム設計の段階で、任意のシステムまたはデータ ライフサイクルでの一般的なデータ移動を中心に、Google Cloud データ分析サービスをグループ化できます。

データ ライフサイクルには、次のステージとサンプル サービスが含まれます。

次のステージとサービスが、データ ライフサイクル全体を通して実行されます。

  • データ統合には、Data Fusion などのサービスが含まれます。
  • メタデータの管理とガバナンスには、Data Catalog などのサービスが含まれます。
  • ワークフロー管理には、Cloud Composer などのサービスが含まれます。

データの取り込み

以下に挙げるデータの取り込みのベスト プラクティスを、実際の環境に適用します。

取り込むデータソースを特定する

通常、データは別のクラウド プロバイダまたはサービスから、またはオンプレミスのロケーションから提供されます。

取り込み後にデータをどのように処理するかを検討してください。たとえば、Storage Transfer Service は Cloud Storage バケットにのみデータを書き込みますが、BigQuery Data Transfer Service は BigQuery データセットにのみデータを書き込みます。Cloud Data Fusion は複数の宛先をサポートしています。

ストリーミング データソースまたはバッチ データソースを特定する

データの使用方法のニーズを考慮し、ストリーミングまたはバッチのユースケースの場所を特定します。たとえば、グローバル ストリーミング サービスを低レイテンシで実行する必要がある場合は、Pub/Sub を使用できます。分析やレポート作成で使用するデータが必要な場合は、データを BigQuery にストリーミングできます。

オンプレミスまたは他のクラウド環境で Apache Kafka などのシステムからデータをストリーミングする必要がある場合は、Kafka to BigQuery Dataflow テンプレートを使用します。バッチ ワークロードの場合、最初のステップは通常、Cloud Storage へのデータの取り込みになります。データの取り込みには gsutil ツールまたは Storage Transfer Service を使用します。

自動化ツールでデータを取り込む

他のシステムからクラウドに手動でデータを移動するのは容易なことではありません。可能であれば、データ取り込みプロセスの自動化が可能なツールを使用してください。たとえば、Cloud Data Fusion の場合、GUI のドラッグ&ドロップ操作で外部ソースからデータを取り込めるコネクタやプラグインが用意されています。チームでコードを作成する場合は、Data Flow または BigQuery でデータの取り込みを自動化できます。Pub/Sub は、ローコードまたはコードファーストのアプローチで役立ちます。データサイズが 1 TB までであれば、gsutil を使用して、データをストレージ バケットに取り込みます。取り込むデータ量が 1 TB を超える場合は、Storage Transfer Service を使用します。

移行ツールを使用して別のデータ ウェアハウスから取り込む

Teradata、Netezza、Redshift など、別のデータ ウェアハウス システムからの移行が必要な場合は、BigQuery Data Transfer Service の移行支援を利用できます。BigQuery Data Transfer Service は、スケジュールに従って外部ソースからデータを取り込むことができるサードパーティ転送も提供しています。詳細については、各データ ウェアハウスの詳細な移行方法をご覧ください。

データ取り込みの要件を評価する

取り込む必要があるデータの量は、システム設計で使用するサービスを決定するのに役立ちます。データをストリーミングで取り込む場合、Pub/Sub では 1 秒あたり数十ギガバイトにスケーリングされます。データの容量、ストレージ、リージョンの要件は、Pub/Sub Lite がシステム設計に適しているかどうかの判断に役立ちます。詳細については、Pub/Sub または Pub/Sub Lite の選択をご覧ください。

データのバッチ取り込みでは、転送するデータの合計量と転送速度も評価します。時間の見積もりオンライン転送とオフライン転送の比較など、利用可能な移行オプションを確認してください。

適切なツールを使用してスケジュールに沿って定期的にデータを取り込む

Storage Transfer ServiceBigQuery Data Transfer Service のどちらも、取り込みジョブをスケジュールで実行できます。取り込みのタイミング、または送信元と宛先のシステムを詳細に制御するには、Cloud Composer のようなワークフロー管理システムを使用します。手動のアプローチが必要な場合は、Cloud Scheduler と Pub/Sub を使用して Cloud Functions の関数をトリガーします。
コンピューティング インフラストラクチャを管理し、最大 1 TB のデータ転送を行う場合は、cron とともに gsutil コマンドを使用できます。Cloud Composer ではなく、この手動アプローチを使用する場合は、本番環境への転送スクリプトの作成に関するベスト プラクティスに従ってください。

FTP / SFTP サーバーのデータ取り込みの要件を確認する

FTP / SFTP サーバーからデータを取り込む際にコードフリーの環境が必要な場合は、FTP コピー プラグインを使用できます。長期的なワークフロー ソリューションをモダナイズして作成する場合、Cloud Composer はさまざまなソースやシンクからの読み取りと書き込みが可能なフルマネージド サービスです。

Apache Kafka コネクタを使用してデータを取り込む

Pub/Sub、Dataflow、BigQuery のいずれかを使用している場合、いずれかの Apache Kafka コネクタを使用してデータを取り込めます。たとえば、オープンソースの Pub/Sub Kafka コネクタを使用すると、Pub/Sub または Pub/Sub Lite からデータを取り込むことができます。

参考情報

データ ストレージ

以下に挙げるデータ ストレージのベスト プラクティスを実際の環境に適用します。

ニーズに適したデータストアを選択する

使用するストレージ ソリューションのタイプを選択するには、データのダウンストリームの使用状況を確認して把握します。このデータの一般的なユースケースを次に示します。これにより、使用する Google Cloud プロダクトに関する推奨事項が提供されます。

データのユースケース 推奨のプロダクト
ファイルベース Filestore
オブジェクトベース Cloud Storage
低レイテンシ Bigtable
時系列 Bigtable
オンライン キャッシュ Memorystore
トランザクション処理 Cloud SQL
ビジネス インテリジェンス(BI)と分析 BigQuery
バッチ処理 Cloud Storage

Bigtable(受信データが時系列で、低レイテンシのアクセスが必要な場合)

BigQuery(SQL を使用する場合)。

データ構造の要件を確認する

非構造化データ(ドキュメント、テキスト ファイル、音声ファイル、動画ファイル、ログなど)の場合、通常はオブジェクト ベースのストアが最適な選択肢となります。必要に応じて、オブジェクト ストレージからデータを読み込んで処理できます。

XML や JSON などの半構造化データの場合は、ユースケースとデータアクセス パターンを利用して選択肢を確認してください。このようなデータセットを BigQuery に読み込むと、スキーマの自動検出が可能になります。低レイテンシが要求される場合は、JSON データを Bigtable に読み込むことができます。従来の要件がある場合や、アプリケーションがリレーショナル データベースに対応している場合は、リレーション ストアにデータセットを読み込むこともできます。

CSV、Parquet、Avro、ORC などの構造化データは BigQuery で使用できます(SQL を使用する BI 要件と分析要件がある場合)。詳細については、データのバッチ読み込み方法をご覧ください。オープン標準とテクノロジーでデータレイクを作成する場合は、Cloud Storage を使用できます。

データを移行して HDFS のコストを削減する

Hadoop 分散ファイル システム(HDFS)のデータをオンプレミスまたは他のクラウド プロバイダからより低価格なオブジェクト ストレージ システムに移動する方法について説明します。Cloud Storage は代替のデータストアとして多くの企業で選択されています。この選択のメリットとデメリットの詳細については、HDFS と Cloud Storage の比較をご覧ください。

push または pull 方式でデータを移動できます。どちらのメソッドでも hadoop distcp コマンドを使用します。詳しくは、オンプレミスから Google Cloud への HDFS データの移行をご覧ください。

オープンソースの Cloud Storage コネクタを使用して、Hadoop と Spark ジョブが Cloud Storage 内のデータにアクセスできるようにすることもできます。デフォルトでは、コネクタが Dataproc クラスタにインストールされます。これは、他のクラスタに手動でインストールできます。

オブジェクト ストレージを使用して統一性のあるデータレイクを構築する

データレイクは、大量の構造化データ、半構造化データ、非構造化データを保存、処理、保護するための、一元化されたリポジトリです。Cloud Composer と Cloud Data Fusion を使用してデータレイクを構築できます。

最新のデータ プラットフォームを構築するには、Cloud Storage の代わりに BigQuery を中央データソースとして使用します。BigQuery は、ストレージとコンピューティングを分離した最新のデータ ウェアハウスです。BigQuery で構築されたデータレイクを使用すると、Cloud Console で BigQuery から従来の分析を実行できます。また、Apache Spark などの他のフレームワークから保存されているデータにアクセスすることもできます。

参考情報

データを処理して変換する

データを処理して変換するときに、実際の環境に独自のデータ分析に関する以下のベスト プラクティスを適用します。

Google Cloud で使用できるオープンソース ソフトウェアについて確認する

多くの Google Cloud サービスは、オープンソース ソフトウェアを使用して移行をシームレスに行います。Google Cloud は、Open API を使用して、オープンソース フレームワークと互換性があるマネージド ソリューションとサーバーレス ソリューションを提供し、ベンダー ロックインを削減します。

Dataproc は、操作の負荷がほとんどなく、オープンソース ソフトウェアをホストできる Hadoop 対応のマネージド サービスです。Dataproc は、Spark、Hive、Pig、Presto、Zookeeper をサポートしています。また、Hive メタストアをマネージド サービスとして提供し、Hadoop エコシステム内の単一障害点をなくします。

現在、Apache Beam をバッチおよびストリーミング処理エンジンとして使用している場合は、Dataflow に移行できます。Dataflow は、Apache Beam を使用するフルマネージドのサーバーレス サービスです。Dataflow を使用して Beam にジョブを作成しますが、Google Cloud で実行環境を管理します。

データ統合プラットフォームとして CDAP を使用している場合は、Cloud Data Fusion に移行してフルマネージド エクスペリエンスを実現できます。

ETL または ELT のデータ処理要件を特定する

チームの経験と好みは、データ処理の方法に関するシステム設計の決定に役立ちます。Google Cloud では、従来の ETL または最新の ELT データ処理システムのいずれかを使用できます。

データのユースケースに適したフレームワークを使用する

使用するツールとフレームワークは、データのユースケースによって異なります。一部の Google Cloud プロダクトは、以下のすべてのデータ ユースケースを処理するように構築されていますが、他のユースケースでは特定のユースケースしかサポートされない場合があります。

  • バッチデータ処理システムの場合、使い慣れた SQL インターフェースを使用して BigQuery でデータの処理と変換を行います。既存のパイプラインが Apache Hadoop または Spark のオンプレミス、または別のパブリック クラウドで実行されている場合は、Dataproc を使用できます。
    • また、Dataflow では、バッチとストリーミングの両方のユースケースに統一されたプログラミング インターフェースを使用できます。そのため、ETL には Dataflow を、ELT には BigQuery をモダナイズして使用することをおすすめします。
  • ストリーミング データ パイプラインでは、ウィンドウ処理、自動スケーリング、テンプレートを提供する Dataflow などのマネージドでサーバーレスのサービスを使用します。詳細については、Dataflow を使用した本番環境データ パイプラインの構築をご覧ください。

  • 時系列分析やストリーミング動画分析など、リアルタイムのユースケースの場合は、Dataflow を使用します。

実行エンジンを将来にわたって管理する

ベンダーのロックインを最小限に抑え、将来別のプラットフォームを使用できるようにするには、Apache Beam プログラミング モデルおよび Dataflow をマネージド サーバーレス ソリューションとして使用します。Beam プログラミング モデルを使用すると、Dataflow から Apache Flink または Apache Spark への変更など、基盤となる実行エンジンを変更できます。

Dataflow を使用して複数のソースからデータを取り込む

Pub/Sub、Cloud Storage、HDFS、S3、Kafka などの複数のソースからデータを取り込むには、Dataflow を使用します。Dataflow は Dataflow テンプレートをサポートするマネージド サーバーレス サービスで、さまざまなツールからテンプレートを実行できます。

Dataflow Prime は、パイプラインの実行プロセスで使用されるマシンの水平および垂直の自動スケーリングを提供します。また、問題を特定して修正する方法を提案するスマートな診断と最適化案も示します。

機密データの検出、識別、保護を行う

センシティブ データの保護を使用して、構造化データと非構造化データを検査し、変換します。センシティブ データの保護は、Cloud Storage やデータベースなど、Google Cloud のあらゆる場所にあるデータに対応しています。ダウンストリームの処理で機密データを安全に使用し続けるために、機密データの分類、マスキング、トークン化を行うことができます。センシティブ データの保護を使用して、BigQuery データのスキャン大規模なデータセットの PII の匿名化と再識別を行います。

データ変換プロセスをモダナイズする

Dataform を使用してデータ変換をコードとして書き込み、デフォルトでバージョン管理の使用を開始します。また、CI / CD、単体テスト、バージョン管理などのソフトウェア開発のベスト プラクティスを SQL コードにも採用できます。Dataform は、PostgreSQL など、主要なクラウド データ ウェアハウス プロダクトとデータベースをすべてサポートしています。

参考情報

データ分析とウェアハウス

独自のデータ分析とウェアハウスのベスト プラクティスを実際の環境に適用します。

データ ストレージの要件を確認する

データレイクとデータ ウェアハウスは相互に排他的ではありません。データレイクは、非構造化および半構造化データの保存と処理に役立ちます。データ ウェアハウスは分析と BI に最適です。

データの要件を調査して、データの保存場所と、データの処理および分析に最適な Google Cloud プロダクトを判断します。BigQuery などのプロダクトは PB 単位のデータ処理が可能で、要件に合わせて拡張できます。

従来のデータ ウェアハウスから BigQuery に移行する機会を特定する

お客様の環境で現在使用されている従来のデータ ウェアハウスを確認します。複雑さを解消し、可能であれば費用を削減するために、従来のデータ ウェアハウスを BigQuery などの Google Cloud サービスに移行する機会を特定します。詳細とサンプル シナリオについては、BigQuery へのデータ ウェアハウスの移行をご覧ください。

データへの連携アクセスを計画する

データの要件と、他のプロダクトやサービスと連携する方法を確認します。データ連携の要件を特定し、適切なシステム設計を作成します。

たとえば、BigQuery では、Bigtable、Cloud SQL、Cloud Storage、Google ドライブなどの他のソースからデータを読み取ることができる外部テーブルを定義できます。これらの外部ソースは、BigQuery に保存するテーブルと結合できます。

BigQuery Flex Slots を使用してオンデマンドのバースト機能を提供する

実験的分析や探索的分析で多くのコンピューティング リソースが必要になり、追加容量が必要になることがあります。BigQuery では、Flex Slots の形式で追加のコンピューティング容量を取得できます。これらの Flex Slots は、需要の多い時期や重要な分析を完了する必要がある場合に役立ちます。

BigQuery に移行する際のスキーマの違いについて

BigQuery は、スタースキーマとスノーフレーク スキーマの両方をサポートしていますが、デフォルトではネストされたフィールドと繰り返しフィールドを使用します。ネストされたフィールドと繰り返しフィールドは、他のスキーマよりも読みやすく、相関関係がある場合もあります。データがスタースキーマまたはスノーフレーク スキーマで表現されているときに、BigQuery への移行を検討する場合は、システム設計を見直し、プロセスや分析に必要な変更を行ってください。

補足資料

レポートと可視化

レポート作成と可視化に関する以下のベスト プラクティスを実際の環境に適用します。

BigQuery BI Engine を使用してデータを可視化する

BigQuery BI Engine は高速なインメモリ分析サービスです。BI Engine を使用すると、BigQuery に保存されたデータを分析できます。クエリのレスポンス時間は 1 秒未満で、同時実行性にも優れています。BI Engine は、BigQuery API に統合されています。BI Engine の予約済みの容量を使用して、必要に応じてオンデマンド料金または定額料金を管理します。BI Engine は、1 秒未満のレスポンス時間を必要とする他の BI アプリケーションやカスタム ダッシュボード アプリケーションと連携できます。

Looker を使用して BI プロセスをモダナイズする

Looker は、BI、データ アプリケーション、埋め込み分析向けの最新のエンタープライズ プラットフォームです。データから整合性のあるデータモデルを高速かつ正確に作成でき、トランザクション データストアや分析データストア内のデータにアクセスできます。Looker では、複数のデータベースとクラウドでデータを分析することもできます。既存の BI プロセスとツールがある場合は、Looker などの中央のプラットフォームをモダナイズして使用することをおすすめします。

参考情報

ワークフロー管理ツールを使用する

データ分析には、多くのプロセスとサービスが含まれます。データ分析のライフサイクル中に、さまざまなツールと処理パイプラインの間をデータが移動します。エンドツーエンドのデータ パイプラインを管理および維持するには、適切なワークフロー管理ツールを使用します。Cloud Composer は、オープンソースの Apache Airflow プロジェクトに基づくフルマネージドのワークフロー管理ツールです。

Cloud Composer を使用して Dataflow パイプラインを起動し、Dataproc ワークフロー テンプレートを使用できます。Cloud Composer では、データ処理ワークフロー用の CI / CD パイプラインを作成することや、インフラストラクチャ タスクを自動化することが可能です。詳細については、Cloud Composer: 開発のベスト プラクティスをご覧ください。

移行に関するリソース

すでにデータ分析プラットフォームを実行していて、ワークロードの一部またはすべてを Google Cloud に移行する場合は、次の移行リソースでベスト プラクティスとガイダンスを確認してください。

次のステップ

Google Cloud AI と機械学習のシステム設計について、次のようなベスト プラクティスについて学習する。

アーキテクチャ フレームワークの他のカテゴリ(信頼性、オペレーショナル エクセレンス、セキュリティ、プライバシー、コンプライアンスなど)を確認する。