悩めるWEB担当者様のための最新ノウハウをお届け

安く、簡単にビッグデータを解析できちゃう!?Googleが提供するビッククエリ とは

7D6C4499-59C8-4EEB-81A5-ADEE076463C0

皆さんは、ビッククエリというシステムをご存知ですか?

ビッククエリとは、Google Cloud Platformが提供するビッグデータ解析サービスです。
「ビッグデータ解析サービス/ソフトウェア」はたくさん存在しますが、BigQueryは数TB(テラバイト)あるいはPB(ペタバイト)に及ぶデータセットに対し、SQL(SQLとはデータベース言語であり、データベースを管理するソフトウェアを操作・制御することが目的です)に似たクエリ(クエリとは、データベースからデータを抽出したり操作したりといった処理を行うための命令のことです)を実行し、数秒あるいは数十秒程度で結果を返すというサービスです。

今回、ビッククエリというサービス が気になる人のために、概要、簡単な使い方を詳しく説明していきます。

ビッククエリ の概要

ビッククエリ とは?

そもそもビッククエリはグーグル社内で使われていたDremelと呼ばれる社内解析ツールをサービスとして公開したものです。Dremelは2010年に論文が公開され、クローズドにリリースされているサービスです。
大規模データに対してアドホックなクエリを実行するためのサービスであり、Google社内では非エンジニアも使用しています。
Dremelは、SQL さえ覚えれば大量のデータを使って集計作業や解析作業を行うことが可能です。
ビッククエリ はそんなDremelをGoogle社員以外でも誰もが使えるようにしたサービスです。大量のデータを解析することができる出来るのは、データ処理が高速であるからです。

では、なぜビッククエリはデータ処理が高速なのでしょうか?

高速処理の理由

ビッククエリのデータ処理が高速な理由は、何千という数のサーバー群でクエリを並列に処理することによって全体の処理効率向上を図っているからです。そして、ビッククエリには2つの仕組みがあることで、この並列処理を実現させています。2つの仕組みとは、カラム型データストアとツリーアーキテクチャです。

それぞれ簡単に説明していきましょう!

カラム型データストア

一般的なRDMBMS(Relational Database Management System)では通常行単位にデータを保持します。RDMBMSとは、一件のデータを複数の属性の値の組みとして表現し、組みを列挙する事でデータを格納していく方式であるリレーショナルデータベースを管理するための総称です。これに対して、ビッククエリは列ごとにまとめて保存を行います。それによりビッククエリはトラフィックの最小化と高い圧縮率を可能にし、このデータ保存形式がクエリ実行時の高速データ処理を実現しています。簡単にいうと、カラム型データベースは列を抜き出して操作する集計処理が得意ということです。例えば、IBMが買収したNetezzaなどがカラム型データベースの機能を備えてます。

ツリーアーキテクチャ

ビッククエリはツリーアーキテクチャによって分散処理(分散処理とは1つの処理を分散して行う方式)を行っています。ツリーアーキテクチャとは、クライアントからクエリを受け取るルートサーバから、実際にクエリ処理を実行する多数のリーフサーバーに対して、クエリがツリー構造で広がっていくものです。簡単に言うとツリー式で分散処理する構造になっています。これにより、大規模分散処理を実現しています。

以上2つの仕組みが、ビッククエリのデータ処理を高速にしている理由です。

では、ビッククエリを利用するには、どれくらいの金額が必要なのでしょうか?

ビッククエリ の料金

ビッククエリを使用するにあたって、やはり気になるのが料金ですよね。
追加料金がかかるサービスは合計8つあります。表にまとめてみましたのでご覧ください。

サービス名 料金
アクティブストレージ 毎月10GBまで無料で、以降$0.02/GBかかります。
長期保存 毎月10GBまで無料で、以降$0.01/GBかかります。
BigQuery Storage API $1.10/TB
ストーリミング挿入 挿入に成功した行が対象課金となり、最小サイズ1KBで各行が計算されます。料金が$0.01/200MBかかります。
クエリ(オンデマンド) 毎月1TBまで無料で、以降$5.00/TB
クエリ(Flex Slots) 追加スロットは500スロット単位で購入でき$15,000/500slots
クエリ(月定額) 追加スロットは500スロット単位で購入でき$10,000/500slots
クエリ(年定額) 追加スロットは500スロット単位で購入でき$8,500/500slots

アクティブストレージとは、クラウドストレージサービスへのファイルのアップロードとそれらのファイルをActive Recordに添付することを容易にします。また、BigQuery Storage APIは大量のデータを高速で取得、処理できる内容となっています。

他社(Amazon Redshiftなど)のサービスとの違い

