Android:如何同时使用 Room 和 Firestore?

8
我写了一个应用程序,可以保存和使用Cloud Firestore数据库中的数据。为了更清晰地组织文件,例如使用DO和DAO,我希望进行改进。
我知道Android Room中存在“DAO”的概念。
然而,文档似乎将Android Room定义为“本地数据库”。因此,如果我理解正确,我不应该在Firestore之外再使用它?
顺便说一下,Firebase Cloud实时数据库(第三个数据库系统)也是如此。
编辑:
我没有理解“本地”数据库(Room)的概念。Tamir在他的回答中纠正了我。这个问题是离题的。
2个回答

13

所以如果我理解正确的话,我不应该在使用Firestore时再添加它吗?

是的,这是因为Cloud Firestore默认启用离线持久性

对于Android和iOS,默认情况下启用了离线持久性。要禁用持久性,请将PersistenceEnabled选项设置为false。

这意味着您默认情况下拥有本地数据库副本。因此,无需添加另一个数据库。


3
不完全同意。大多数人使用Firebase免费版(Spark),有限制的API调用次数。使用Room的目的是将本地数据库用于所有I/O操作,并在一天结束时使用异步作业将数据上传到Firestore,这样我们可以保持同步,并节省许多可能会产生费用的调用。 - JaviMar
1
@Javi Spark(免费)计划是用于开发而不是生产的。无论您是逐个更改还是在一天结束时进行所有更改,您始终会使用相同数量的写操作构建。 - Alex Mamo
嗨,Alex,我想知道,如果用户第二次打开应用程序并且数据没有更改,应用程序会再次下载数据还是使用本地副本? - Pradeep Behera
@AlexMamo “它将从本地缓存获取数据”这是真的吗?Doug说:“如果您有一个监听器因为应用程序进程被操作系统终止而被切断,然后在应用程序再次启动时重新连接,您将被收取另一个查询费用。”(https://stackoverflow.com/a/63428651/12208004)。 - user12208004
@user12208004 我认为这篇**文章**会解决你的疑惑。 - Alex Mamo
显示剩余2条评论

4

基本上,在开发应用程序时,您需要保存一些数据到本地,同时还有其他一些数据需要保存在远程数据库中。拥有远程和本地数据库并不是一件坏事。

我可以想到一些需要远程保存数据的例子,比如管理用户时,当创建新用户时,您需要检查用户名是否被占用,如果此数据仅存储在本地,则无法完成此操作。

而使用本地数据库的一个主要优势是写入和接收数据的速度比远程数据库更快。

这里有一篇关于这个话题的好文章。


1
我对“本地数据库”(Room)的概念理解不够充分,谢谢! - JarsOfJam-Scheduler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接