我们有一个使用 sqlite 进行本地数据存储的 android 应用程序和一个 iPhone 应用程序(相同的功能)。这些应用程序最初没有数据,然后在第一次运行时,它们从远程服务器接收数据并将其存储在 sqlite 数据库中。sqlite 数据库由服务器创建,应用程序将其下载为一个文件,然后用于购买应用程序。按照今天的标准,数据库文件不是很大,但也不是很小 - 大约 5-6 MB。
现在,有时,应用程序需要从服务器刷新数据。我能想到几种方法:
从服务器下载一个新的完整数据库并替换现有的。如果不是重复下载 5-6 MB,这听起来像是处理问题的最简单方法。这些应用程序确实会提示用户是否要下载更新,所以这可能不是太大的问题。
从服务器下载一个增量数据库,其中仅包含新的/修改的记录以及有关要删除哪些记录的某种形式的信息。这将导致下载大小更小,但客户端的工作更加复杂。我需要读取一个数据库,然后根据读取的内容更新另一个数据库。据我所知,sqlite 无法执行类似
insert into db1.table1 (select * from db2.table1)
wheredb1
和is 两个包含相同结构的db2
sqlite 数据库的操作。table1
(完整的 sqlite 数据库包含大约 10 个表,其中最大的一个可能包含大约 500 条记录左右。)以其他格式(json、xml 等)下载数据的增量,并使用此信息更新应用程序中的数据库。和以前一样:服务器端问题不大,下载量比完整数据库小,但更新过程相当痛苦。
您推荐三种方法中的哪一种?或者也许还有另一种我错过的方式?
提前谢谢了。