実は、ビッククエリ以外にもいくつか似たようなサービスが存在します。
代表的なものは、以下のものです。

  • Amazon Redshift
  • Azure EventHubs
  • Amazon Kinesis

Amazon Redshiftとは、AWSが提供するデータウェアハウスサービスです。データウェアサービス(DWH)というのは、様々なデータ源からデータを収集・統合・蓄積し、分析の為保管しておくサービスです。このAmazon Redshiftは比較的BigQueryに近い領域です。BigQueryが、カラムのデータ型を定義して、テーブルにデータを挿入しさえすれば、その後の管理がほぼ不要であるのに対し、Redshiftではカラムの圧縮型を事前に定義しておく必要があり、データノードのサイジングを管理するなどの運用作業が発生する点が異なります。

Azure EventHubsやAmazon KinesisはBigQueryとは違った特徴のサービスです。これらはバッチやアドホックな処理はできませんが、大量に流れてくるデータのストリームに対してリアルタイムの処理が可能です。

他社のサービスと比較して、状況にあったものを選びましょう。

実際に使ってみよう!

BigQueryは有料のサービスであるが今回は無料でできる出来る範囲で使ってましょう。
*Googleやその他のユーザーが公開しているパブリックなデーターセットに対して、その枠内のクエリを実行する場合はクレジットカードの登録はいりません。それ以外の操作については、無料枠の範囲であってもクレジットカードの登録が必要です。
注意しましょう。

使い方

①まず必要なのはGoogleアカウントです。持っていない人はGoogleアカウントの作成から始めましょう。

②Googleアカウントにブラウザでログインをしたら、GoogleCloudのコンソールにアクセスしましょう!初めてアクセスした人は、プロジェクトの作成を求められるはずです。
好きなプロジェクト名で良いので名前をつけましょう。04

(図1)

③プロジェクトの作成後、(図2)の画面になるはずです。05

(図2)

④図2の画面のビッグデータの下にあるBigQueryという項目のリンクを開くと、(図3)の画面が開きます。
これがBigQueryのWebコンソールです。07_s

(図3)

⑤(図3)の左下にあるpublicdata.samplesというのがGoogleが提供しているパブリックなデータセットのサンプルです。左側の三角マークを選択して展開すると、テーブル一覧(図4)が表示されます。08

(図4)

⑥BigQueryでは、RDBと同じよにスキーマを持ったテーブルが存在し、複数のテーブルをまとめる単位としてデータセットが存在します。
このテーブルのうち、wikipediaを選択してみましょう(図5)。09_s

(図5)

このようにテーブルのスキーマが表示されます。

⑦次に、右上に出てきたタブでDetailsを選択してみましょう(図6)。

10_s

(図6)

テーブルのサイズなどの詳細情報、入っているデータのサンプルが表示されます。

⑧(図6)のタブの隣にあるQuery Tableタブを選択してNew Query 画面を表示しそこにクエリを表示してみましょう(図7)。New Query画面では、すでにクエリの大部分がが入力されていますが、このままでは、このクエリはエラーになります。入力欄の右下にある赤い!アイコンを選択すると、クエリのエラー内容が表示されます。11_s

(図7)

このエラーを回避するために今回は、SELECTFROMの間にCOUNT(*)と入力しましょう。緑色の帯になって、クエリがスキャンするデータ量が表示される。WHERE句などの条件がない場合の、COUNT(*)はスキャンするデータ量が0B(0バイト)という形になっている。(つまり課金対象となるクエリ時のデータスキャン量の加算されない。)

構文にエラーがないことが分かったのでRUNQUERYを押して、そのクエリを実行してみましょう。クエリの結果が下の欄に表示されます(図8)。12_s

(図8)

 

どのように使われているのか

実際にビッククエリはどのように使われているのでしょうか?

例えば、ビッククエリと国税庁が提供しているオープンデータを用いて東京都の97万の法人を区ごとにカウントし、どの区がいくつ法人があるかなどをわずか30秒程度で表示させることができます。
また、横浜市にある会社の数などをデータを用いることによって数秒で表示させることもできます。

まとめ

今回は、ビッククエリの基礎知識と簡単な使い方をご紹介しました。
なんか難しそう、使うことができるかな、など思っている方も多いかもしれません。
しかし実際は、とても簡単にビックデータの解析ができます。

今後使うかもしれない、興味を持ったと言う人は是非この記事を参考にしてビッククエリを始めてみてください。

関連記事

広告運用 SEO対策 サイト改善 MA活用 デジタルマーケティングの端から端まで支援 3分でわかるDIのナレッジと実績を凝縮!! 資料ダウンロード