概要
データ活用に必須となるインフラであるデータ基盤
使いたいデータを素早く取得できることはデータ分析プロジェクトの成功となる基本
今回はそんなインフラであるデータの貯蔵庫となるDWHで圧倒的なパフォーマンスを発揮しているBigqueryを改めて紹介したい。
BigQueryのルーツ
2004年:MapReduceに関する分散処理の論文発表
社内でのストレージとして利用していたのが、GoogleFileSystemだが、分散ファイルシステムを用いて、数千にもなる共有ファイルに同時にアクセスできるように設計された。
2010年SQLを利用して分析可能となり、ユーザーのデータ分析を可能にすることで、BigQueryの提供開始した。
マルチテナント方式を採用している
BigQuery:マルチテナント方式
Googleが事前にプロビジョニング(事前予測準備)して管理するリージョンレベルの大規模プールに対して、動的クエリに必要なリソースを割り当てる
プロビジョニングおよびクラスタを保持することによるコストは発生しない
データの保持:ストレージ側
クエリの実行:コンピュート側
、完全に独立してスケーリングすることが可能
なぜ障害に強く高速なのか
Bigqueryの強さの源泉である耐久性と高速性である。
高速の理由=分散処理ではないから
分散処理を実行する場合には余分性が生まれるが
「分散インメモリシャッフル」
を導入することにより高速になり
障害が発生しても別ワーカーに割り振れるので障害に強いのである。
データスキャンが高速になる理由
一般的なデータベースと違って列指向だから
データの列指向のファイルフォーマットにデータ圧縮している
(Capacitorファイル)
一般的な行指向データベースに比べ、高速にデータのスキャンが可能なのである。
料金について
契約形態が「クエリ実行データのスキャン量で課金されるオンデマンド分析方式」
と「スロットを事前購入する定期料金」が存在
23年7月料金改定があり
現在はクエリ(オンデマンド)$6.00 (約830円) / TB
毎月 1TBまで無料
行指向型(RDBMS). 列指向型(BigQuery)
• データは列ごとに格納されるため
必要な列のみの読み取りが可能
• クエリ内で不用意にSELECT*FROMを利用しない
BigQueryは読み込むデータ量に対して課金が行われる
最大のネックとなる料金対策について
• 全件取得となるSELECT * を避ける
先ほど記載した通り、BQはカラムナストレージなので、列単位でフルスキャンが実行され
そのため集計に必要なカラムのみを明示的に記載する必要あり
• テーブルのパーティション・クラスタ化
日付カラム等をパーティション化することで、フルスキャンを割けて必要なデータのみを読み混み可能
ただし、パーティションは最大4000までしか分割できませんクラスタ化テーブルの概要テーブル内の1つ以上のカラムを利用して、データを並び替えることが可能
フィルタとしてクラスタリング列を利用することで、余計なデータのスキャンを省略可能
• 一時テーブルの利用
BQには2種類のテーブルがある(一時と宛先テーブル)一時テーブル通常のDBでいうクエリキャッシュにあたり、最大24時間まで補完される
参考
Google Cloud Platform 実践 ビッグデータ分析基盤開発ストーリーで学ぶGoogle BigQuery
GCPの教科書