Help us understand the problem. What is going on with this article?

BigQueryストリーミングインサートの仕組み

More than 1 year has passed since last update.

以下の記事のメモ。図はオリジナルのサイトから引用。

https://cloud.google.com/blog/big-data/2017/06/life-of-a-bigquery-streaming-insert

Streaming Insertのダイアグラム

スクリーンショット 2017-07-23 22.54.29.png

コンポーネント 概要 
Streaming data producers BigQueryへストリーミングデータを送るアプリケーション
Streaming Ingestion Workers ストリーミングデータをStreaming Bufferへ入れて、成功・失敗のレポートを行う。
Streaming Buffer 最近インサートした行を維持するバッファであり、ハイスループットで書き込むために最適化する
Instant availability reader クエリエンジンがストリーミングバッファから直接レコードを読み込むことを可能にする
Columnar storage データはカラムナフォーマットのテーブルに関連付けられる。
Extraction worker バッファされたレコードのグループを集めて、カラムナフォーマットへ変換し、データをBigQueryの管理するストレージへコミットする処理
Query Engine Dremel

クエリのライフサイクルは以下の3ステージからなる。

Stage1 データソースからの挿入

  • ユーザはtabledata.insertAllメソッドでBigQueryにストリーミングインサートを送信。このインサートは認可情報などをヘッダに加えてJSONフォーマットで送られる。
  • 1つのinsertAll呼び出しは1つもしくは複数のレコードが含まれている。
  • batch factorとして、いくつの行が1つのinsertAll呼び出しに含まれているか参照することができる。
  • インサートは、Streaming Workerによって受信し、処理され、insertAllペイロードの各レコードをストリーミングバッファに保存するために必要な呼び出しを行う。
  • workerはinsertAllリクエストの成功/失敗のレポートを行い、ペイロードはより詳細な個々のレコードのステータスを含む。
  • insert workerがそれを確認すると、データはstreaming bufferにコミットされる。
  • stream buffer storageはカラムナストレージよりもハイスループットでの書き込みが行われるように最適化される。このときのデータは堅牢だが、管理されたストレージより可用性の面で多くの制限がある。

Stage2 クエリ

  • Streaming bufferに届いたレコードは数分間そこに滞在し、この期間レコードはバッファされる。この段階でテーブルにクエリを発行することは可能。
  • Instant Availability Readerはワーカーがquery engineからバッファされたレコードを読み取ることを可能としている。

※instant availability経由でデータを読むのは管理されたストレージから読むよりも遅くなる。これはデータのロケーション(streaming bufferはquery treeよりも遠いところにある)とストレージフォーマット、並列性が要因である。

Stage3

  • extraction workerはバッファからレコードを集め、カラムナフォーマットへ書き込む。
  • extraction workerはカラムナストレージへ効率的なバッチを作成しようとするので、テーブルに到着するレコードやストリーミングレコードのボリュームは、これらの抽出が行われる頻度に影響される。
  • レコードは抽出されると、garbageとマークされ、streaming bufferから削除される。
  • 管理されたストレージへコミットされたレコードのグループとして、それらは複数のデータセンターにレプリカされ、アーカイブされる。
t-yotsu
ここに記載の内容は個人の見解であり、必ずしも所属組織の立場、戦略、意見を代表するものではありません。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした