データ ライフサイクル

この記事では、Google Cloud Platform(GCP)サービスを使用し、最初のデータ取得から最終的な可視化まで、データのライフサイクル全体を通じてデータを管理する方法について説明します。この記事は、各サービスの特長と機能についての理解を深め、ワークロードに最適なサービスを情報に基づいて決定できるようになることを目的としています。

データ ライフサイクルには 4 つのステップがあります。

  • 取り込み: 第 1 段階は、デバイスからのストリーミング データや、オンプレミスのバッチデータ、アプリのログ、モバイルアプリのユーザー イベントやユーザー分析などの元データの取り込みです。

  • 保存: 取得したデータを、長期の保存に対応したアクセスしやすい形式で保存する必要があります。

  • 処理、分析: この段階で、データを未加工の形式から実用的な情報へと変換します。

  • データ探索、可視化: 最終段階でその分析結果を変換して、インサイトを導き出しやすく、同僚や仲間と共有しやすい形式にします。

各段階で、GCP はデータを管理するための複数のサービスを提供します。その中から、使用する一連のサービスをデータとワークロードに合わせて選択できます。

GCP サービスのデータ ライフサイクルへのマッピング

取り込み

元データを収集するための方法は、データのサイズ、ソース、レイテンシに応じて複数あります。

  • アプリ: ログファイルやユーザー イベントといったアプリイベントからのデータは、通常、push モデルで収集されます。push モデルではアプリが API を呼び出してデータをストレージに送信します。

  • ストリーミング: 小さな非同期メッセージの連続するストリームでデータが構成されます。

  • バッチ - 大量のデータがいくつかのファイルに保存され、それらのファイルが一括でストレージに転送されます。

次の表は、GCP サービスがアプリ、ストリーミング、バッチのワークロードのどれに当てはまるかを示しています。

GCP サービスのアプリ、ストリーミング、バッチデータへのマッピング

どのデータ転送モデルを選択すればよいかはワークロードによって決まりますが、モデルごとにインフラストラクチャの要件も異なります。

アプリデータの取り込み

アプリとサービスは大量のデータを生成します。アプリ イベントログ、クリックストリーム データ、ソーシャル ネットワーク インタラクション、e コマース トランザクションなどのデータです。このイベント駆動型データを収集し分析することで、ユーザーの傾向が明らかになり、価値あるビジネス インサイトを得ることができます。

GCP にはアプリをホストするために使用できる各種サービスが用意されています。これには、Compute Engine の仮想マシン、App Engine のマネージド プラットフォーム、Google Kubernetes Engine(GKE)のコンテナ管理などがあります。

GCP でアプリをホストすると、組み込みのツールやプロセスにアクセスできるようになり、それらを使って GCP が持つデータ管理サービスの豊かなエコシステムにデータを送信できます。

以下の例を考えてみましょう。

  • ファイルへのデータの書き込み: アプリが Cloud Storage のオブジェクト ストアにバッチ CSV ファイルを出力します。分析データ ウェアハウスである BigQuery のインポート ファンクションは、そこからデータを pull して分析と照会に使用します。

  • データベースへのデータの書き込み: アプリは、GCP が提供するいずれかのデータベースにデータを書き込みます。たとえば Cloud SQL のマネージド MySQL や、Cloud DatastoreCloud Bigtable に備わっている NoSQL データベースなどです。

  • メッセージとしてのデータのストリーミング: アプリは、リアルタイムのメッセージング サービスである Cloud Pub/Sub にデータをストリーミングします。メッセージをサブスクライブする別のアプリは、そのデータをストレージに転送できます。また、不正が検出された場合などに、そのデータを直ちに処理できます。

Stackdriver Logging: ログ一元管理

Logging は、GCP や他のパブリックまたはプライベートなクラウド プラットフォームで実行されているアプリからログデータを収集するログ一元管理サービスです。Logging によって収集されたデータをエクスポートするには、Cloud StorageCloud Pub/SubBigQuery にデータを送信する組み込みツールを使用します。

多くの GCP サービスはログデータを自動的に Logging に記録します。たとえば、App Engine 上で実行されているアプリは、各リクエストとレスポンスの詳細なログを自動的に Logging に記録します。カスタム ロギング メッセージを stdoutstderr に書き込むこともできます。これらは Logging によって自動的に収集され、ログビューアに表示されます。

Logging には fluentd に基づくロギング エージェントが用意されており、Compute Engine でホストされる仮想マシン(VM)インスタンスや GKE が管理するコンテナ クラスタでこのエージェントを実行できます。このエージェントは、一般的なサードパーティ アプリやシステム ソフトウェアから Logging にログデータをストリーミングします。

ストリーミング データの取り込み

ストリーミング データは非同期で送信され、レスポンスを必要とせず、個々のメッセージ サイズは小さくなっています。一般に、ストリーミング データはテレメトリーに使用され、地理的に分散して配置されたデバイスからデータを収集します。ストリーミング データはイベント トリガーの開始、複雑なセッション分析の実行、機械学習タスクの入力として使用できます。

ストリーミング データは一般には以下の 2 つの用途で使用されます。

  • テレメトリー データ: モノのインターネット(IoT)デバイスは、センサーを使って周辺環境のデータを収集するネットワーク接続されたデバイスです。各デバイスは 1 分ごとにデータポイントを 1 つだけ送信しますが、大量のデバイスからのデータを処理しなければならない場合は、すぐにでもビッグデータの戦略とパターンを適用する必要があります。

  • ユーザー イベントと分析: モバイルアプリは、エラーやクラッシュが起きるたびに、ユーザー イベントをログに記録します。また、ユーザーがモバイルアプリを開いたときにも記録することがあります。このアプリがインストールされているすべてのモバイル デバイスから収集して集約されたこのデータは、使用、統計、コード品質について価値ある情報を提供します。

Cloud Pub/Sub: リアルタイム メッセージング

Cloud Pub/Sub はリアルタイム メッセージング サービスであり、アプリ間でメッセージを送受信できます。アプリ間メッセージングの主な用途の 1 つは、ストリーミング イベント データを取り込むことです。受信データ ストリームのシャーディング、レプリケーション、負荷分散、パーティショニングを細かなところまで Cloud Pub/Sub が自動で管理します。

ほとんどのストリーミング データは、世界中に分散するユーザーやシステムによって生成されます。Cloud Pub/Sub は世界中にエンドポイントを持っており、Google のグローバルなフロントエンド ロードバランサを活用して、レイテンシを最小限に抑えつつ、すべての GCP リージョンからのデータ取り込みをサポートします。さらに Cloud Pub/Sub は、必要に応じて迅速かつ自動的にスケーリングを行うため、デベロッパーが事前にシステム リソースのプロビジョニングを行っておく必要はありません。Cloud Pub/Sub のスケーリング方法について詳しくは、Spotify によるケーススタディをご覧ください。

Cloud Pub/Sub がメッセージ ストリームを体系化するときに使用するのがトピックです。Cloud Pub/Sub にデータをストリーミングするアプリは、トピックをターゲットにします。Cloud Pub/Sub は、メッセージを受信すると、一意の ID とタイムスタンプを付加します。

データが取り込まれると、1 つ以上のアプリがトピック サブスクリプションを使用してメッセージを取得します。これは、pull モデルまたは push モデルのいずれかで行えます。push サブスクリプションでは、Cloud Pub/Sub サーバーは、事前構成されたエンドポイントで、サブスクライバ アプリにリクエストを送信します。pull モデルの場合、サブスクリプションはサーバーにメッセージをリクエストし、受信を確認応答します。Cloud Pub/Sub は、少なくともサブスクライバ単位でメッセージ配信を保証します。

Cloud Pub/Sub では、メッセージ配信の順番については保証されません。厳密なメッセージ順序付けをバッファリングで実施できます。その際、通常は Cloud Dataflow が使用されます。

