Joh*_*ebb 7 android data-sharing ios
安装程序
我有一个原生的iOS和Android应用程序,可以与我的网络服务器同步数据.应用程序的一个要求是它们脱机工作,因此数据存储在sqlite数据库中的应用程序中.
应用程序通过一系列REST调用与服务器进行通信,这些调用从服务器发送JSON,以便应用程序存储在其数据库中.
我的问题
这些数据的规模非常大,一些表可以有一百万条记录,而手机数据库的最终大小可以接近100mb.
REST端点必须限制其数据,并且必须使用不同的偏移多次调用才能实现整个同步.
所以我正在寻找提高这一过程效率的方法.
我的想法
我的想法是创建一个可以在服务器上运行的脚本,该脚本将从服务器数据库创建一个sqlite文件,压缩它并将其放在某个地方供应用程序下载.有效地创建服务器当前数据的快照.
应用程序将下载此快照,但仍需要调用其REST方法,以防自快照发生以来发生了某些变化.
问题
这会给我的webapp增加另一层复杂性,我想知道这是否是正确的方法.在同步大量数据时,人们会使用其他技术吗?
这是一个复杂的问题,因为答案应该取决于您的限制:
数据多久会改变一次?如果太频繁,那么快照将很快过时,因此应用程序将有效地大量更新数据。此外,对于大量数据,应用程序将在同步上浪费 CPU 时间(即使用户没有主动使用所有数据!),或者可能很快与服务器不同步 - 对于 iOS 来说尤其如此,因为与 Android 应用程序相比,应用程序的后台功能非常有限(只有小窗口,受到限制)。
该数据库是只读的吗?您是否正在向服务器发送更新?如果是这样,那么您需要准备冲突解决技术并涵盖数据被修改但不立即发布到服务器的情况。
当数据库方案发生变化时,您需要支持案例。在您的方法中,您需要为不同版本的应用程序准备好多个(初始)数据库。
如果没有对数据库进行太多更新并且常规下载方式效率不高(这就是您通常描述的:通过多个 REST 调用发送数百万条记录非常痛苦),您的想法很好。
但是,要小心碰壁:如果数据变化很大,并且您被迫每天在每台设备上更新数万/数十万条记录,那么您可能需要考虑一种完全不同的方法:可能需要您的应用程序仅支持部分离线模式(对于最近/重要的项目)或数据模型的混合方法(因此,如果用户想要编辑某些内容,则对最新数据执行实时请求)。
| 归档时间: |
|
| 查看次数: |
851 次 |
| 最近记录: |