BigQueryの基礎を徹底解説!できることやメリットは?
BigQueryを直訳すると大きなクエリという意味です。
ビッグデータを扱っているのは小耳に挟んだものの、実際何をしているのか分からないという方も多いのではないでしょうか。
いやそもそもビッグデータとは何か・具体的にはどのようなデータをどのように処理するのかも知らない方がいるかもしれません。
本記事ではBigQueryでできることやメリットを順序立てて解説していきます。
BigQueryとは
Google BigQuery(グーグル・ビッグクエリ)はGCP(Google Cloud Platform)で提供されているサービスの1つです。
2011年にCloud SQLと同時に発表されたこのサービスは、Google社内で使用していたDremel(ドレメル)というツールを製品化したものです。
BigQueryではウェブUI上からクエリを実行します。クエリの新規作成・更新・削除などの操作の他、共有レベルの変更も可能です。
画面上にはナビゲーションパネル・クエリエディタ・詳細パネルなどが表示されています。
またコマンドラインツールも提供されており、Cloud SDKやGoogle Cloud Shellからコマンド経由でアクセスを行うことも可能です。
クラウドデータウェアハウスの1種に分類されています。
主な機能はBigQuery ML・BigQuery BI Engine・BigQuery GISなどです。
BigQuery基礎知識
ビッグデータ・データウェアハウスという概念を知っていますか。またデータベースとの違いは何なのでしょうか。
この項ではBigQueryがどのような概念の情報の集まりであるかを確認していきます。
ビッグデータとは
ビッグデータ(Big data)は量(Volume)・種類(Variety)・頻度(Velocity)の3Vを特徴とする多種多様なデータのことです。
具体的なものにはAIに学習させるデータ・政府や企業の蓄積情報・IoTデータなどがあります。
共通点からざっくりまとめると現実の世界の膨大なアナログ情報を、一部デジタル化して取り出したものといえそうです。
データウェアハウスとは
データウェアハウス(Data Warehouse・DWH)はデータを整理・保管し、要求に応じて解析を行うための管理システムです。
英語の倉庫には3種類ありますが、中でもウェアハウスは商業的なレベルの大規模な倉庫の意で使います。
つまりデータウェアハウスは「データ専用の大規模な商用倉庫」という意味になるでしょう。
これでイメージしやすくなったかと思います。
DB(データベース)ではいけないのでしょうか。両者の大きな違いはデータの最適化の有無です。
商用の倉庫では格納する商品を分類しておくと共に、移動しやすいようにパレットや段ボールなどで一定の単位に分けて置いてあります。
DWHも同様にデータの分類・整理を行うことで、データ統合や集計・分析作業を効率的に進められる工夫が成されています。
BigQueryでできること
「Google Cloud 導入事例」にはGCPの導入事例が紹介されているので、個々の具体的な例に興味がある方は覗いてみて下さい。
フィルタ条件:プロダクトからビッグデータを指定すると、BigQuery関連の導入事例が探しやすくなります。
- Google Cloud Platform の導入 活用事例
ログ解析
ソーシャルゲームやソーシャルメディアの月間利用者数は数億・数千万人に達するものも珍しくありません。
人気のゲームともなれば膨大な数のユーザーが様々な動きをします。
その全てをログとして保存すれば行数はあっという間に膨れ上がるでしょう。
一口にログといってもアプリケーションログ・アクセスログ・システムログなど様々な種類のログがあります。
これらのログを解析することでユーザーの動向を分析し、サービス内容を軌道修正していくことを可能にするのがBigQueryです。
業務効率化
業務データの分析には少なくない時間がかかります。
実際に分析する時間だけでなく、データの統合や加工・フォーマットの統一などの準備には多くの時間がかかるでしょう。
BigQueryではデータを解析可能な状態で保存するため、ユーザーはクエリを発行するだけで簡単に欲しいデータを取得できます。
リアルタイム分析
鮮度が肝心なビッグデータに対しては、できる限り速やかにクエリを発行・解析結果の習得を行わなければなりません。
実行速度が高速なBigQueryであればこれらの要求に応えることができるでしょう。
例えばトラックにセンサーを取り付けリアルタイムに解析を行うことで、配送ルートの最適化やスケジュールの管理を行っています。
BigQueryの特徴
BigQueryの特徴はカラム型データストアとツリーアーキテクチャです。
カラム型データストア
カラム型データストアは列指向型・カラム型データベースなどとも呼ばれます。
一般的なデータベースが行単位でデータを読みに行く行指向型なのに対し、BigQueryは列単位でデータを読みに行く列指向型です。
これにより必要なカラムのデータのみを取得するだけで良く、また類似データは圧縮できるため更に高速な処理が可能です。
ツリーアーキテクチャ
ユーザーがクエリを投げた後、BigQueryは裏側で動作する沢山のサーバーで処理を行います。
このときクエリをツリー構造のサーバー郡に広げていくことで、処理の分散および並列処理を実行するようです。
BigQueryのメリット
BigQueryのメリットを説明しましょう。
とにかく高速
BigQueryは大量のデータを数十秒から数分でフルスキャンし、結果を迅速にユーザーに返却します。
これを実現するのがカラム型データストア・ツリーアーキテクチャという仕組みです。
標準SQLが使える
BigQueryは2016年頃から標準SQLをサポートし始めました。このSQLをStandard SQLと呼び、これ以前のクエリ言語をLegacy SQLと呼びます。
標準SQLを用いればSELECT・INSERT・UPDATE・DELETEなどの慣れ親しんだ記述方法でクエリを書けるでしょう。
普段データベースを操作するのと同じ感覚でSQLを書けるため、学習コストが低く使いやすくなりました。
利用料金が安い
他のリレーショナルデータベースと異なり、BigQueryはクエリを実行する際にサービスを起動して検索などの操作を行います。
料金が発生するのはサービスが起動している間、つまり何らかのクエリを発行して操作を行うときだけです。
このためビッグデータの保存にかかるコストは低めになります。
サーバーレスアーキテクチャ
サーバーレスのサービスなのでメンテナンスや管理を委託することができます。
開発者はビッグデータの取り扱いだけを行えば良いので、プロダクト開発や業務に専念することができるようになるでしょう。
BigQueryのデメリット
BigQueryのデメリットを解説します。
高価になる可能性がある
正しい使い方をするならBigQueryは非常に安価で使いやすいサービスです。運用コストを何倍にも削減可能でしょう。
一方で料金が発生するのはクエリ発行時のみですが、逆にいえば不適切なクエリ設計を行ってしまうと高コストになる可能性があります。
ある程度の慣れが必要
利用方法や業務での活用パターンなどに慣れていない場合、BigQueryで何から始めれば良いか分からなくなるかもしれません。
学習コストは決して低くなく、ある程度の時間がかかることを考慮に入れる必要があります。
またCGPのサービスなので独特のUI・UXの勝手が分かるまでに多少労力を割かなければならないでしょう。
ドキュメントや記事が少ない
BigQueryに関するドキュメントは十分用意・メンテナンスされているとはいえないものです。
他のサービスにもいえることですが、有料サービスの上に本格的に扱える技術者も少なく、公式ドキュメントがあまり整っていません。
少なくともデータベース初心者がいきなり利用するのは難しいですし、経験者でもエラー解決やSQLの記述にはある種の勘が求められます。
BigQueryの料金体系
BigQueryを利用する際に気になるのが利用料金です。
細かい料金は変更になる可能性があるため、常に公式ドキュメントの最新を参照して下さい。
ここでは基本的な考え方について説明します。
BigQueryにおいて課金対象となるのは主にクエリ・ストレージの2種類です。
クエリの料金(オンデマンド・定額)
実行クエリが処理したバイト数に基づいて算出される「オンデマンド」、あらかじめリソースを購入しておく「定額」があります。
定額は年・月のいずれかの単位で選択が可能です。
ストレージの料金(アクティブ・長期)
過去90日以内に変更されたデータを「アクティブ」、変更されていないデータを「長期」に分類しています。
長期の料金は安価です。
無料枠
ほとんどの操作に対して無料枠が設けられています。例えばストレージの料金については月ごとに一定の容量まで無料で利用可能です。
BigQueryのコスト管理
BigQueryの扱いを間違えると予想以上の金額を溶かしてしまいかねません。
BigQueryでコスト管理をしていくには、どのような方法があるのでしょうか。
ここでは取りうる対策を一部ご紹介しましょう。
また公式ドキュメント「入門ガイド > BigQuery のおすすめの方法: 費用を抑える」はより多くの実装に近い情報のまとめです。
使用を開始する前に一読されることをおすすめします。
パーティショニング
BigQueryにおけるパーティショニングとはテーブルの分割です。
例えばテーブルを日付ごとにパーティショニングするとパフォーマンスが上がるため、クエリ費用が減少します。
料金上限の設定
カスタムコスト管理という機能の紹介です。
この管理機能を使用するとプロジェクト・ユーザー単位で、クエリデータ量に上限を設定することができるようになっています。
設定した利用上限を超えるクエリが発行された場合、プロジェクト・ユーザー各々の場合に別々のエラーが返される仕組みです。
費用見積ツール
クエリ検証ツールを使用すると、クエリを実行する前にバイト数を見積・料金計算を行えるツールです。
またストレージ費用の見積ツールも用意されており、保存バイト数から月間の費用算出を行うことができるようになっています。
心配な方は見積ツールで費用を計算してからクエリを発行すると良いでしょう。
他のクラウドデータウェアハウス
クラウド型のデータウェアハウス サービスには、BigQuery以外にもいくつかの選択肢が存在します。
Amazon Redshift
Amazon Redshift(アマゾン レッドシフト)はAWS(アマゾン ウェブ サービス)が提供するデータウェアハウス サービスです。
AWSの他のサービスと連携させることができます。
特にS3に蓄積した膨大な情報に対してデータ解析を行いたい場合に有効でしょう。
Amazon Athena
Amazon Athena(アマゾン アテナ)はAWSが提供するサーバーレスのクエリサービスです。
Amazon AthenaもよくGoogle BigQueryと比較されます。こちらはデータ量による料金体系になっており、よりBigQueryに近いサービスです。
Azure Synapse Analytics
Azure Synapse Analyticsは旧Azure SQL Data Warehouseのことです。
Microsoftが提供するデータウェアハウス サービスで、「Azure Machine Learning」「Power BI」などのサービスと連携します。
Amazon Redshiftとの比較
Amazon RedshiftとGoogle BigQueryでサービス内容はほとんど同じです。大きく異なるのは料金体系でしょう。
サービス内容
細かいサービス内容では入力・出力フォーマットの対応形式に一部差があります。
またAmazon Redshiftではテーブル名・カラム名にマルチバイト文字が使用できますが、Google BigQueryでは使用できません。
料金体系
AWSは基本的にオンデマンド・リザーブドインスタンスなど、EC2などの他のサービスと同様の料金体系で利用します。
つまりAmazon Redshiftは常に時間課金であり、Google BigQueryはクエリ課金です。
Amazon Redshiftは恒常的にデータ解析を行う場合に、Google BigQueryは必要に応じてデータ解析を行う場合に利用しましょう。
おわりに
本記事ではBigQueryがデータウェアハウス サービスの1つであり、ビッグデータを取り扱うものであることを説明しました。
BigQueryだけでなくGCP関連の案件の将来性は高く、現在でも一定数の案件が発生しています。
特に設計・構築経験のある開発者はより高単価での参画が可能です。
この機会にBigQueryに入門してみてはいかがでしょうか。
toiroフリーランスは、SHIFTグループがプライムとして参画している独自案件をフリーランスエンジニア向けに紹介する唯一のプラットフォームサービスです。
エージェントによるサポートもありますので、ご利用を検討してみてはいかがでしょうか。