我正在为Android开发一个个人健康记录管理应用程序,它目前使用Firestore作为其后端。
我想提供一个应用程序的免费版本,只在设备上存储数据。
一旦用户购买了月度订阅,我想切换回Firestore。
实现这种设置的最佳方式是什么?即使这是可能的,强制Firestore一直使用它的离线缓存似乎也不是一个好主意。
我是否应该使用第二个数据库在设备上存储数据,并在应用程序内购买后将数据迁移到Firestore?如果是这样,我可以在数据库选择和系统架构方面做些什么来让我的生活变得更容易?
发布于 2019-10-16 16:05:03
实现这种设置的最佳方式是什么?
最好的方法是使用一个额外的数据库在本地存储数据。
即使这是可能的,强制Firestore一直使用它的离线缓存似乎也不是一个好主意。
Cloud Firestore是而不是作为离线数据库构建的,是一个在线数据库,当你离线的时间从短到长都会继续工作。脱机时,尚未同步到服务器的挂起写入将保留在队列中。如果你做了太多写操作而没有在线同步它们,队列将快速增长,它不仅会减慢write操作,还会减慢你read操作。
如果是这样的话,我可以在数据库选择和系统架构方面做些什么来让我的生活更轻松?
在我看来,一个好的选择可能是Room Persistence Library,它是Android Jetpack的一部分。
发布于 2019-10-16 09:23:05
在您的情况下,一个很好的方法是在设备中维护本地数据库。购买后,使用workmanager将数据库记录推送到firestore,以使服务器数据库与本地数据库同步。接下来,首先在本地数据库中插入记录,然后将请求发送到工作管理器队列以将记录上载到服务器。这样对于应用程序来说,你的本地数据库就是唯一的真理来源。
当用户请求同步manually.This时,为现有用户或新用户提供从服务器到设备的同步记录,以便用户在任何设备中获取其数据库记录。
保持服务器数据库与本地is workmanager作业同步,并在指定适当的作业请求触发条件时顺利处理。
希望这能有所帮助。
https://stackoverflow.com/questions/58404407
复制相似问题