Firestore 作为离线持久性机制有多可靠?

2024-05-07

我目前使用 Firebase Firestore 作为主要后端,从各种来源检索数据。我还使用 Android 的 Room 作为我的移动后端。当手机接收到数据时,数据会存储在 Room 数据库中,以防用户几天甚至几周内不再上网。

查看设备文件后,我看到 firestore 将数据保存在以下文件中/data/data/<your-app>/databases目录。

The file looks something like this enter image description here

我已阅读 firestore 上的脱机持久性文档,但没有表明脱机持久性的持久性如何,它提到数据被缓存,但没有缓存多长时间。我的问题是,Firestore的离线持久化的持久性是多少。有人会建议使用它而不是使用成熟的本地数据库来存储可能不会在很长一段时间内(几天、几周)同步的数据吗?

一旦重新建立连接,它似乎已经可以很好地处理同步数据。我只是担心在某个时候该文件可能会被系统删除并且用户会丢失所有内容。


在 Android 上(截至撰写本文时)Firestore 使用 SQLite 作为持久性机制。因此,对于间歇性的离线活动,您应该不会遇到性能或耐用性问题。

但是,如果您要离线数天或数周(如您所说),则您应该注意以下事项:

表现

由于 Cloud Firestore 主要用于在线使用,因此尚未同步到服务器的挂起写入将保留在队列中。如果您执行许多挂起的写入操作而没有在线解决它们,则该队列将会增长,并会降低您的整体读/写性能。 Cloud Firestore 的大部分性能保证来自后端的索引和复制,但当您仅离线操作时,大多数优化都不存在。

冲突

Firestore 的基本冲突解决模型是“最后写入获胜”。因此,如果您有许多离线客户端写入同一份文档,则只有最后一个上线的客户端才会真正“获胜”并保留其更改。

Features

Firestore 的大多数功能都可以离线工作,但有一个主要例外:交易。交易只能在您在线时执行。因此,如果您的应用程序使用事务,如果没有一些特殊处理,它将无法正常离线工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firestore 作为离线持久性机制有多可靠? 的相关文章

随机推荐