database - 如何将离线 HTML5 网络数据库与集中式数据库同步

标签 database html offline offline-browsing

我希望能够在 HTML5 (iPad) 网络应用程序中执行以下操作:

  • 将数据上传到在线数据库(如果我要在 SQLite 之类的东西中构建在线数据库,其大小可能 <50Mb)
  • 将数据的子集或完整副本提取到离线网络数据库
  • (走出3G网络覆盖范围)
  • 对下载的数据执行一系列分析型计算
  • 将我的计算参数保存到离线网络数据库
  • 重复,在较长时间内为多个不同的离线分析型计算 session 保存不同的参数集
  • (回到有 3G 网络覆盖的区域)
  • 将保存的参数从我的离线网络数据库同步到中央在线数据库

我对每一步都很满意,直到最后一步......

我正在尝试查找有关是否可以将离线网络数据库与中央数据库同步的信息,但找不到涵盖该主题的任何信息。是否有可能做到这一点?如果是这样,您能否提供相关信息的链接,或者详细描述它是如何工作的,以便为我的特定应用实现它?

提前致谢

最佳答案

我没有专门处理过 HTML5 本地数据库,但我处理过需要离线更新并重新同步到中央数据存储的移动设备。

无论数据集是在服务器上还是在离线客户端上创建的,我都确保它的主键是一个 UUID。我还确保在每次更新时为记录加上时间戳。

我也没有记下上次同步离线客户端的时间。

因此,当重新同步到中央数据库时,我首先向离线客户端查询自上次同步以来发生变化的记录。然后我查询中央数据库以确定自上次同步以来这些记录中是否有任何更改。

如果它们在中央数据库上没有改变,我会用离线客户端的数据更新它们。如果服务器上的记录自上次同步以来发生了变化,我会将它们更新到客户端。

如果 UUID 在中央服务器上不存在但在离线客户端上存在,我会插入它,反之亦然。

为了清除记录,我创建了一个“清除”列,当运行 sysnc 查询时,我从每个数据库中删除记录(或将其标记为非事件状态,具体取决于应用程序要求)。

如果自上次更新以来两条记录都发生了变化,我必须要么依靠用户输入来协调,要么依靠指定哪条记录“获胜”的规则。

我通常不信任内置的数据库导入功能,除非我要导入到一个完全空的数据库中。

关于database - 如何将离线 HTML5 网络数据库与集中式数据库同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4488854/

相关文章:

javascript - Ionic3/当连接从离线变为在线时如何让应用程序尝试加载图像?

svn - 离线工作的颠覆代理?

php - 在 preg_replace 中使用正则表达式来匹配 html href anchor 标记

javascript - 使用 href onclick 更新 div 而无需重新加载页面?

jquery - Jquery 如何判断一个元素是否存在于另一个元素中?

node.js - 如何在没有互联网的机器上安装nodejs项目?

php图片上传mysql数据库

java - 如何在应用程序启动时从 java 代码更改 Hibernate connection.url 属性

sql-server - 多答案问题的最佳数据库模型是什么

php - MySQL 跳过第一行