ソロソロ来るゾ! Google Cloud Platform!

第6回(最終回) データ解析基盤のBigQuery

この記事を読むのに必要な時間:およそ 2 分

BigQuery

BigQueryはビッグデータ解析SaaSです。立ち位置としてはAWSで言うところのRedshiftに相当するようなサービスですが,趣はずいぶん異なります。Redshiftは事前にデータ容量などを計画し適切なプランを選択することになりますが,BigQueryはそのような峻別は不要で,細かいことは気にせずとにかく使いはじめることができます。

筆者の周囲ではGCPの中で一番最初に浸透して行ったサービスがBigQueryです。皆の課題を解決する魅力と力の溢れているサービスだからでしょう。BigQueryはDevelopers ConsoleのBig Dataの中にあります。

図1 BigQueryはDevelopers ConsoleのBig Dataの中にある

図1 BigQueryはDevelopers ConsoleのBig Dataの中にある

BigQueryの特徴

BigQueryの技術的な特徴としてはカラム型DBMSです。Googleの持つ分散技術を背景に,データを超分散配置し並行操作することで大量のデータを扱うクエリでの短時間応答を実現しています。

提供形態はSaaSで,よほど大量のデータをセミリアルタイムで取り扱いたいケースでない限り,事前のスケールに対する配慮は不要です。詳しくは後述の制限のあたりを確認してください。

BigQueryではデータを取り扱うためにクエリを使います。クエリはSQLライクな文法なので,SQLが書けるのであれば学習コストはとても低いです。

検証してみたいけれどデータがない,という場合も大丈夫! サンプルデータがあらかじめ用意されているのでいろいろ試せます。

GitHubのリポジトリデータやWikipediaのリビジョンヒストリなどが用意されています。

図2 GitHubのリポジトリデータやWikipediaのリビジョンヒストリなどが用意されている

図2 GitHubのリポジトリデータやWikipediaのリビジョンヒストリなどが用意されている

今回は313,797,035行(35.7GB)のデータがあるwikipediaテーブルを使って動作を試してみます。

試しにcontributor_usernameの先頭3文字の登録数TOP100を調査してみます。この場合は以下のクエリを実行します。

SELECT username_prefix, COUNT(*) AS cnt FROM (
  SELECT LEFT(contributor_username, 3) AS username_prefix
  FROM [publicdata:samples.wikipedia]
  WHERE contributor_username IS NOT NULL
) GROUP BY username_prefix ORDER BY cnt DESC LIMIT 100;

すると313,797,035行(35.7GB)の中から2.49GBのデータを走査し結果が表示されます。この間わずか3.1秒です。素晴らしいですね。

図3 35.7GBの中から2.49GBのデータを走査し結果,この間わずか3.1秒

図3 35.7GBの中から2.49GBのデータを走査し結果,この間わずか3.1秒

活用例

バッチ処理でガッツリとデータ投入して解析する流れで使うこともできますが,Streaming Insertsでデータを随時投入し,ほぼリアルタイムのデータ解析する利用方法が盛んです。

Streaming Insertsの実装方法はfluentdが多いようです。ログの吸い上げにfluentdを使いfluent-plugin-bigqueryプラグインでBigQueryにデータ投入するのが定番です。

サーバからほぼリアルタイムに収集したログを毎分集計し,ほぼリアルタイムに状況を把握するという利用方法も可能です。

なおGoogle Analytics Premiumでは生データをBigQueryに溜めて自分で好きなように解析できるようです。

著者プロフィール

馬場俊彰(ばばとしあき)

株式会社ハートビーツ 技術統括責任者。

電気通信大学の学生時代に運用管理から業界入り。MSPベンチャーの立ち上げを手伝った後に,中堅SIerにて大手カード会社向けJavaプログラマーを経て現職。現在インフラエンジニアとして活動中。インフラエンジニア勉強会hbstudy主催。最近の興味は写真とPythonプログラミングとクラウドの活用。大好物はカレー。静岡県の清水出身。

URLhttp://heartbeats.jp/
Twitter@netmarkjp

コメント

コメントの記入