我希望能够在 HTML5 (iPad) 网络应用程序中执行以下操作:
- 将数据上传到在线数据库(如果我要在 SQLite 之类的东西中构建在线数据库,其大小可能 <50Mb)
- 将数据的子集或完整副本提取到离线网络数据库
- (走出3G网络覆盖范围)
- 对下载的数据执行一系列分析型计算
- 将我的计算参数保存到离线网络数据库
- 重复,在较长时间内为多个不同的离线分析型计算 session 保存不同的参数集
- (回到有 3G 网络覆盖的区域)
- 将保存的参数从我的离线网络数据库同步到中央在线数据库
我对每一步都很满意,直到最后一步......
我正在尝试查找有关是否可以将离线网络数据库与中央数据库同步的信息,但找不到涵盖该主题的任何信息。是否有可能做到这一点?如果是这样,您能否提供相关信息的链接,或者详细描述它是如何工作的,以便为我的特定应用实现它?
提前致谢
最佳答案
我没有专门处理过 HTML5 本地数据库,但我处理过需要离线更新并重新同步到中央数据存储的移动设备。
无论数据集是在服务器上还是在离线客户端上创建的,我都确保它的主键是一个 UUID。我还确保在每次更新时为记录加上时间戳。
我也没有记下上次同步离线客户端的时间。
因此,当重新同步到中央数据库时,我首先向离线客户端查询自上次同步以来发生变化的记录。然后我查询中央数据库以确定自上次同步以来这些记录中是否有任何更改。
如果它们在中央数据库上没有改变,我会用离线客户端的数据更新它们。如果服务器上的记录自上次同步以来发生了变化,我会将它们更新到客户端。
如果 UUID 在中央服务器上不存在但在离线客户端上存在,我会插入它,反之亦然。
为了清除记录,我创建了一个“清除”列,当运行 sysnc 查询时,我从每个数据库中删除记录(或将其标记为非事件状态,具体取决于应用程序要求)。
如果自上次更新以来两条记录都发生了变化,我必须要么依靠用户输入来协调,要么依靠指定哪条记录“获胜”的规则。
我通常不信任内置的数据库导入功能,除非我要导入到一个完全空的数据库中。
关于database - 如何将离线 HTML5 网络数据库与集中式数据库同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4488854/