Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cloud Functions × BigQuery

Kenta Kase
January 17, 2019

Cloud Functions × BigQuery

Firebase Meetup #9 Cloud Functions Day の公開用スライドです。
https://firebase-community.connpass.com/event/110958/

個人サービスでCloud FunctionsとBigQueryを組み合わせた内容の紹介をしました。

Kenta Kase

January 17, 2019
Tweet

More Decks by Kenta Kase

Other Decks in Technology

Transcript

  1. 自己紹介 Twitter: @Kesin11 Github: Kesin11 お仕事: テストや自動化の調査、啓蒙活動など Firebase は主に趣味プロダクトで使ってます Firestore

    をTypeScript から使いやすくするラッパー作ったりしてま す https://github.com/Kesin11/Firestore-simple 2
  2. Cloud Functions からBigQuery に保存する Cloud Functions 内ではサービスアカウントなどの認証無しに BigQuery のSDK を使える

    BigQuery へのデータ追加の基本 1 レコード毎の追加はお金がかかる(ストリーミングinsert ) ローカル、GCS からのcsv, json の一括読み込み(load )は無料 4
  3. Cloud Functions とCDN レスポンスヘッダーの Cache-control でユーザーキャッシュ、CDN キ ャッシュが可能 キャッシュにヒットすればFunctions の実行自体が行われない

    用途によっては適切にキャッシュさせることでFunctions のレスポ ンスや課金を改善できる 今回はBigQuery のクエリ結果を返すAPI をCDN でキャッシュさせた 9
  4. CDN キャッシュのパージ Hosting とFunctions のCDN は中身が違う(と思われる) Hosting はFastly curl -svo

    /dev/null -H "Fastly-Debug:1" {URL} Functions は不明 Fastly はcurl -X PURGE でパージできる Functions の方はパージする方法が存在するのか不明 11
  5. Hosting のrewrites を活用 Hosting のrewrites 設定で特定のURL をFunctions に割り当てることが 可能 https://

    rebase.google.com/docs/hosting/functions このときのFunctions のCDN はFastly になる がしかし、今回はダメだった BigQuery のSDK がアカウント認証のためにリダイレクトさせてる っぽい? 解決できなかったのでrewrites は諦めた 12
  6. まとめ Cloud Functions × BigQuery GCS を利用してFunctions からデータ追加できる Functions から接続してAPI

    化するには工夫が必要 CDN キャッシュは用法用量を守って安全にお使いください 14
  7. BigQuery でのレコード重複回避 BigQuery にはPK の概念が存在しない RDB におけるinsert or update が不可能

    前回と同じデータをload すると重複します load 時に重複させない工夫が必要 インクリメンタルなid やタイムスタンプで工夫 その他の方法 BigQuery でinsert or update を実現する 数百GB のデータをMySQL からBigQuery へ同期する 16