Firestore

Firestoregolang

Firestoreの書き込み速度の検証

結論 1つのcollectionに大量のdocumentを一括書き込みする際、500件のバッチ書き込みを20並列で実行したところ、以下の時間で完了した。 Firestoreの書き込み制限 Firestoreは書き込み時にいくつかの制限があります。詳しくは https://firebase.google.com/docs/firestore/quotas [https://firebase.google.com/docs/firestore/quotas?hl=ja] にあります。 今回気になったのは4番目の制限です。ある条件下では1つのcollectionに対するdocumentの書き込みは 1秒間に500件が上限、という事です。 ※2022/05/11 追記 制限について、以下のように変更されていました。「できなくは無いがパフォーマンスが悪くなるかも」という閾値のようです。 あるシステムのパフォーマンス調査をしていて、この上限のせいで遅くなってるかも?という話になりました。書き込み速度について調べていると以下の記事を見つけました。 Firestoreに負荷試験(L
Yu Takahashi
Yu Takahashi
8 min read
Firestoregolang

Firestoreの単一documentの読み込み速度の検証

結論 単一documentを連続で読み込むと、約 300/s 程度の速度は出せそう。 読み込み速度 前回は書き込み速度を測定 [https://medium.com/anti-pattern-engineering/firestore%E3%81%AE%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%81%BF%E9%80%9F%E5%BA%A6%E3%81%AE%E6%A4%9C%E8%A8%BC-8e1d4595a701] しましたが、今回は読み込み速度を調べました。 環境 * Google Compute Engine、e2-medium (2 vCPU、4GB メモリ) * Ubuntu 20.04 LTS * Docker 19.03.8 * Golang 1.14.9 * cloud.google.com/go/firestore 1.3.0 検証 単一のdocumentを、1秒毎に指定したrateの数だけ取得し、全ての取得処理が完了するまでの時間を測定します。これを指定した回数(今回は60回)繰り返しました。使用したコードは以下です。(crea
Yu Takahashi
Yu Takahashi
4 min read
TypeScriptDialogflowClean Archittecture

InversifyJSを使ってフロントエンドのTypeScriptでDIを実装してみた

クリーンアーキテクチャをTypeScriptで実装する際のDIをInversifyJSを使ってみた * Firebase & Firestore & Hosting * Nuxt.js & TypeScript を使い、サービスを実装する際にクリーンアーキテクチャを採用した。 その際のDIライブラリとしてInverstifyJSを選定 InversifyJSInversifyJS is a lightweight inversion of control (IoC) container for TypeScript and JavaScript apps.http://inversify.io/Remo H. Jansen [https://inversify.io/] 想定サービス レストランの一覧を取得するもの Firestore とりあえず今回はPublicなRestaurantデータを取得するものを作成、 データモデルはこんな感じ Clean Architecture 有名な図 これをもとにフロント側を実装 Inverstify JS GitHub -
Kohei Kondo
Kohei Kondo
5 min read
Firestore

Firestore Local Emulator のデータを擬似的に永続化する

Firestore Local Emulator にimport/export機能が追加されたらしいので、それを利用して擬似的に永続化しました。 Dockerを落とすたびにリセットされるデータ 最近、業務でFirestoreを使用した開発をしています。ローカルではエミュレータを起動し、それに接続しています。このエミュレータには個人的に不便なことがあり、データをメモリ上に保存しています。ローカルの開発にはDockerを使用しており、エミュレータもDocker上で動かしています。そのため、Dockerを落とすたびにデータが全消去されてしまいます。 何とかしたいなーと思いつつもいい方法が見つからず放置していましたが、少し前にこちらの記事を見つけ、最近import/export機能が実装されたことを知りました。 Firestore エミュレータのデータをローカル環境で import/export する - Qiita概要 Firebase エミュレータで Firestore の import/export ができるようになったので、導入方法について紹介します。これまで、エミュレータを再起
Yu Takahashi
Yu Takahashi
5 min read
FirestoreFirebase

待ちに待ったFirestoreにARRAY_CONTAINS_ANYとIN検索がキタ!!

v2.5.0よりの新機能 Features ・ introduces ARRAY_CONTAINS_ANY and IN to operator enum (2c8869d [https://www.github.com/googleapis/nodejs-firestore/commit/2c8869d23ad1aef024273b640579624cde97849f] ) Release v2.5.0 · googleapis/nodejs-firestoreFeatures introduces ARRAY_CONTAINS_ANY and IN to operator enum (2c8869d) Bug Fixes deps: bump google-gax to 1.7.5 (#786) (e5763ba)GitHubgoogleapis [https://github.com/googleapis/nodejs-firestore/releases/tag/v2.5.0]何が革命的か?? 例えば、自分が今持っている材料を条件に、料理一覧から対象の料理を持ってくるシステ
Kohei Kondo
Kohei Kondo
3 min read