20万行・12項目の表で、1項目だけを集計すると読む量は0.8MBでした。
3項目にすると2.3MBです。使う項目の数にそのまま比例します。
読む量は使う項目の数にそのまま比例します。選ぶ項目を1つ足すと、その分だけ増えます。
BigQueryの並べ方は、公式に明記されています。BigQueryは、分析の問い合わせに向けて最適化された、列ごとの保管の形式を使ってデータを保管するという記述です。
列ごとに並んでいるので、使う項目だけを読めます。どれだけの差になるかを数えました。
表 200,000行・1行あたり 12項目(1項目 4バイト) 集計に使う項目の数を変えて、読む量を見る 使う項目 行ごとに持つ形 列ごとに持つ形 比 1個 9.2MB 0.8MB 12.0倍 2個 9.2MB 1.5MB 6.0倍 3個 9.2MB 2.3MB 4.0倍 6個 9.2MB 4.6MB 2.0倍 12個 9.2MB 9.2MB 1.0倍
1項目なら0.8MB、3項目なら2.3MBです。項目の数にそのまま比例します。
読む量が費用に直結する形なら、選ぶ項目を1つ足すごとに費用が上がります。
最下行が全項目です。9.2MBで、行ごとに持つ形と変わりません。
つまり全項目を選ぶ書き方は、この仕組みの利点をすべて打ち消します。1項目だけ見るつもりでも、全部を読みます。
12.0倍と1.0倍の差は、書き方1つで決まります。必要な項目を明示するかどうかだけです。
読む量は使う項目の数にそのまま比例する。
BigQuery stores data using a columnar storage format that is optimized for analytical queries.原文Google Cloud ドキュメント「Introduction to BigQuery」 この内容の有効期限2027-02-18
置いておく量と、処理に使う力が別勘定になります。どちらが効いているかを分けて見られます。
BigQueryの構成は2つに分かれます。公式はBigQueryの構造は2つの部分からなる。データを取り込み、保管し、最適化する保管の層と、分析の能力を提供する計算の層であると述べています。
分かれているので、置いておく量を増やしても、処理の力はそのままにできます。
1番目と2番目は別物です。10年ぶんを置いていても、直近1か月だけを読めば読む量は1か月ぶんです。
だから古いデータを消す判断と、読む量を減らす判断は別々になります。
公式はBigQueryの拡張可能で分散した分析の機構により、数テラバイトを数秒で、数ペタバイトを数分で問い合わせられると述べています。
処理の力は増やせますが、読む量そのものは減りません。減らせるのは、選ぶ項目と絞る範囲だけです。
BigQuery's architecture consists of two parts: a storage layer that ingests, stores, and optimizes data and a compute layer that provides analytics capabilities.原文Google Cloud ドキュメント「Introduction to BigQuery」 この内容の有効期限2027-02-18
数秒で返っても、読んだ量は変わりません。速さを見ていると、量が増えていることに気づけません。
BigQueryの速さは公式が示すとおりです。拡張可能で分散した分析の機構により、数テラバイトを数秒で、数ペタバイトを数分で問い合わせられるという記述です。
速いということは、読む量が多くても待たされないということでもあります。
全項目を選ぶ書き方をしても、返ってくる時間はほとんど変わりません。前の計測でいえば、0.8MBが9.2MBになっても数秒のままです。
遅くならないので、直す動機が生まれません。読む量を別に見ていなければ、12倍のまま運用が続きます。
同じ構図は、実行時間だけを見ていると気づけない場面で繰り返し出ます。1回ずつは速いのに回数が多い場合の話はMySQLの記事で扱いました。
1番目と4番目を掛けたものが効いてきます。1回0.8MBでも、1日1万回なら8GBです。
実在の仕組みは使わず、2つの並べ方をその場で作って読む量を計算しています。1項目4バイトという値も置いたもので、実際には項目の型によって違い、まとめて縮める処理も入るため、列ごとに持つ側はさらに小さくなります。ここで見せているのは、読む量が使う項目の数に比例し、全項目を選ぶとその利点が消えるという関係です。
BigQuery's scalable, distributed analysis engine lets you query terabytes in seconds and petabytes in minutes.原文Google Cloud ドキュメント「Introduction to BigQuery」 この内容の有効期限2027-02-18
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る