こんにちは Development Team の滝波です。
今回はFirestoreのデータをBigQueryと同期したい場合の選択肢とその方法をそれぞれ紹介していきたいと思います。
はじめに
AI SHIFTでは会話やカスタマーの情報をCSVなどでエクスポートするためにBigQueryを利用していますが、その情報の元になるいわゆる「元データ」はFirestoreに格納されているため、FirestoreとBigQueryは常にリアルタイムで同期している必要があります。同期する方法としていくつかあると思いますが、今回AI SHIFTの選択肢として下記の2つが上がりました。
選択肢
- 自前でCloudFunctionを作成
- Firebase Extensionsを使用
自前でCloudFunctionを作成する場合
Pros
・柔軟にロジックを書くことができるため、BigQueryへの登録する値やフォーマットの自由度が高い
・トリガーにcreate・update・delete と複数のユースケースに対応している
Cons
・実装が必要になるので、それなりの工数がかかってしまう
・CloudFunctionの運用コストがかかってしまう
Firebase Extensionを使用する場合
Pros
・Firebaseのコンソールから設定するだけで完結してしまう
Cons
・個別の実装ができないので、ロジックの自由度が無い
・データの登録フォーマットが決まっていて、変更できない
選定
AI SHIFT ではデータがBigQueryに入ってしまえば、あとはクエリ操作で自由にデータが加工できることからも、実装や運用コストの少ないFirebase Extensionsを使用する方針でデータの同期を行うことにしました。
手順
Firebase Extensionsの ページ からBigQueryのExtensionsをInstall
InstallするGCPのプロジェクトを指定後、同期するBigQueryのリージョンやDataset、対象になるFirestoreのコレクションを指定して完了になります。
Installが完了すると、FirebaseのExtensionsのページに作成されたものが表示されます。
まとめ
いかがだったでしょうか、実装や運用もない状態で(verのアップデートは必要)、Firebaseのコンソールから数ステップでFirestoreとBigQueryが同期できるようになりました。
ただ、上記操作をするAPIなどがまだ提供されていないようなので、そこは今後のアップデートに期待したいところです。