我正在为Android开发个人健康记录管理应用,目前将Firestore用作后端。
我想提供该应用程序的免费版本,该应用程序仅在设备上存储数据。
一旦用户购买了每月订阅,我想切换回Firestore。
实现这种设置的最佳方法是什么?即使有可能,强迫Firestore始终使用其离线缓存似乎也不是一个好主意。
在应用内购买后,我是否应该使用第二个数据库在设备上存储数据并将数据迁移到Firestore?如果是这样,我该如何选择数据库和系统体系结构以使我的生活更轻松?
实现这种设置的最佳方法是什么?
最好的方法是使用其他数据库在本地存储数据。
即使有可能,强迫Firestore始终使用其脱机缓存似乎也不是一个好主意。
Cloud Firestore是not构建为脱机数据库,是一种在线数据库,当您从短时间到较长时间脱机时,它仍可继续工作。脱机时,尚未同步到服务器的暂挂写入将保留在队列中。如果您在不在线的情况下进行过多写入操作,则该队列将快速增长,并且不仅会降低write
操作的速度,还会降低read
操作的速度。
如果是这样,我在数据库选择和系统架构方面可以做什么,使我的生活更轻松?
我认为,不错的选择可能是Room Persistence Library,它是Android Jetpack的一部分。
您的一个好方法是在设备中维护本地数据库。购买后,使用workmanager将数据库记录推送到firestore,以将服务器数据库与本地数据库同步。接下来,首先将记录插入本地db,然后将请求发送到workmanager队列,以将记录上传到服务器。通过这种方式,您的本地数据库成为真实情况的唯一来源。
当用户手动请求同步时,为现有或新用户从服务器到设备同步记录。这提供了一个选项,使用户可以在任何设备上获取其数据库记录。
与本地保持服务器数据库同步是Workmanager作业,当您指定适当的作业请求触发条件时,可以顺利处理。
希望这会有所帮助。