我的应用程序从服务器获取数据并将其保存在sqlite中,每行都有唯一的 serverId 。记录大于1000。
当应用程序重新启动时,我向用户显示sqlite数据(当没有互联网sqlite数据出现时),并在后台从服务器重新获取数据。
当从服务器收到重新获取的数据时,我应该怎么做: -
1 - 按一个查询删除所有记录,然后再次插入所有数据。 要么 2 - 通过在查询的WHERE子句中使用 serverId 进行匹配逐个更新所有行,插入服务器数据中的所有新行,删除新服务器数据中不存在但存在于sqlite中的所有行。
答案 0 :(得分:0)
这取决于数据更新的频率。如果数据更新频率与新启动时一样,大部分数据都必须更新 - 您甚至可以从服务器下载全新的数据库文件。但如果它只是略微更新 - 您应该逐个更新它。
如果您想要一个完美的解决方案,您可能应该保留数据库的版本,并让服务器决定是否更容易重新下载数据库,或更新更改的数据。
示例1:
该应用拥有数据库的v1
服务器有v2
v1
vs v2
diff是数据库大小的10% - >>使用diff(例如逐行)更新v1
到v2
会更容易。
例2:
该应用拥有数据库的v1
服务器有v2
v1
vs v2
diff是数据库大小的80% - >>完全重新下载数据库更容易(不浪费时间更新数据库)。