netkeiba のデータをスクレイピングして LOD 化する(7)
前回の記事では、構想を練るところまでやった。
苦節一ヶ月、ついに実現し毎日自動でデータを集め、それが BigQuery にロードされるようになったので、苦労した点をつらつらと書いていく。
目次
- そもそもプロダクト(Pub/Sub)の役割がわかっていなかった
- CloudEvent ってなに?
- イベント駆動の Cloud Functions (Gen 2) はどうやってデプロイするの?
- BigQuery にはユニーク制約が無い!
- BigQuery は何でも入れればいいわけではない
1. Pub/Sub の役割
Cloud Scheduler については、まぁすぐに理解できた。 単に Cron を設定してその時間通りに Pub/Sub を起動するだけだからだ。
が、「Pub/Sub 起動する」ってなに???となってしまった。。。
Pub/Sub は、メッセージを生成するサービスを、それらのメッセージを処理するサービスと切り離す、非同期のスケーラブルなメッセージング サービスです。
これだけを はじめて読んだときは「???」としかならないと思うんだが、次の記事を読みつつ自分で手を動かしてみることで理解することができた:
【図解付き】Cloud Pub/Sub に概要や使い方についてわかりやすく解説 - KIYONO Engineer Blog
https://laboratory.kiyono-co.jp/69/gcp/
メッセージングサービスがないと……
Pub/Sub のようなプロダクトがない場合、データの「送信元」「受信先」がすべて1対1対応になってしまい、複雑かつ情報ロストのリスクが増えてしまう。 例の通り4:4の構成だと、4 * 4 = 16 通りの経路が生じるし、n 個の構成物があれば n^2 に増大してしまう。。。