对我来说,Firestore会向我收取本地缓存数据的读取查询,这似乎很奇怪,但我在Firestore Pricing document中找不到任何相反的澄清 . 如果我强制Firebase进入离线模式,然后对我本地缓存的数据执行读取操作,那么我仍然需要为我检索的每个实体付费吗?
其次,我的应用程序中的离线用户会向单个实体写入许多小更新 . 我希望每次更改都在本地持久化(如果他们退出应用程序),但我最终只需要一致的保存到 Cloud 端 . 当用户重新连接到互联网并且Firestore刷新本地更改时,我是否会向该实体收取一次写入请求,或者我在离线时按 update
呼叫收取一个请求?
Firestore可能非常适合我的用例,但如果离线读取和写入的收费与在线收费相同,那么它将不是一个经济实惠的选择 .
1 回答
正如offical documentation所说,
因此,每个使用Firestore数据库并将
PersistenceEnabled
设置为true的客户端都会维护它自己的数据库内部(本地)版本 . 插入/更新数据时,首先将其写入此数据库的本地版本 . 因此,对数据库的所有写入都将添加到queue
. 这意味着一旦您重新联机,存储在那里的所有操作都将在Firebase服务器上提交 . 这也意味着这些操作将被视为独立操作而不是整体操作 .但请记住,不要将Firestore用作仅限脱机的数据库 . 它实际上是作为一个在线数据库而设计的,可以在短时间内连接中断 . 离线时,它将保持写操作的队列 . 随着此队列的增长,本地操作和应用程序启动将变慢 . 没什么大不了的,但随着时间的推移,这些可能会增加
如果
Google Cloud Firestore
定价模型不能很好地适合您的用例,请使用Firebase Realtime Database
. 正如Firebase官方博客中的post中所提到的,您仍可能想要使用实时数据库的原因之一是:因此,您可以选择哪个选项 .