Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Bigquery

253 views

Published on

GCPUG熊本にて

Published in: Data & Analytics
  • Login to see the comments

  • Be the first to like this

Bigquery

  1. 1. BigQuery ハンズオン なかむら さとる
  2. 2. 自己紹介 ● 名前: なかむら さとる ● 経歴: 元某小売系のインフラ・システム運用エンジニア 今はGroovenauts っていう会社で働いています ● その他: Google Developers Experts(Cloud) GCPUGで色々話しています。
  3. 3. Agenda ● BigQueryの仕組み ○ サーバレス・サービスモデル ○ 独自のストレージエンジン ○ Dremelというクエリエンジン ○ 独立したストレージとネットワーク ○ 費用について ○ IAMと認証、監査ログ ○ 制限事項 ● BigQueryハンズオン
  4. 4. BigQueryの仕組み ■The 12 Components of Google BigQuery https://medium.com/google-cloud/the-12-c omponents-of-google-bigquery-c2b49829a7 c7 ■重要なコンポーネント ・Dremel(クエリエンジン) ・Colossus(ストレージエンジン) ・Jupiter(ネットワーク) ・Borg(大規模コンテナ・クラスタ管理)
  5. 5. サーバレス・サービスモデル ● 完全なサーバレスモデルである ○ ハードウェア、機能アップデートの管理はすべて Googleが行う ○ VMやCPU、メモリ、ディスクサイズなどの設定も不要 ○ 数秒で数十万コアを利用することが出来る ○ 利用者はデータを入れること、抽出することだけを考える
  6. 6. 独自のストレージエンジン ● Colossus ○ GFS(Google File System)の後継 ○ データセンター規模でのファイルシステム ○ GmailやDocsなどと同じインフラ ○ 同じデータを3箇所のデータセンターにレプリケーション ○ データのシャーディング ○ 暗号化 ● Capacitor ○ カラムナーストレージフォーマット ○ データの最適化(並べ替えなど) ○ テーブルパーティショニング ● Poseidon ○ 様々なファイルフォーマットへの対応 (CSV,JSON,Avro,DataStore) ○ クエリとインポート/エクスポートの分離
  7. 7. Dremelというクエリエンジン ● 2015年にアップデート ● 最初はBigQuery独自のSQLだけでしたが、Standard-SQLにも対応 (※今後はStandard-SQLを利用、オプティマイザを実装) ● シャッフルやソートはインメモリで実施 ● Borgで管理 ● いつでも元気にフルスキャン
  8. 8. 独立したストレージとネットワーク ● Jupiterネットワーク ○ Googleが独自に開発したネットワーク( H/W,S/Wともに) ○ 1Pb/secの帯域 ○ 謎技術。。。。。(SDNであることは間違いない) ○ ストレージはネットワークで接続
  9. 9. 費用について ● クエリ課金 ○ クエリ毎に利用したカラムに対するデータ容量で課金 ○ 月額固定料金 ● ストレージ課金 ○ データ容量に対して課金 ○ 90日以上変更の無いテーブルはデータ容量に対しての課金が半額 ● ストリーミングインサート ○ バッチでInsertするのではなく、1行ずつ個別にいれるデータ量にたいして課金 ● https://cloud.google.com/bigquery/pricing?hl=ja#transfer
  10. 10. IAMと認証、監査ログ ● Google CloudのIAMと権限の連携(Read/Write/Admin) ● DataSet単位での権限付け ● 認証はO-Authとサービスアカウント ● すべての操作を監査ログで保存し、BigQueryへExportも可能
  11. 11. 制限事項 ● https://cloud.google.com/bigquery/quota-policy?hl=ja
  12. 12. BigQueryハンズオン https://cloud.google.com/bigquery/quickstart- web-ui?hl=ja https://goo.gl/dYPH6u
  13. 13. クエリ解説 ● https://goo.gl/9Mm8rt
  14. 14. 解説:クエリその1 ● クエリの結果データが多い場合はエラーとなります。 →結果データをテーブルに保存することで回避出来ます。 →エクスポートしたい場合は、そのテーブルをGCSに書き出すことが出来ます。 ● 大量のクエリ結果に対するORDER BYは避ける
  15. 15. 解説:クエリその2 ● 文字が大文字、小文字が混ざっているのがわかります。 これをすべて大文字に変換してGROUP BYしてみましょう。 また、ここでスキャンしたデータ量もメモしておいてください。
  16. 16. 解説:クエリその3 ● CPUを使用する小文字→大文字に変換するような処理も無課金 ● COUNT(*)などは課金対象外
  17. 17. 解説:クエリその4 ● WHERE句でデータの範囲を絞っているように見えるが、むしろ新たな列をスキャンす ることになった。 →データの範囲を絞るのではなく、一度取ってきたデータをフィルタする役割になって いる。
  18. 18. 解説:クエリその5 ● サブクエリ内にクエリ結果に影響のないカラムが含まれているが、クエリオプティマイ ザによって、自動的にスキャン範囲から除外される。 ● また、スキャン範囲から除外させることによって、課金もされない。
  19. 19. 解説:クエリその6 ● テーブルパーティションとテーブルワイルドカードを利用することで、UNIONと同じ状 態を作ることが出来る。 ● テーブルを日付毎に作成し、クエリの範囲を狭めることが出来る。
  20. 20. 解説:クエリその7 ● JOINをする場合は、基本的にスキャンの範囲は足し算となる。

×