一般に、Cloud Pub/Sub は、ストリーミング データを Cloud Dataflow に移動して、実イベント時間ごとにリアルタイム処理されるようにするために使用します。処理されたデータを、アプリのタイムスタンプ順のクエリをサポートする Cloud DatastoreBigQuery などの永続ストレージ サービスに移動できます。

バルクデータの取り込み

バルクデータは大きなデータセットで構成されており、その取り込みには少数のソースとターゲットとの間で高集約帯域幅が必要です。データは、CSV、JSON、Avro、Parquet などの形式のファイル、またはリレーショナル データベースや NoSQL データベースに保存できます。ソースデータは、オンプレミスや他のクラウド プラットフォームに配置できます。

バルクデータを取り込むために、以下のようなユースケースが考えられます。

  • 科学的ワークロード: Variant Call Format(VCF)テキスト ファイルに保存されている遺伝子に関するデータは、後で Genomics にインポートできるように Cloud Storage にアップロードされます。

  • クラウドへの移行: オンプレミス Oracle データベースに保存されているデータを、Informatica を使ってフルマネージド Cloud SQL データベースに移動します。

  • データのバックアップ: Cloud Storage Transfer Service を使用して、AWS バケットに保存されているデータを Cloud Storage に複製します。

  • レガシーデータのインポート: 10 年分相当のウェブサイトのログデータを、長期トレンド分析のために BigQuery にコピーします。

GCP およびパートナー企業は、大規模なデータセットを GCP に読み込むために使用できる各種ツールを提供しています。

Storage Transfer Service: マネージド ファイル転送

Storage Transfer Service では、Cloud Storage バケットへのデータ転送を管理します。AWS S3 バケット、ウェブアクセス可能な URL、他の Cloud Storage バケットをデータソースとして使用できます。Storage Transfer Service は一括転送向けであり、1 TB を超えるデータ ボリューム用に最適化されています。

Storage Transfer Service は、データのバップアップによく使用されます。他のストレージ プロバイダから Cloud Storage バケットにデータをバックアップできます。または、Cloud Storage バケット間でデータを移動することもできます。たとえばストレージ コストを抑えるために Multi-Regional Storage バケットから Nearline Storage バケットにデータをアーカイブできます。

Storage Transfer Service は、1 回限りの転送や定期的な転送をサポートしています。ファイル作成日、ファイル名フィルタ、データのインポート希望時刻による高度なフィルタも備えています。また、コピー後のソースデータの削除もサポートしています。

Transfer Appliance: 配送可能な大容量ストレージ サーバー

Transfer Appliance は、Google からリースされる大容量ストレージ サーバーです。これをネットワークに接続し、データを読み込んで、アップロード施設に配送します。この施設でデータが Cloud Storage にアップロードされます。Transfer Appliance は複数の種類のサイズで提供されます。また、データの性質によっては、重複排除と圧縮を使用してアプライアンスの実効容量を大幅に増加できます。

Transfer Appliance を使用する状況を判断するには、ネットワーク接続を使用したデータのアップロードにかかる時間を計算します。1 週間以上かかると判断した場合、または転送速度に関係なくデータが 60 TB を超えている場合は、Transfer Appliance を使用してデータを転送する方が信頼性が高く便利だと予想されます。

Transfer Appliance は、取得したデータの重複排除と圧縮を行い、お客様が指定したパスワードとパスフレーズを使用して強力な AES-256 暗号でデータを暗号化します。Cloud Storage からデータを読み取るときには、同じパスワードとパスフレーズを指定します。お客様のデータがその次のユーザーに利用されることがないようにするため、Transfer Appliance の使用後には確実にデータが消去され、イメージが再作成されます。

Cloud Storage gsutil: コマンドライン インターフェース

Cloud Storage には gsutil というコマンドライン ユーティリティが用意されており、これを使用するとファイルベースのデータを既存のファイル システムから Cloud Storage に移動できます。gsutil は Python で作成されているため、Linux、macOS、Windows システムで実行できます。データを Cloud Storage に移動するだけでなく、Cloud Storage バケットの作成と管理、オブジェクトのアクセス権の編集、Cloud Storage からのオブジェクトのコピーにも gsutil を使用できます。バッチデータの取り込みに gsutil を使用する方法については、本番環境の転送用のスクリプト作成をご覧ください。

Cloud Storage Offline Media Import / Export

サードパーティ ソリューションである Offline Media Import / Export を利用すると、データのアップロードを代行するサードパーティのサービス プロバイダに、ハードディスク ドライブ、テープ、USB フラッシュ ドライブなどの物理メディアを送ることにより、Cloud Storage にデータをロードできます。Offline Media Import / Export は、低速な、信頼性が低い、あるいは高コストのインターネット接続しか使用できない場合に役立ちます。

データベース移行ツール

ソースデータがオンプレミスのデータベースまたは別のクラウド プロバイダがホストするデータベースに保存されている場合、GCP に一括でデータを移行するために使用できるサードパーティ アプリがいくつかあります。これらのアプリは一般にソースシステムと同じ環境にあり、1 回限りの転送と定期的な転送の両方を実行できます。TalendInformatica などのアプリには、抽出-変換-読み込み(ETL)機能があり、GCP のサポートも組み込まれています。

GCP には、外部データベースからのテータ移行に適したターゲット データベースがいくつかあります。

  • リレーショナル データベース: リレーショナル データベース管理システム(RDBMS)に保存されているデータを Cloud SQLCloud Spanner に移行できます。

  • データ ウェアハウス: データ ウェアハウスに保存されているデータを BigQuery に移行できます。

  • NoSQL データベース: HBase や Cassandra などの列指向の NoSQL データベースに保存されているデータを Cloud Bigtable に移行できます。JSON 指向の NoSQL データベース(Couchbase、MongoDB など)に保存されているデータは、Cloud Datastore に移行できます。

パートナー ソリューション

多くの GCP パートナーが、データの一括移動に特化した補完ソリューションを提供しています。

  • WANDisco は、オンプレミスのローカルおよびネットワーク ストレージから Cloud Dataproc クラスタへのデータ転送を自動化する Google Active Migrator を提供しています。

  • Tervela は、データ移行と Cloud Storage とのローカル ファイル システム同期を自動化する Cloud FastPath を提供しています。

  • Iron MountainPrime Focus のどちらにも、ハードディスク ドライブ、テープ、USB フラッシュ ドライブなどの物理メディアから Cloud Storage にデータを読み込む機能があります。

データおよび分析のパートナー ソリューションについて詳しくは、データと分析のパートナー エコシステムをご覧ください。

保存

受け取るデータの形とサイズはさまざまで、データ構造もデータの生成元および生成後のダウンストリーム ユースケースによって異なります。データおよび分析ワークロードの場合、取り込まれたデータはさまざまな形式で、いろいろな場所に保存されることがあります。

GCP サービスのさまざまなデータ ストレージへのマッピング

オブジェクト データの保存

ファイルは、データ(特にバルクデータ)を保存するための一般的な形式です。GCP を使用すると、ファイルデータを Cloud Storage にアップロードして、そのデータを他の各種サービスで利用できるようになります。

Cloud Storage: マネージド オブジェクト ストレージ

Cloud Storage は、構造化データおよび非構造化データ向けに耐久性のある高可用性オブジェクト ストレージを提供します。そのようなデータには、ログファイル、データベースのバックアップ ファイルとエクスポート ファイル、画像、その他のバイナリ ファイルなどがあります。Cloud Storage 内では、ファイルはプロジェクト別に別個のバケットにまとめられます。それらのバケットは、カスタム アクセス制御リスト(ACL)または一元化された Identity and Access Management(IAM)のいずれかによる制御をサポートします。

