And*_*ler 8 firebase google-cloud-firestore
Firestore会向我收取对本地缓存的数据的读取查询的费用,这对我来说似乎很奇怪,但在Firestore定价文档中,我找不到与之相反的任何说明。如果我强制Firebase进入脱机模式,然后对本地缓存的数据执行读取操作,我是否仍要为检索到的每个单独实体收费?
其次,我的应用程序中的脱机用户将多个小更新写入单个实体。我希望每次都将更改保留在本地(以防它们退出应用程序),但最终只需要最终一致地保存到云中即可。当用户重新连接到Internet并且Firestore刷新了本地更改时,是否将向我收取对该实体的单个写入请求,或者update
在脱机时对每个调用收取一次?
Firestore可能很适合我的用例,但是如果离线读写的收费与在线收费相同,那将不是一个负担得起的选择。
正如官方文档所说,
Cloud Firestore 支持离线数据持久化。此功能会缓存您的应用正在使用的 Cloud Firestore 数据的副本,以便您的应用可以在设备离线时访问这些数据。您可以写入、读取、侦听和查询缓存数据。当设备重新联机时,Cloud Firestore 会将您的应用所做的任何本地更改同步到远程存储在 Cloud Firestore 中的数据。
因此,每个使用 Firestore 数据库并设置PersistenceEnabled
为 true 的客户端都会维护自己的内部(本地)版本的数据库。当数据被插入/更新时,它首先被写入数据库的这个本地版本。因此,对数据库的所有写入都会添加到queue
. 这意味着一旦您重新上线,存储在那里的所有操作都将在 Firebase 服务器上提交。这也意味着这些操作将被视为独立的操作而不是整体。
但请记住,不要将 Firestore 用作仅离线数据库。它实际上是作为一个在线数据库设计的,可以在短到中途断开连接的情况下工作。离线时,它将保持写入操作队列。随着这个队列的增长,本地操作和应用程序启动会变慢。没什么大不了的,但随着时间的推移,这些可能会加起来。
如果Google Cloud Firestore
定价模型不太适合您的用例,则使用Firebase Realtime Database
. 正如Firebase 官方博客中的这篇文章中所述,您仍然可能想要使用实时数据库的原因之一是:
正如我们上面提到的,Cloud Firestore 的定价模型意味着每个客户端每秒执行大量小读取和写入的应用程序可能比实时数据库中执行类似的应用程序昂贵得多。
因此,选择哪个选项取决于您。
根据此如果您想使用 Cloud Firestore 完全离线工作,您可以通过以下方式禁用网络:
FirebaseFirestore.getInstance().disableNetwork()
Run Code Online (Sandbox Code Playgroud)
但是 firestore 会导致第一个用户获取请求的客户端脱机错误,您必须将此错误视为空响应。
归档时间: |
|
查看次数: |
1927 次 |
最近记录: |