https://firebase.google.com/docs/firestore/manage-data/enable-offline
Firestore如何使用离线数据?
许多客户如何合并离线编辑相同数据的写入,然后同时联机?
离线数据有多长时间了?如果我的用户离线使用我的应用程序5年,然后重新上线,这是一个问题吗?设备重启后,离线更改是否仍然存在?
当数据集变大时,离线数据的查询性能是否会降低?
我对网络Firestore客户端特别感兴趣。
所有语言客户端是否都以相同的方式实现上述目标?
感谢。
答案 0 :(得分:5)
许多客户端如何合并脱机编辑离线编辑相同数据,然后同时联机的数据?
将在Firebase服务器上进行的写操作将按照该系列操作发生的顺序进行。最后一个操作(最新操作)将是在同步发生时在数据库中可用的操作。
离线数据可以保留多长时间?如果我的用户离线使用我的应用程序已有5年,然后又重新上线了,这会成为问题吗?
问题不在于设备离线时进行多少次操作。离线时,Firestore将使所有写操作排入队列。随着此队列的增加,本地操作和应用启动将变慢。没什么大不了的,但是随着时间的流逝,这些可能加起来。在这种情况下的主要问题是,最终结果将是服务器上的数据保持不变。那么,实时数据库的目的是什么? Firestore实际上是作为在线数据库设计的,可以在断开连接的短期到中期工作,而不是保持离线状态长达5年。除此之外,在5年内可能是兼容性问题,而不是写入次数问题。
重启设备后,离线更改是否仍然存在?
脱机持久性也称为磁盘持久性。默认情况下,Cloud Firestore中启用了这种类型的持久性,这意味着最近侦听的数据(以及从应用程序到数据库的所有挂起的写操作)都将持久化到磁盘。此缓存中的数据在应用程序重启和设备重启后仍然有效。
离线数据的查询性能会随着数据集的增大而降低吗?
是的,就像上面解释的那样。
所有语言客户端是否都以相同的方式实现上述目的?
不。对于iOS和Android,离线功能可以正常工作,而对于网络,此功能仍处于试验阶段。
答案 1 :(得分:0)
1)多个客户端应在单个Web浏览器中表现相同的多个选项卡。
对于网络,离线持久性是一项实验性功能,仅Chrome,Safari和Firefox网络浏览器支持。此外,如果用户打开多个指向同一Cloud Firestore数据库的浏览器选项卡,并且启用了脱机持久性,则Cloud Firestore仅在第一个选项卡中正常工作。
2)文档没有明确说明数据保留期是多长,而我假设这应该是应用程序卸载(或清除Web浏览器中的本地存储/缓存) - 重新启动设备/浏览器应该没有任何问题(除非它在退出时或在注销时不会清除本地缓存,例如,可能在浏览器信息亭模式下或在公共计算机上)。
3)因此这是基于noSQL的,当记录/文档数量增长太大时(没有查询缓存,类似于普通的数据库服务器都有),性能会受到影响。
禁用离线持久性和手动同步可能(虽然此功能仍处于测试阶段)提供了对如何/正在同步回云的更多控制 - 与假设只有一个客户端相比。他们可能仍然会改进这一点,一旦此功能被认为是稳定的,可能会更新文档。使用transactions似乎最有可能在那里有意义; RPC API文档内容为google.firestore。 v1beta1 (用于直接访问,而不是使用库)。
答案 2 :(得分:0)