Cloud Storage は分散ストレージ レイヤとして機能します。App EngineGKECompute Engine で、または Logging などの他のサービスを通じて実行されるアプリやサービスから、これにアクセスできます。

データを保存するために、以下のようなユースケースが考えられます。

  • データ バックアップと災害復旧: Cloud Storage は、耐久性が高く、よりセキュアなストレージを、データのバックアップおよびアーカイブ用に提供します。

  • コンテンツ配信: Cloud Storage を利用してコンテンツの保存や配信を行うことができます。たとえば、メディア ファイルの保存や配信がスケーラブルになります。

  • ETL データの保存: Cloud Storage データに Cloud Dataflow でアクセスして、変換や他のシステム(Bigtable、BigQuery など)への読み込みを行うことができます。

  • MapReduce ジョブのデータの保存: Hadoop ジョブと Spark ジョブでは、Cloud Storage から読み込んだデータに Cloud Dataproc を使用してネイティブにアクセスできます。

  • クエリデータの保存: BigQuery ではデータを Cloud Storage からデータセットやテーブルにインポートすることができます。または、データをインポートせずに、既存データに対してまとめてクエリを実行できます。直接アクセスの場合、BigQuery は指定された Cloud Storage バケットからの CSV、JSON、Avro ファイルのインポートをネイティブにサポートします。

  • 機械学習のシーディング: GCP の機械学習 API (Cloud Vision や Cloud Natural Language など)は Cloud Storage 内に直接保存されているデータやファイルにアクセスできます。

  • コールドデータのアーカイブ: Nearline StorageColdline Storage は、低レイテンシで低コストのストレージを提供します。予想されるアクセス頻度がそれぞれ月 1 回未満および年 1 回未満のオブジェクトに最適です。

Cloud Storage は、アプリとサービスに必要な可用性とパフォーマンスに応じた複数のクラスで提供されます。

  • Multi-Regional Storage は最高レベルの可用性を備えています。頻繁なアクセスに備え、高い冗長性と低レイテンシのアクセスを必要とするデータの保存に最適です。ユースケースの例として、ウェブサイト コンテンツの提供、インタラクティブなストレージ ワークロード、モバイルアプリやゲームアプリをサポートするデータなどがあります。

  • Regional Storage は、1 つのリージョン内に高性能なストレージを提供します。Compute Engine インスタンスが使用するデータの保存に最適です。たとえば、大量のデータを使用する処理やビッグデータの処理で使用します。

  • Nearline Storage は、低コストで耐久性に優れたストレージ サービスで、月 1 回程度しかアクセスしないデータの保存に適しています。Nearline Storage は、レスポンス時間が 1 秒未満という高速データアクセスを提供し、データ アーカイブ、オンライン バックアップ、災害復旧に便利です。

  • Coldline Storage は、保存期間が長く、保存コストが非常に安いストレージ サービスで、年に 1 回程度しかアクセスしないデータの保存に適しています。Coldline Storage は、レスポンス時間が 1 秒未満という高速データアクセスを提供し、データ アーカイブ、オンライン バックアップ、障害復旧に適しています。

Cloud Storage for Firebase: モバイルアプリ デベロッパーのためのスケーラブルなストレージ

Cloud Storage for Firebase は、ユーザーベースに合わせてスケーリングできるように設計された、シンプルでコスト効率に優れたオブジェクト ストレージ サービスです。Cloud Storage for Firebase は、画像、音声、動画、およびモバイルアプリとウェブアプリ内のユーザー作成コンテンツなどのアセットを保存したり取得したりするのに最適です。

Cloud Storage 用の Firebase SDK は、ネットワークの品質に関係なくアップロードとダウンロードを行うことができます。接続状態が悪いために中断された場合でも、停止したところから再開されるため、時間と帯域幅を節約できます。Firebase Authentication とすぐに統合できるため、ファイル名、サイズ、コンテンツ タイプ、その他のメタデータに基づいてアクセス権を構成できます。

Cloud Storage for Firebase はファイルを Cloud Storage バケットに保存します。これにより、Firebase SDK を使用しているモバイル クライアントから柔軟にファイルのアップロードとダウンロードを行うことができます。また、GCP を使用して、画像のフィルタリングや動画のコード変換といったサーバー側の処理を行うことができます。

Cloud Storage for Firebase を使用する前に、このドキュメントをご覧ください。Firebase には、iOS、Android、ウェブ、C++、Unity クライアント向けの SDK があります。

データベース データの保存

GCP には各種データベース(RDBMS と NoSQL の両方)が備わっており、これらを使用してリレーショナルおよび非リレーショナルのデータを保存することができます。

Cloud SQL: マネージド MySQL および PostgreSQL エンジン

Cloud SQL は、フルマネージドのクラウドネイティブな RDBMS であり、レプリケーションのサポートが組み込まれている MySQL エンジンと PostgreSQL エンジンの両方を提供します。低レイテンシ、トランザクション、リレーショナル データベースのワークロードに適しています。Cloud SQL は MySQL と PostgreSQL をベースにしているので、接続用の標準 API をサポートしています。Cloud SQL には、バックアップと復元、高可用性、レプリカの読み取りなどの機能が組み込まれています。

Cloud SQL は、MySQL と PostgreSQL の両方で最大 10 TB の RDBMS ワークロードをサポートします。Cloud SQL には App EngineGKECompute Engine で実行されているアプリからアクセス可能です。Cloud SQL は MySQL と PostgreSQL をベースに構築されているので、標準の接続ドライバ、サードパーティのアプリ フレームワーク(Django や Ruby on Rails など)や一般的な移行ツールをサポートします。Cloud SQL 内に保存されるデータは、送信時にも保存時にも暗号化されます。Cloud SQL インスタンスにはアクセス制御サポートが組み込まれており、ネットワーク ファイアウォールを使用してデータベース アクセスを管理します。

Cloud SQL は、以下のような標準的なオンライン トランザクション処理(OLTP)ワークロードに適しています。

  • 金融トランザクション: 金融トランザクションの保存には ACID データベース セマンティクスが必要です。データは複数のテーブルに分散されることが多いため、複雑なトランザクション サポートを必要とします。

  • ユーザー認証情報: パスワードなどのセキュアデータの保存には、複雑なフィールド サポートと適用、およびスキーマ検証が必要です。

  • 顧客の注文: 注文や請求書には通常、在庫変更を取得する際に使用される高度に正規化されたリレーショナル データと複数テーブル トランザクション サポートが組み込まれています。

Cloud SQL は、オブジェクトごとに動的なスキーマを必要とするオンライン分析処理(OLAP)のワークロードやデータに適したストレージ システムではありません。ワークロードに動的スキーマが必要な場合は、Cloud Datastore の使用をご検討ください。OLAP ワークロードには、BigQuery の使用をご検討ください。ワイドカラム型スキーマを必要とするワークロードには、Cloud Bigtable の使用をご検討ください。

ダウンストリーム処理や分析に利用する場合、Cloud SQL 内のデータには複数のプラットフォーム ツールからアクセスできます。Cloud SQL からデータを pull して他のストレージ システムに挿入する ETL ジョブを作成するには、Cloud Dataflow または Cloud Dataproc を使用できます。

Cloud Bigtable: マネージド ワイドカラム型 NoSQL

Cloud Bigtable は高パフォーマンスなマネージド NoSQL データベース サービスで、テラバイト規模からペタバイト規模のワークロード用に設計されています。Cloud Bigtable は、Google 検索、Google アナリティクス、Google マップ、Gmail に使用されている Google の内部 Bigtable データベース インフラストラクチャを基にしています。このサービスは、大規模な NoSQL データ用に整合性のある低レイテンシで高スループットのストレージを提供します。Cloud Bigtable は、リアルタイム アプリによるワークロードおよび大規模な分析ワークロード向けに構築されています。

