我有一个在线(postgresql)数据库,以及Android应用程序中数据库的本地副本。这些数据是同步的,因此应用程序可以脱机运行,但可以下载新数据并上传结果。数据通过http GET和POST请求传输。
同步已知表的数据没有问题,但是,我希望可以在在线数据库中创建新的表/更改表,并自动将这些更改反映在Android数据库中,即无需释放带有更新的同步代码的新版本。有没有明显/标准的方法可以做到这一点我还没有找到?我执行的Google搜索仅针对两个相同系统或已知架构的数据库迁移。
答案 0 :(得分:1)
有没有明显的/标准的方法可以做到这一点,我还没找到?
没有“标准”方式,但有一些方法可以根据您的要求以及您的应用的工作方式来实现。
这实际上是一个广泛的问题,但如果你仔细考虑一下就可以解决。
我的应用每天从服务器下载数据。部分下载过程涉及下载类似于以下内容的数据库版本文件(只是纯文本文件)。
db_version=12345
...以前版本的字符串表示形式(如果有的话)作为int值保存在SharedPreferences
中。
如果文件中的版本大于SharedPreferences
中的版本,则下载程序会提取一些文本文件,其中包含用于创建,删除,更改表等的SQL命令。只有在成功完成更改后才会执行下载程序拉取实际数据文件并更新数据库数据(不要忘记更新SharedPreferences
中的最新版本。)
如果文件中的版本与SharedPreferences
中的版本相同,那么下载显然只是正常的每日数据下载和数据库数据更新。