我是移动开发者。我想只有一种用于在app中保存数据的工具(没有其他数据库)。 例如:非高级用户仅在离线模式下使用app中的数据,当他成为高级用户时,我们可能会将数据与云同步。 这种能力存在吗?如何实现呢?
答案 0 :(得分:7)
Cloud Firestore是一个在线数据库,可在您离线很短或更长时间后继续工作。但它仍然主要是一个在线数据库,不应该用作完全脱机的数据库。
这样做的一个原因是Firestore将本地突变保留在单独的队列中,直到它们被提交到服务器。当查询/读取命中本地数据时,Firestore客户端将从服务器获取的缓存读取与本地突变组合在一起。随着本地突变队列的增长,此操作变慢。只要客户端偶尔将数据同步到服务器,这种减速就不会很明显。但是,如果您将Firestore用作完全脱机的数据库,它将随着时间的推移而变得过高。
要详细了解Firestore客户端的工作原理,请查看Firestore JavaScript SDK中的这些(长)代码注释:
the persistence class,负责将数据存储在本地磁盘上
the local store class,它处理(a.o.)本地缓存和本地突变的读数。
答案 1 :(得分:5)
如果您需要脱机数据库,请不要使用Firebase。 Firebase将来会花费您很多钱。阅读具有3年以上Firebase使用经验的不满意的Firebase客户的这篇全文。
遗憾的是,我们一直在将Firebase用于我们的Goal Meter应用(Android和iOS),Weight Meter应用(Android)。我们的用户已经增长了很多年,现在我们的目标表应用程序已有大约100,000个活跃用户。其中约有95%是免费用户。 Firebase数据库的成本正在迅速增长,我们无法阻止免费的用户数据同步到Firebase在线数据库中。我们已决定为未来的项目改用另一家公司。 不要犯与我们相同的错误。如果您的应用程序需要脱机数据库(我想大多数应用程序都需要脱机数据库),则无论如何都应避免使用Firebase。转到其他解决方案,例如AWS。
关于这个荒谬的问题,我已经联系了Google Firebase团队。我只能想象一种情况,为什么Google Firebase团队会阻止全部脱机功能。原因是因为Firebase团队贪婪。毕竟,如果数据库处于脱机状态,它们如何使您付款?我们一直爱上Google的每一个产品。我们甚至在iOS 1之前生产Android版本,以支持Android和Google。 Firebase产品令人惊叹,但是这种“故意”禁用脱机功能的做法令人遗憾。对于Firebase团队和Google来说都是可耻的。
答案 2 :(得分:0)
另一种方法是允许用户创建帐户并提供试用期。如果他们决定注册高级访问权限,则所有数据都已同步到Firestore。这并不能解决您希望获得本地访问权限的问题,但可能是您可以选择的其他选项。