Cloud Bigtable スキーマは一連の列に関連付けられたシングル インデックス行キーを使用します。通常、スキーマは tall または wide として構成され、クエリは行キーに基づきます。スキーマのスタイルはダウンストリームでの利用方法によって決まるため、パフォーマンスを最大化するには、データの局所性および読み取りと書き込みの分布を考慮することが重要です。tall スキーマは一般に、行あたりの列数が比較的少ない時系列イベント(タイムスタンプによって部分的にキー付けされるデータ)の保存に使用されます。wide スキーマはそれとは逆で、行キーを単純な識別子として使用し、多数の列を持ちます。詳しくは、Cloud Bigtable スキーマ設計のドキュメントをご覧ください。

Cloud Bigtable は、広告技術や IoT データ インフラストラクチャなどの大規模で高スループットな各種ワークロードに適しています。

  • リアルタイム アプリデータ: App Engine フレキシブル環境、GKE、Compute Engine で実行中のアプリから、リアルタイムのワークロード処理のために Cloud Bigtable にアクセスすることができます。

  • ストリーム処理: Cloud Pub/Sub によりデータが取り込まれると、Cloud Dataflow を使用してそのデータを変換し、Cloud Bigtable に読み込むことができます。

  • IoT 時系列データ: センサーが捕捉し、GCP にストリーミングされたデータを、時系列スキーマを使用して Cloud Bigtable に保存することができます。

  • Adtech ワークロード: Cloud Bigtable は、広告の表示回数および Cloud Dataproc と Cloud Dataflow を使用した広告視聴後の処理および分析用のソースを保存、追跡するために使用できます。

  • データ取り込み: Cloud Dataflow または Cloud Dataproc を使用して、Cloud Storage のデータを変換して Cloud Bigtable に読み込むことができます。

  • 分析ワークロード: Cloud Dataflow を使用して、Cloud Bigtable に保存されているデータから複雑な集計を直接実行することができます。また、Cloud Dataproc を使用して、Hadoop または Spark 処理や機械学習タスクを実行できます。

  • Apache HBase の代替: Apache HBase を使って構築されたシステムの一時的な代替として Cloud Bigtable を使用することもできます。Apache HBase は Google が発表した Cloud Bigtable の原論文に基づくオープンソース データベースです。Cloud Bigtable は HBase 1.x API に準拠しているため、多くの既存のビッグデータ システムに統合できます。Apache Cassandra は、この Cloud Bigtable 論文で言及されているデータモデルをベースにしたデータモデルを利用しています。つまり Cloud Bigtable はワイドカラム指向のスキーマや構造を活用するいくつかのワークロードをサポートすることもできます。

Cloud Bigtable は OLTP システムと見なされていますが、複数行トランザクション、SQL クエリや SQL 結合はサポートしていません。これらを使用するには、Cloud SQL または Cloud Datastore の使用をご検討ください。

Cloud Spanner: 水平スケーリング可能なリレーショナル データベース

Cloud Spanner は、ミッション クリティカルな OLTP アプリのためのフルマネージド リレーショナル データベース サービスです。Cloud Spanner は水平スケーリング可能であり、強整合性、高可用性、グローバルなスケーラビリティを実現するように構築されています。これらの特長を兼ね備えていることが、このサービスの独自性です。Cloud Spanner はフルマネージド サービスであるため、ユーザーは自分のインフラストラクチャではなく自分のアプリの設計に集中して取り組むことができます。

Cloud Spanner は、リレーショナル データベースの使いやすさと、NoSQL データベースに備わっているスケーラビリティをお求めのお客様に適しています。リレーショナル データベースと同様に、Cloud Spanner はスキーマ、ACID トランザクション、SQL クエリ(ANSI 2011)などに対応しています。多くの NoSQL データベースと同様に、Cloud Spanner はリージョン内で水平方向にスケーリングしますが、可用性の要件がより厳しいワークロード向けにリージョン間でもスケーリング可能です。Cloud Spanner は自動シャーディングも実行し、数ミリ秒のレイテンシでデータを処理します。Cloud Spanner のセキュリティ機能には、データレイヤ暗号化、監査ログ、IAM 統合などがあります。

Cloud Spanner を使用する前に、Cloud Spanner のドキュメントをご覧ください。

Cloud Spanner の一般的なユースケースは次のとおりです。

  • 金融サービス: 金融サービスのワークロードでは、読み取り / 書き込み操作における強整合性が求められます。Cloud Spanner は、高可用性を犠牲にすることなく、この整合性を提供します。

  • 広告技術: 広告技術業界での重要な検討事項は、レイテンシです。Cloud Spanner は、規模や可用性を損なうことなく、低レイテンシのクエリを実行できるようにします。

  • 小売業とグローバル サプライ チェーン: グローバル規模のニーズを満たすために、サプライ チェーンの専門技術者は、やむを得ず整合性とメンテナンス コストをトレードオフすることがあります。Cloud Spanner に備わっている低レイテンシの自動グローバル同期レプリケーションにより、データは常に整合性があり、可用性が高くなります。

Cloud Firestore: 柔軟でスケーラブルな NoSQL データベース

Cloud Firestore は JSON データを格納するデータベースです。さまざまなプラットフォーム(iOS、Android、JavaScript、IoT デバイス、デスクトップ アプリなど)で、接続されたクライアントとの間で JSON データをリアルタイムで同期できます。クライアントがネットワークに接続していない場合、Cloud Firestore API によりアプリはデータをローカル ディスクに保存できます。接続の再確立後に、クライアントは現在のサーバー状態と同期します。

Cloud Firestore に備わっている柔軟な式ベースのルール言語である Cloud Firestore セキュリティ ルールは、Firebase Authentication と統合されているため、誰がどのデータにアクセスできるかを定義できます。

Cloud Firestore は API を備えた NoSQL データベースであり、応答性を損なうことなく数百万のユーザーに対応するリアルタイム エクスペリエンスを構築できます。このレベルの規模と応答性を実現するには、データを適切に構造化することが重要です。Cloud Firestore を使用する前に、このドキュメントをご覧ください。Cloud Firestore には、iOS、Android、ウェブ、C ++、Unity クライアント用の SDK があります。

Cloud Firestore のユースケースの例をいくつか示します。

  • チャットとソーシャル: 画像、音声、動画などのユーザー生成コンテンツを保存および取得します。

  • モバイルゲーム: さまざまなデバイスとデバイス プラットフォームでゲームの進捗状況と統計情報を追跡します。

エコシステム データベース

GCP が提供するデータベース サービスに加えて、独自のデータベース ソフトウェアを、スケーラビリティの高い永続ストレージを備えた高パフォーマンスの Compute Engine 仮想マシンにデプロイすることができます。EnterpriseDBMicrosoft SQL Server などの従来型の RDBMS が GCP でサポートされています。MongoDBCassandra などの NoSQL データベース システムも高パフォーマンス構成でサポートされています。

GCP Marketplace を使用すると、ビルド済みのイメージ、ストレージ、ネットワーク設定を利用して、多くの種類のデータベースを GCP にデプロイできます。Compute Engine インスタンス、永続ディスク、ネットワーク構成などのデプロイ リソースを直接管理でき、さまざまなワークロードや利用方法に合わせて簡単にカスタマイズできます。

データ ウェアハウスのデータの保存

データ ウェアハウスには、トランザクション処理ではなくクエリと分析を行うための大容量のデータが保存されています。データ ウェアハウス ワークロード用に、GCP には BigQuery が用意されています。

BigQuery: マネージド データ ウェアハウス

取り込んだデータが最終的に BigQuery 内で分析される場合、そのデータを他の記憶媒体を経由せず直接 BigQuery に保存することができます。BigQuery は、ウェブ インターフェース、コマンドライン ツール、REST API 呼び出しを使用したデータの取り込みをサポートします。

