Open2

BigQueryと重複

takamin55takamin55

考えたいこと

  • BigQueryの重複レコードを防ぐ方法
  • Pub/Subの重複について

BigQueryは重複レコードを許してしまう。
※念の為書いておくが、INSERTが急に2行になるとかそういう訳では無い。

防ぎ方

※BigQueryにはユニーク制約がない。プライマリーキーはあるけどRDBみたいにユニーク制約はない。なのでそれでは防げない

distinct句やPartition By句

Viewを使うならViewにこれらの句を入れるなど。

ストリーミングINSERT

ベストエフォート型の重複排除を1分間サポート。
名前的に完全に防ぐことは無理なんだろうな。

https://cloud.google.com/bigquery/docs/streaming-data-into-bigquery?hl=ja#dataconsistency

Pub/Subの配信

At Least Once

同じメッセージが重複して配信される可能性がある。ようは増幅する。
理由としては、受信応答が何らかの原因で配信側に届かなかったりタイムアウトしてしまったりすると、再度配信が起こる。

Exactly Once

https://cloud.google.com/pubsub/docs/exactly-once-delivery?hl=ja#exactly_once_delivery_guarantees

一回限りの配信の保証という項目があった。