BigQuery
https://cloud.google.com/bigquery/docs
Google Cloud における代表的なデータ分析サービス
フルマネージドのデータウェアハウスサービス
Dremel という Google の内部システムを外部向けに実装したもの
多くの強力な機能
マニュアル・バッチ・ストリーミングでのデータインポートの機能
データを格納するストレージとしての機能
クエリを実行して分析を行う機能
RDB と同様にスキーマを持つテーブルという概念があり、SQL でクエリを記述する
標準 SQL とレガシー SQL の 2 種類の SQL がある
標準 SQL : RDB で使われる SQL とほぼ同じ
レガシー SQL : 標準 SQL がサポートされる前に使われていた、BigQuery SQL という独自の構文で記述
RDB との違い
カラム型ストレージ : 必要なカラムのみにアクセスできるので、データ走査を最小化
ツリーアーキテクチャ : クエリをツリー構造の処理に分解して分散処理できる
NoSQL のようにパフォーマンス向上のためにデータを非正規化できる
nobuoka.icon あんまりピンときてない
用語
データセット : テーブルやビューの集合
テーブル : データを格納した行と列の集合
ジョブ : クエリやインポート、エクスポート、データのコピーといった処理の単位
利用する流れ
データを準備する
データセットとテーブルを作成し、テーブルにデータを挿入する
Cloud Storage などの外部データソースを使用する方法もある
クエリを実行する
操作には bq コマンドラインツールやクライアントライブラリも利用できる
よく使われる機能
一般公開データセット : Google Cloud Marketplace に多数のデータセットが一般公開されている
クエリエディタ : クエリを入力して実行できる機能
クエリ結果ビュー
料金
ストレージ料金とオペレーション料金の合計
ストレージ料金は安い : 東京リージョンで 1GB あたり $0.023 → 1 TB でも 1 か月あたり $23
ベストプラクティス (コスト抑制)
パーティションを指定してクエリを実行 (クエリが参照したデータサイズを抑えられる)
パーティションの指定がないクエリを実行できないようにすることも可能 (大きなサイズのテーブルだと、1 クエリで数千円かかったりもする……)
SELECT 句に指定するカラムを必要最低限にする (クエリ結果に含まれるデータサイズを抑えられる)
キャッシュについて意識 (テーブル更新がなく前回のクエリから 24 時間以内であればキャッシュが効く)
クエリ実行前にドライランを行う
使用状況を監視する (Cloud Monitoring を利用)