データを一括で読み込む場合は、データの形式が CSV、JSON、Avro ファイルである必要があります。これらのファイル形式のデータであれば、BigQuery ウェブ インターフェース、コマンドライン ツール、REST API 呼び出しを使用して BigQuery テーブルに読み込むことができます。

ストリーミング データの場合は、Cloud Pub/Sub と Cloud Dataflow を組み合わせて使用することで、受信ストリームを処理し、処理結果のデータを BigQuery に保存できます。ただし、ワークロードによっては、データを処理せずに直接 BigQuery にストリーミングするのが適切な場合もあります。また、GCP またはオンプレミス インフラストラクチャ上で動作し、スキーマと行が定義されたデータソースから読み取るカスタムアプリを作成することもできます。作成したカスタムアプリは、GCP SDK または直接 REST API 呼び出しを使用して、データを BigQuery テーブルにストリーミングできます。

処理と分析

データからビジネス価値やインサイトを導き出すためには、データを変換し、分析する必要があります。これには、データを直接分析したり、ダウンストリーム分析用に準備したりするための処理フレームワークや、処理結果を分析および理解するためのツールが必要です。

  • 処理: ソースシステムからのデータは、複数のマシンでクレンジング、正規化、処理され、分析システムに保存されます。

  • 分析: 処理されたデータはアドホック クエリと探索を可能にするシステムに保存されます。

  • 理解: データは分析結果に基づいて、自動機械学習モデルのトレーニングとテストに使用されます。

GCP は、大規模なデータを処理し、ビッグデータを分析および照会し、機械学習を介してデータを理解するためのサービスを提供します。

大規模なデータの処理

通常、大規模なデータの処理では、Cloud Storage、Cloud Bigtable、または Cloud SQL などのソースシステムからデータを読み取り、そのデータの複雑な正規化や集計を行う必要があります。多くの場合、データは単一のマシンに収まらないほど大きいため、分散コンピューティング クラスタを管理し、処理を支援するソフトウェア ツールを提供するためにフレームワークが使用されます。

Cloud Dataproc および Cloud Dataflow のデータ処理ワークロードへのマッピング

Cloud Dataproc: マネージド Apache Hadoop と Apache Spark

非常に大規模なデータセットを処理するための機能は、Google が 2004 年に初めて MapReduce の論文で発表してから進化してきました。多くの組織は現在、Hadoop 分散ファイル システム(HDFS)でデータを読み込んで保存し、Hive や Pig のような従来のバッチ指向ツールを使用して定期的な集計レポートまたは変換を実行しています。Hadoop には、Mahout を使用した機械学習、Flume を使用したログの取り込み、R を使用した統計分析などのアクティビティをサポートする大規模なエコシステムがあります。この Hadoop ベースのデータ処理の結果は、ビジネスにとって不可欠です。こうしたプロセスに依存する組織にとって、新たなフレームワークに移行することは重要です。

この数年、Spark は Hadoop MapReduce の代わりとなる手段として人気を得ています。一般的に、Spark のパフォーマンスは、Hadoop MapReduce よりもかなり高速です。Spark は、クラスタ全体でデータセットと計算をメモリ内に分散させることによって、これを達成します。この分散によって、速度が向上するだけでなく、Spark は Spark Streaming を使用したストリーミング データの処理、Spark SQL、シンプルな API を使用した従来のバッチ分析、変換、集計を実行できるようになります。Spark コミュニティには、MLlib などの、機械学習に使用できるいくつかの一般的なライブラリがあり、非常に活発です。

しかし、ますます拡大する大規模なデータセットで Spark または Hadoop のいずれかを実行すると、運用が複雑になり、オーバーヘッドが発生して、固定費が膨らみ続けることになります。定期的にクラスタを必要としない場合でも、永続クラスタのコストを支払うことになります。Cloud Dataproc では、既存の Hadoop または Spark のデプロイをフルマネージド サービスに移行できます。このサービスは、クラスタの作成を自動化し、クラスタの構成と管理を簡素化します。また、モニタリングおよび使用レポートが組み込まれており、使用しないときにはシャットダウンしておくことができます。

新しい Cloud Dataproc クラスタの起動には平均で 90 秒しかかからないため、10 個のノードのクラスタでも、または 1,000 個のノードのクラスタでさえも簡単に作成できます。さらに、Spark または Hadoop のデプロイを管理するための運用とコストのオーバーヘッドを削減し、どちらのフレームワークに対しても使い慣れた操作性と整合性を提供します。Cloud Dataproc では、Spark または Hadoop のクラスタを必要に応じて簡単かつ柔軟にスピンアップしたり、不要になったクラスタを終了したりできます。以下のようなユースケースが考えられます。

  • ログ処理: 最小限の変更を行うだけで、既存の MapReduce を使用して、複数のソースから毎日送られる大量のテキスト ログデータを処理できます。

  • レポート: データをレポートに集約し、BigQuery に保存します。その後、集約データをアプリに push してダッシュボードで活用したり分析したりできます。

  • オンデマンド Spark クラスタ: Spark(Spark SQL、PySpark、Spark シェル)を使用してアドホック クラスタを素早く起動し、blob ストレージに保存されているデータを分析します。

  • 機械学習: クラスタにプリインストールされている Spark の機械学習ライブラリ(MLlib)を使用して、分類アルゴリズムをカスタマイズして実行します。

また、Cloud Dataproc は、ソフトウェアのインストールやクラスタのサイズ変更などの運用アクティビティを簡素化します。Cloud Dataproc を使用すると、データをネイティブに読み取り、Cloud Storage、Cloud Bigtable、BigQuery、クラスタによって提供される付属の HDFS ストレージに結果を書き込むことができます。Cloud Storage を使用した場合、Cloud Dataproc には、データにより高速にアクセスできる、データを移動せずに多数のクラスタがシームレスにデータセットでオペレーションを実行できる、データの複製に注力する必要がなくなる、といった利点があります。外部でデータの保存やチェックポイント処理を行うこの機能により、Cloud Dataproc クラスタを、外部永続性を持つ一時的なリソースとして処理できるようになり、必要に応じて起動、使用、終了することが可能です。

Cloud Dataflow: サーバーレスの、フルマネージド バッチ処理およびストリーム処理

ストリーミング データを分析できるようになったため、組織がビジネスを行う方法や、リアルタイムでレスポンスする方法が変化してきました。ただし、バッチ分析およびストリーミング分析のための異なる処理フレームワークを維持しなければならないため、2 つの異なるパイプラインが必要となり、複雑さは増大します。さらに、Spark や Hadoop を使用して実行するクラスタの使用率とリソースの最適化には時間がかかるため、データのフィルタリング、集約、変換といった基本的な目的からそれてしまいます。

Cloud Dataflow はバッチデータとストリーミング データの両方でビッグデータを単純化するために設計されています。これは、プログラミング モデルと実行モデルを統一することによって行われます。Cloud Dataflow は、クラスタサイズを指定して容量を管理する必要のない、オンデマンド リソースの作成、自動スケーリング、並列化が行われるマネージド サービスです。真の zero-ops サービスとして、ワーカーはジョブのリクエストに基づき、追加または削除されます。Cloud Dataflow は、分割を含め、クラスタ全体でアイドル状態になっているワーカーに対する作業を常にモニタリング、識別、再スケジュールすることによって、分散システムでよく見られるストラグラー ワーカーの問題にも対処します。

以下のようなユースケースが考えられます。

  • MapReduce の後継: MapReduce 以外の処理パラダイムによってオペレーション上の複雑さや不満が生じている、並列的なワークロードを処理します。

  • ユーザー分析: ゲーム内イベント、クリック ストリーム データ、小売売上高といった、大量のユーザー行動データを分析します。

  • データ サイエンス: 大量のデータを処理し、ゲノミクス、天気情報、財務データなどの科学的な発見や予測を行います。

  • ETL: BigQuery などのデータ ウェアハウスにデータを取り込み、変換して、読み込みます。

  • ログ処理: 継続的なイベントログ データ処理を行い、リアルタイム ダッシュボード、アプリ指標、アラートを作成します。

