GCP BigQueryの基礎をざっくり理解する
AWSで言えば、Athenaのような、、、Redshiftのような、、、Auroraのような、、サービスと理解した
BigQueryの構成要素
- BigQueryマネージドストレージ
- スケーラブルなデータ・ストレージ
- BigQuery Analysis
- Dremelクエリエンジンテクノロジーに基づく並列SQLエンジン
アーキテクチャ
データ格納方式
データの分散配置
クエリの並列処理
データ型
https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types?hl=ja
データの持ち方
BigQueryの場合、読み取り量に応じた課金が発生するので、積極的に使うことを検討。
- パーティション分割テーブル
- パーティションプルーニング、パーティション単位でエクスポート等
- クラスタ化テーブル
- クラスタリング列に基づいてデータ配置、並び順が調整
スロット
処理の並列度で、デフォルトだと2000が上限。bigqueryの並列処理の速さはストレージの分散、スロット分散で実現しているが、スロット数がこの上限までスケールするとは限らないことには注意。CPUコア数を指しているわけでは無さそう。
https://cloud.google.com/bigquery/docs/slots?hl=ja
BigQuery スロットは、BigQuery で SQL クエリを実行するために使用される仮想 CPU です。BigQuery はクエリのサイズと複雑さに応じて、クエリごとに必要なスロットの数を自動的に計算します。
Google BigQuery の知らない?世界 - Qiita https://qiita.com/AkiQ/items/9c5eefb7953409aa2eda
前述しましたSlotですが、デフォルトでプロジェクトに対して最大2,000 Slot与えられます。クエリーの爆速はSlot の並列処理により生み出していると言えます。Slotは、BigQuery のその時点で余っているリソースから割り当てるわけです、考えてみたら当たり前ですけど。Slotは基本的にグローバルリソースです。 ということは、最大2,000 Slot使用できると言っていますが、使いたくても2,000 Slot同時に使用できるとは限らないのです。
BigQueryの階層構造
コスト最適化に向けて
- BigQuery破産という話題が以前にあったが、大容量に対しての分析クエリになる場合、コスト面を気をつける必要がある
- BigQuery におけるコスト最適化の ベスト プラクティス | Google Cloud Blog https://cloud.google.com/blog/ja/products/data-analytics/cost-optimization-best-practices-for-bigquery?utm_source=pocket_mylist
料金体系
料金 | BigQuery: クラウド データ ウェアハウス | Google Cloud https://cloud.google.com/bigquery/pricing?hl=ja
- クエリ料金
- ストレージ料金
他クラウドからのデータ転送
データが無ければ分析基盤があってもどうしようも出来ない。BigQuery Data Transfer Service for Amazon S3
を使用すると、Amazon S3 から BigQuery への定期的な読み込みジョブを自動的にスケジュール出来る。もちろん逆も然り。
Amazon S3 転送 | BigQuery Data Transfer Service | Google Cloud https://cloud.google.com/bigquery-transfer/docs/s3-transfer?hl=ja
『GCPからAWSへのデータ移動』について考えて&まとめてみる | DevelopersIO https://dev.classmethod.jp/articles/data-migration-from-gcp-to-aws-matome/#a-4
参考
BigQuery ドキュメント | Google Cloud https://cloud.google.com/bigquery/docs
関連しているかもしれない記事