BigQuery
BigQueryはビッグデータ解析SaaSです。立ち位置としてはAWSで言うところのRedshiftに相当するようなサービスですが、趣はずいぶん異なります。Redshiftは事前にデータ容量などを計画し適切なプランを選択することになりますが、BigQueryはそのような峻別は不要で、細かいことは気にせずとにかく使いはじめることができます。
筆者の周囲ではGCPの中で一番最初に浸透して行ったサービスがBigQueryです。皆の課題を解決する魅力と力の溢れているサービスだからでしょう。BigQueryはDevelopers ConsoleのBig Dataの中にあります。
BigQueryの特徴
BigQueryの技術的な特徴としてはカラム型DBMSです。Googleの持つ分散技術を背景に、データを超分散配置し並行操作することで大量のデータを扱うクエリでの短時間応答を実現しています。
提供形態はSaaSで、よほど大量のデータをセミリアルタイムで取り扱いたいケースでない限り、事前のスケールに対する配慮は不要です。詳しくは後述の制限のあたりを確認してください。
BigQueryではデータを取り扱うためにクエリを使います。クエリはSQLライクな文法なので、SQLが書けるのであれば学習コストはとても低いです。
検証してみたいけれどデータがない、という場合も大丈夫! サンプルデータがあらかじめ用意されているのでいろいろ試せます。
GitHubのリポジトリデータやWikipediaのリビジョンヒストリなどが用意されています。
今回は313,797,035行(35.7GB)のデータがあるwikipediaテーブルを使って動作を試してみます。
試しにcontributor_usernameの先頭3文字の登録数TOP100を調査してみます。この場合は以下のクエリを実行します。
すると313,797,035行(35.7GB)の中から2.49GBのデータを走査し結果が表示されます。この間わずか3.1秒です。素晴らしいですね。
活用例
バッチ処理でガッツリとデータ投入して解析する流れで使うこともできますが、Streaming Insertsでデータを随時投入し、ほぼリアルタイムのデータ解析する利用方法が盛んです。
Streaming Insertsの実装方法はfluentdが多いようです。ログの吸い上げにfluentdを使いfluent-plugin-bigqueryプラグインでBigQueryにデータ投入するのが定番です。
サーバからほぼリアルタイムに収集したログを毎分集計し、ほぼリアルタイムに状況を把握するという利用方法も可能です。
なおGoogle Analytics Premiumでは生データをBigQueryに溜めて自分で好きなように解析できるようです。
価格
主にデータ容量、データ投入(Streaming Inserts)、クエリ実行時のデータ操作量に費用がかかります。
データ容量は1GBあたり月$0.02です。1TB投入しても月$20。ものすごく安いですね。
データインポート(データ投入)、データエクスポート、テーブル読み込み、テーブルコピーは無料です。
データ投入について上記の通りバッチ処理的なデータ投入は無料ですが、Streaming Insertsの場合は100,000行あたり$0.01かかります。
クエリ実行時のデータ操作は最初の1TBは無料、以降1TBあたり$5です。
データサイズの計算方法
データサイズはデータ型によって決まります。 各データ型のデータサイズは以下のとおりです。
STRING |
2 bytes + the UTF-8 encoded string size |
INTEGER |
8 bytes |
FLOAT |
8 bytes |
BOOLEAN |
1 byte |
TIMESTAMP |
8 bytes |
RECORD |
0 bytes + the size of the contained fields |
制限
クエリ、データインポート、Streaming Insertsそれぞれで各種制限・上限が設けられています。データ量、1日あたりの処理回数など様々あるので、テスト利用から本番利用に移行するタイミングなどでよくよく確認しておきましょう。
Streaming Insertsは1行20KBまで、1回のinsertで1MB・500行まで、テーブルあたり1秒あたり10,000行・10MBまでという制限があります。特にピーク流量が上限に抵触しそうな場合は、テーブルを分割するなどの方法で回避しましょう。
おまけ:GCPのAndroidアプリができました!
GCPを管理できるAndroidアプリができました。まだBETAですが、Playストアからインストールできます。端末に紐付いているGoogleアカウントの情報を使ってくれるので、別途アカウントを設定する必要はありません。
アプリではリソース状態や課金額の確認などができます。
緊急時に専用のアプリで状況を確認できるのはとても便利ですね。
おわりに
本連載では全6回に渡りGoogle Cloud Platformの各サービスを紹介してきました。現時点ではクラウドと言えばAWSという市況ですが、昨年からグングン追い上げてきているGoogle Cloud Platformの魅力が少しでも伝われば幸いです。