さらに、Apache Spark および Apache Flink での実行をサポートするオープンソース プロジェクト Apache Beam として Dataflow SDK もリリースされました。自動スケーリングとデプロイの容易さから、Cloud Dataflow は Dataflow/Apache Beam ワークフローを実行するための理想的な場所です。

Cloud Dataprep by Trifacta: 可視的なデータ探索、クリーニング、処理

Cloud Dataprep は、分析用にデータの可視的な探索、クリーニング、準備を行うためのサービスです。コードを作成することなく、ブラウザベースの UI から Cloud Dataprep を使用できます。Cloud Dataprep は、需要に基づいて、変換を実行するために必要なリソースを自動的にデプロイおよび管理します。

Cloud Dataprep では、CSV、JSON、リレーショナル テーブル形式で保存された任意のサイズのデータを変換できます。Cloud Dataprep は Cloud Dataflow を使用して自動的にスケーリングし、テラバイト規模のデータセットを処理できます。Cloud Dataprep は GCP と完全に統合されているため、データがどこに保存されていても(Cloud Storage、BigQuery、デスクトップなど)、データを処理できます。データの処理が完了したら、さらに分析するためにクリーンデータを BigQuery に直接エクスポートできます。Cloud Identity and Access Management でユーザー アクセスとデータ セキュリティを管理できます。

Cloud Dataprep の一般的なユースケースを次に示します。

  • 機械学習: ML モデルの微調整のためにトレーニング データをクリーニングできます。
  • 分析: BigQuery などのデータ ウェアハウス ツールに取り込むために、元データを変換できます。

データの分析と照会

取り込み、保存、処理されたデータは、アクセスと照会をしやすい形式に変換する必要があります。

BigQuery: マネージド データ ウェアハウス

BigQuery は、アドホック SQL クエリと複雑なスキーマをサポートする、フルマネージド データ ウェアハウスです。BigQuery を使用して、データを分析、理解、整理できます。従来のデータ ウェアハウスを使用して、標準的な SQL クエリまたはビジネス インテリジェンスおよび可視化ツールを実行することに慣れている場合は、BigQuery の機能と使い慣れたインターフェースを気に入るでしょう。

BigQuery は、1 TB/秒のスキャン速度を実現できる、スケーラビリティが高く、高分散型かつ低コストの分析 OLAP データ ウェアハウスです。これはフルマネージド サービスであり、コンピューティング ノードは、システムに入力されたクエリごとにスピンアップされます。

BigQuery の使用を開始するには、プロジェクト内でデータセットを作成し、データをテーブルに読み込んで、クエリを実行します。データを読み込むプロセスは、Cloud Pub/Sub や Cloud Dataflow からのストリーミング取り込みを使用したり、Cloud Storage からデータを読み込んだり、Cloud Dataflow または Cloud Dataproc 上で実行される処理中のジョブからの出力を使用したりすることによって簡素化できます。BigQuery は、CSV、Avro、JSON データ形式をインポートでき、JSON 形式のネストされた項目と繰り返し項目をサポートしています。

BigQuery 内のすべてのデータは、暗号化されたチャネルを介してアクセスされ、保存時に暗号化されます。BigQuery は、SOC、PCI、ISO 27001、HIPAA を含む、Google のコンプライアンス プログラムの対象であり、機密情報の処理および照会に使用できます。データへのアクセスは、ACL によって制御されます。

BigQuery は、クエリとストレージという 2 つの独立したディメンションに沿って課金料金を計算します。BigQuery 内にデータを保存することは、Cloud Storage にデータを保存することとコスト面でほぼ同じです。つまり、バケットと BigQuery のどちらにログデータを保持するかを選択する必要はありません。BigQuery に保存できるデータ量の上限はありません。90 日間にわたってテーブルが編集されていない場合、そのテーブルのストレージ料金は 50% 値引きされます。

BigQuery の一般的な利用方法は、サーバーや、IoT デバイスなどの高速で信号を生成するシステムからログデータをストリーミングしたり、定期的に一括読み込みしたりすることです。ネイティブな統合は、いくつかの Google サービスで利用可能です。たとえば、BigQuery にロギングデータを直接配信するように Logging を構成できます。

BigQuery のデータにクエリを行う場合、オンデマンドと定額の 2 種類の料金モデルがあります。オンデマンドの場合、処理したテラバイトに応じてクエリ料金が請求されます。定額の場合、BigQuery はわかりやすいコストモデルで一定のクエリ処理能力を提供します。

BigQuery はフルマネージド サービスであるため、インフラストラクチャのメンテナンス期間やデータ バキュームといったタスクを自動化します。クエリの設計を改善するには、そのクエリのクエリプランの説明を調べます。データは、大規模な集計およびデータ処理用に最適化された、カラム型形式で保存されます。また、BigQuery には、データの時系列パーティショニングのサポートが組み込まれています。設計の観点からみると、これは、タイムスタンプを使用してから、特定のデータ パーティションでターゲット クエリを使用するように読み込みアクティビティを設計できるということです。BigQuery クエリの課金は、スキャンされるデータの量に基づいているため、データを適切にパーティション化することにより、クエリの効率を大幅に向上させ、コストを削減できます。

BigQuery でのクエリの実行は、SQL 2011 との互換性を持ち、ネストされたデータと繰り返しデータのクエリをサポートする拡張機能を含む、標準 SQL を使用して実行できます。BigQuery 内でネイティブに使用できる組み込み関数と演算子のセットが多数用意されており、ユーザー定義関数(UDF)もサポートされます。

さまざまな方法で BigQuery を活用できます。

  • ユーザー分析: 大量のユーザー生成アクティビティ(アドテック、クリックストリーム、ゲーム テレメトリー)を取り込み、ユーザーの行動や特性を判別します。

  • デバイスと運用の指標: IT システム、IoT デバイスなどからストリーミング情報を収集し、データを分析して傾向や変動を把握します。

  • ビジネス インテリジェンス: ビジネス指標をデータ ウェアハウスとして保存し、BI ツールまたは Tableau、QlikView、Looker などのパートナー オファリングを促進します。

BigQuery の使用法に関するチュートリアルやサンプルを、BigQuery サイトから入手できます。

機械学習を使用したデータの理解

機械学習は、データ ライフサイクルの分析フェーズの重要な要素となっています。機械学習を使用して、処理結果を拡張し、データ収集の最適化を提案し、データセット内の結果を予測できます。

以下のようなユースケースが考えられます。

  • 商品の提案: 過去の購入状況やサイト ナビゲーションに基づいて、お客様に商品を提案するモデルを構築できます。

  • 予測: 機械学習を使用して、金融市場のような複雑なシステムのパフォーマンスを予測します。

  • 自動アシスタント: ユーザーからの質問を理解して回答する自動アシスタントを構築します。

  • 感情分析: 製品レビューやニュース記事に関するユーザー コメントの根底にある感情を判別します。

GCP 内で機械学習を活用するためのオプションがいくつか用意されています。

  • タスク固有の機械学習 API: GCP は、視覚、音声、自然言語、テキスト翻訳用の事前学習モデルを備えた、ターンキー式の、マネージド機械学習サービスを提供します。これらの API は、Google フォト、Google モバイルアプリ、Google 翻訳、Inbox スマート リプライなどのアプリで実行されているものと同じ技術を使用して構築されています。

  • カスタム機械学習: Cloud Machine Learning Engine は、大規模なカスタムモデルを実行するホスト型マネージド サービスです。また、Cloud Dataproc は、Mahout または Spark MLlib で構築された機械学習モデルを実行することもできます。

Cloud Vision API

