我们有一个 Android 应用和一个 iPhone 应用(相同的功能),使用 sqlite 进行本地数据存储。这些应用程序最初没有任何数据,然后在第一次运行时从远程服务器接收数据并将其存储在 sqlite 数据库中。sqlite 数据库由服务器创建,并且应用程序下载它作为一个文件,然后使用该文件。按今天的标准,数据库文件不是非常大,但也不是很小 - 大约 5-6 MB。
现在,偶尔应用程序需要从服务器刷新数据。有几种方法可以考虑:
1.从服务器下载一个新的完整数据库,并替换现有的数据库。如果不重复下载 5-6 MB 的文件,这听起来是解决问题最简单的方法。应用程序会提示用户是否要下载更新,因此可能并不是太麻烦。
2.从服务器下载 delta 数据库,仅包含新/修改的记录以及有关要删除哪些记录的信息。这将导致更小的下载大小,但客户端的工作更加复杂。我需要读取一个数据库,并根据所读内容更新另一个数据库。据我所知,使用 sqlite 没有办法做类似于“insert into db1.table1 (select * from db2.table1)”的操作,其中 db1 和 db2 是包含相同结构的 table1 的两个 sqlite 数据库。(完整的 sqlite 数据库包含大约 10 张表,最大的表可能包含大约 500 条记录左右。)
3.以其他格式(json、xml 等)下载数据差异,并使用此信息更新应用程序中的数据库。与前面一样:服务器端没有太多问题,比完整数据库大小更小的下载大小,但更新过程相当繁琐。
你推荐哪种方法?或者也许有我错过的另一种方法?
非常感谢您的帮助。
现在,偶尔应用程序需要从服务器刷新数据。有几种方法可以考虑:
1.从服务器下载一个新的完整数据库,并替换现有的数据库。如果不重复下载 5-6 MB 的文件,这听起来是解决问题最简单的方法。应用程序会提示用户是否要下载更新,因此可能并不是太麻烦。
2.从服务器下载 delta 数据库,仅包含新/修改的记录以及有关要删除哪些记录的信息。这将导致更小的下载大小,但客户端的工作更加复杂。我需要读取一个数据库,并根据所读内容更新另一个数据库。据我所知,使用 sqlite 没有办法做类似于“insert into db1.table1 (select * from db2.table1)”的操作,其中 db1 和 db2 是包含相同结构的 table1 的两个 sqlite 数据库。(完整的 sqlite 数据库包含大约 10 张表,最大的表可能包含大约 500 条记录左右。)
3.以其他格式(json、xml 等)下载数据差异,并使用此信息更新应用程序中的数据库。与前面一样:服务器端没有太多问题,比完整数据库大小更小的下载大小,但更新过程相当繁琐。
你推荐哪种方法?或者也许有我错过的另一种方法?
非常感谢您的帮助。