Cloud Vision API を使用すると、事前学習ニューラル ネットワークを使用して画像の内容を分析し、理解できます。Cloud Vision API により、画像の分類、個々のオブジェクトや顔の検出、印刷された言葉の認識が可能になります。また、Cloud Vision API を使用して不適切なコンテンツを検出したり、人々の表情に表れる感情属性を分析したりできます。

Cloud Vision API には REST エンドポイントを介してアクセスできます。サービスに直接画像を送信するか、Cloud Storage にアップロードして、画像へのリンクをリクエストに含めることができます。リクエストには単一の画像を含めることができます。または、複数の画像にアノテーションを付けて単一のバッチに含めることができます。リクエスト内で機能アノテーションを選択すると、そこに含まれる各画像を検出できます。機能検出には、ラベル、テキスト、顔、ランドマーク、ロゴ、セーフサーチ、画像プロパティ(ドミナント カラーなど)などがあります。レスポンスには、元のリクエストで指定された機能ごとに選択された各機能タイプ アノテーションに関するメタデータが含められます。リクエストとレスポンスの詳細については、Cloud Vision API ドキュメントを参照してください。

Vision は、App Engine、GKE、Compute Engine、Android や iOS などのモバイル プラットフォームで実行されているカスタムアプリに簡単に統合できます。また、Cloud Dataflow、Cloud Dataproc、Cloud Datalab などの GCP サービスからアクセスすることもできます。

Cloud Speech-to-Text

Cloud Speech-to-Text は、音声を分析してテキストに変換する機能をサポートしています。この API は 80 以上の言語とその派生系を認識し、常に進化し、改善され続ける深層学習ニューラル ネットワーク アルゴリズムを採用しています。

Cloud Speech-to-Text はさまざまなタイプのワークロードに使用できます。

  • リアルタイムの音声認識: Cloud Speech-to-Text は、ストリーミング音声入力を受け取り、認識結果が生成されるとすぐに、それらの結果を部分的に返します。この機能は、リアルタイムの音声入力の統合や、アプリ内で音声によるコマンド コントロールを有効にする際に役立ちます。Cloud Speech-to-Text は、App Engine、GKE、Compute Engine、Android や iOS などのモバイル プラットフォームで実行されるカスタムアプリ向けのストリーミング音声分析用に、ハイパフォーマンスなオープンソースの汎用 RPC フレームワークである gRPC をサポートしています。

  • バッチ分析: 大量の音声ファイルを処理するには、REST エンドポイントおよび gRPC を使用して Cloud Speech-to-Text を呼び出します。同期と非同期の両方の音声認識機能がサポートされています。REST API には、Cloud Dataflow、Cloud Dataproc、Cloud Datalab などの GCP サービスからアクセスすることもできます。

Natural Language

Natural Language は、テキストの構造や意味を分析して表示する機能を提供します。この API を使用して、人、場所、イベント、入力テキストの感情などに関する情報を抽出することができます。分析結果を使用して、不適切なコンテンツをフィルタリングしたり、トピック別にコンテンツを分類したり、入力テキストから抽出されたエンティティに基づいて関係を構築したりできます。

Natural Language を Cloud Vision API の OCR 機能や Cloud Speech-to-Text 音声認識機能と組み合わせて、強力なアプリやサービスを作成することができます。

Natural Language は REST エンドポイントを介して使用できます。サービスにテキストを直接送信したり、Cloud Storage およびリクエスト内のテキストへのリンクにテキスト ファイルをアップロードできます。App Engine、GKE、Compute Engine、Android や iOS などのモバイル プラットフォームで実行されているカスタムアプリに簡単に統合できます。また、Cloud Dataflow、Cloud Dataproc、Cloud Datalab などの GCP サービスからアクセスすることもできます。

Cloud Translation

Translation を使用して、90 以上の異なる言語を翻訳できます。入力言語が不明な場合、Translation が高精度で自動的に言語を検出します。

Translation は、ウェブおよびモバイルアプリ向けのリアルタイム翻訳を提供し、分析ワークロードのためのバッチ リクエストをサポートします。

Translation は REST エンドポイントを介して使用できます。この API は、App Engine、GKE、Compute Engine、Android や iOS などのモバイル プラットフォームで実行されるカスタムアプリに統合できます。さらに、Cloud Dataflow、Cloud Dataproc、Cloud Datalab などの GCP サービスからアクセスすることもできます。

Cloud Video Intelligence: 動画の検索と検出

従来、動画コンテンツは不透明で、分析には適していませんでした。しかし、使いやすい REST API である Video Intelligence により、動画からメタデータを検索、検出、抽出できるようになりました。Video Intelligence は、「犬」、「花」、「車」などのエンティティ(名詞)を動画コンテンツから検出できます。また、動画コンテンツ内のシーンでエンティティを見つけ出すこともできます。

ユーザーは、フレームレベルおよび動画レベルのメタデータで動画にアノテーションを付けることができます(このサービスは、最大粒度として 1 フレーム/秒でデータを抽出できます)。この API は、MOV、MPEG4、MP4、AVI などの一般的な動画形式に対応しています。動画にアノテーションを追加するリクエストは単純です。動画の場所と、実行するアノテーションのタイプを指定した JSON リクエスト ファイルを作成して、リクエストを API エンドポイントに送信します。

使用する前に、Video Intelligence クイックスタートをご覧ください。

Video Intelligence の一般的なユースケースを次に示します。

  • 動画からの情報の取得: 機械学習を使用したりコンピュータ ビジョン アルゴリズムを実装したりせずに、動画から情報を取得します。

  • 動画カタログ検索: 動画のカタログ全体を検索して、関心のあるエンティティが存在するかどうかとそのタイムスタンプを確認します。

Cloud Machine Learning Engine: マネージド機械学習プラットフォーム

Cloud ML Engine は、カスタムの機械学習モデルを大規模に実行するために使用できるマネージド プラットフォームです。機械学習インテリジェンス用のオープンソース フレームワークである TensorFlow フレームワークを使用してモデルを作成してから、Cloud Machine Learning を使用して前処理、トレーニング、予測を管理します。

Cloud ML Engine は、データの前処理を行う Cloud Dataflow と統合されており、Cloud Storage と BigQuery の両方に保存されたデータにアクセスできます。また、Cloud Load Balancing でも動作し、大規模なオンライン予測を提供します。

Cloud Datalab と Jupyter ノートブックを使用して GCP 内で TensorFlow モデルを完全に開発、テストしてから、Cloud Machine Learning を使用して大規模なトレーニングと予測ワークロードを実行できます。

Cloud ML Engine 用に構築されたモデルは完全に移植可能です。TensorFlow フレームワークを活用することにより、モデルをローカルに構築しテストしてから、複数のマシンにわたってそれらをデプロイし、分散型のトレーニングと予測を行うことができます。最後に、トレーニングしたモデルを Cloud ML Engine にアップロードし、それらを分散した複数の仮想マシン インスタンスをとおして実行できます。

Cloud ML Engine のワークフローは次のフェーズで構成されています。

  • 前処理: Cloud Machine Learning は、入力データセットの特徴をサポートされる形式に変換します。また、より効率的に学習できるようにそのデータを正規化および変換することもできます。前処理の間に、トレーニング、評価、テストデータが Cloud Storage に保存されます。また、追加の前処理が必要な場合は、このフェーズ中に Cloud Dataflow を使用してデータにアクセスできます。

  • グラフ作成: Cloud ML Engine は、提供された TensorFlow モデルを、トレーニング、評価、および予測のための操作を使用して Cloud ML Engine モデルに変換します。

  • トレーニング: Cloud ML Engine は、送信されたパラメータに従ってモデルを継続的に繰り返し評価します。

  • 予測: Cloud ML Engine はモデルを使用して計算を実行します。予測は、オンライン予測サービスとして、バッチまたはオンデマンドで計算できます。バッチ予測は、大規模なデータセットに対して非同期的に実行されるように設計されており、Cloud Dataflow などのサービスを使って分析をオーケストレートします。オンデマンド予測は、多くの場合、App Engine、GKE、Compute Engine で実行されているカスタムアプリで使用されます。

汎用の機械学習

Google が構築した機械学習プラットフォームと API に加えて、他の大規模な機械学習ツールを GCP にデプロイできます。Hadoop および Spark エコシステム内の 2 つのプロジェクト MahoutMLlib は、さまざまな汎用機械学習アルゴリズムを提供します。どちらのパッケージも、クラスタリング、分類、協調フィルタリングなどの機械学習アルゴリズムを提供しています。

Cloud Dataproc を使用して、マネージド Hadoop および Spark クラスタをデプロイし、追加のソフトウェアを使用してこれらのクラスタをブートストラップすることができます。つまり、Mahout または MLlib で構築された機械学習ワークロードを GCP で実行でき、通常の VM やプリエンプティブ VM を使用してクラスタをスケールできます。

データ探索と可視化

データ ライフサイクルの最終段階は、処理および分析の結果をより深く理解するために詳細にデータ探索および可視化することです。

データ探索中に得られたインサイトを使用して、データ取り込みの速度または量の向上、分析を高速化するための別の記憶媒体の使用、処理パイプラインの機能拡張を行うことができます。これらのデータセットを十分に探索し、理解するには、多くの場合、確率や統計分析に習熟し、ビジネス価値を理解できるデータ サイエンティストとビジネス アナリストが必要です。

データ サイエンスの結果の探索

データ サイエンスは、元データアセットから価値を引き出すプロセスです。これを行うために、データ サイエンティストは、一般公開および非公開の異種データセットを組み合わせて、さまざまな集計や分析技術を実行します。データ ウェアハウジングとは異なり、分析の種類やデータの構造は大きく異なり、事前に決められていません。技術には、クラスタリング、ベイズ、最尤、回帰といった統計手法に加え、ディシジョン ツリーやニューラル ネットワークといった機械学習が含まれます。

Cloud Datalab: インタラクティブなデータ インサイト

Cloud Datalab は、インタラクティブなウェブベースのツールで、データの探索、分析、可視化に使用できます。これは、以前は IPython と呼ばれていた Jupyter ノートブック上に構築されています。Cloud Datalab を使用すると、ワンクリックでインタラクティブなウェブベースのノートブックを起動できます。ユーザーはここで Python プログラムを作成して実行し、データを処理および可視化することができます。ノートブックではその状態を維持し、データ サイエンティストの間で共有したり、GitHub や Bitbucket、Dropbox のようなサイト上で公開したりすることができます。

Cloud Datalab には、pandasnumpyscikit-learn といった多くの一般的なデータ サイエンス ツールキットや、matplotlib といった一般的な可視化パッケージが最初から組み込まれています。また、Cloud Datalab は、Tensorflow および Cloud Dataflow もサポートしています。これらのライブラリとクラウド サービスを使用して、データ サイエンティストは、データの読み込みやクレンジング、モデルの構築や検証を行った後に、matplotlib を使用して結果を可視化することができます。これは、単一マシンに収まるデータと、クラスタに保存する必要があるデータの両方に対して機能します。追加の Python モジュールを読み込むには、!pip install コマンドを使用します。

データ サイエンスのエコシステム

パフォーマンスの高い Compute Engine インスタンスを使用して、さまざまなタイプのデータ サイエンス ツールをデプロイし、それらを使用して GCP 上で大規模な分析を実行することができます。

R プログラミング言語は、統計学者に広く使用されています。R を使用してデータ探索を行うには、RStudio Server または Microsoft Machine Learning Server を Compute Engine インスタンスにデプロイします。RStudio Server は、インタラクティブなランタイム環境を提供し、データの処理と操作、洗練されたモデルの構築、結果の可視化を実行します。Microsoft Machine Learning Server は、分析ワークロードを実行するために R デスクトップ クライアントを補完する、大規模かつハイパフォーマンスな製品です。

Cloud Datalab は Jupyter に基づいており、現在は Python をサポートしています。R、Julia、Scala、Java などの他の言語でデータ探索を行うには、オープンソースの Jupyter または JupyterHub を Compute Engine インスタンスにデプロイできます。

Apache Zeppelin は、ノートブック主導型の、広く使用されているウェブベースのデータ サイエンス ツールです。Zeppelin は、Jupyter と同じように、Spark、Hive、R、Python などの追加の言語やデータ処理バックエンド システムをサポートしています。

Jupyter と Zeppelin はどちらも、事前作成された Cloud Dataproc の初期化アクションを使用してデプロイすることができ、一般的な Hadoop エコシステムと Spark エコシステム ソフトウェア パッケージを素早くブートストラップします。

ビジネス インテリジェンスの結果の可視化

分析フェーズでは、データ処理の結果をさまざまな相手に説明するために、複雑なデータの可視化、ダッシュボード、レポートを生成すると便利です。これを簡単に行うために、GCP にはいくつかのレポートとダッシュボード ツールが統合されています。

Google データポータルでは、ドラッグ&ドロップでレポートを作成できます。これを使用して、データをレポートやダッシュボードの形で可視化し、他の人と共有できます。レポート内のチャートやグラフはライブデータに基づき、共有および更新できます。レポートには、可視化のためのディメンションを共同編集者が調整できる、インタラクティブなコントロールを含めることができます。

データポータルを使用して、既存のデータファイル、Google スプレッドシート、Cloud SQL、BigQuery からレポートやダッシュボードを作成することができます。データポータルを BigQuery と組み合わせることで、BigQuery のコンピューティングとストレージ容量を十分に活用できます。手動でデータポータルにデータをインポートしたり、カスタム統合を作成したりする必要はありません。

スプレッドシートでデータを可視化する場合、BigQuery と直接統合できる Google スプレッドシートを使用できます。Google Apps Script を使用して、BigQuery のクエリとデータを Google スプレッドシートの内部に直接埋め込むことができます。BigQuery のクエリ結果を CSV ファイルにエクスポートして、それを Google スプレッドシートまたは他のスプレッドシートで開くこともできます。これは、共有や分析用により小さなデータセットを作成する場合に便利です。また、それとは逆に、BigQuery を使用して Google スプレッドシートに保存された分散データセットや、Google ドライブ内に保存されたファイル全体でクエリを実行することもできます。

BigQuery は、SaaS からデスクトップ アプリに至るまで、さまざまなサードパーティのビジネス インテリジェンス ツールおよび統合もサポートしています。詳細については、BigQuery Partners のドキュメントをご覧ください。

オーケストレーション

データ ライフサイクルのすべての要素を、接続されたひとまとまりのオペレーションに統合するには、ある種のオーケストレーションが必要です。通常、オーケストレーション レイヤは、タスクの開始、タスクの停止、ファイルのコピーを調整し、データ処理ジョブをモニタリングするためのダッシュボードの提供を調整する場合に使用されます。たとえば、ワークフローには、Cloud Storage へのファイルのコピー、Cloud Dataproc の処理ジョブの開始、処理結果が BigQuery に保存された場合の通知の送信などがあります。

オーケストレーション ワークフローは、処理タスクに応じて、単純なものから複雑なものまでさまざまです。多くの場合、集中型スケジューリング メカニズムを使用して自動的にワークフローを実行します。LuigiAirflow など、GCP をサポートするいくつかのオープンソースのオーケストレーション ツールがあります。カスタム オーケストレーション アプリでは、組み込みスケジュール タスク機能を使用してワークフローを作成および実行する App Engine アプリを作成できます。

次のステップ

GCP でデータを管理する方法の詳細については、以下の参照アーキテクチャと使用例を参照してください。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...