如何将脱机HTML5 Web数据库与集中式数据库同步

时间:2010-12-20 10:42:38

标签: database html5 offline offline-browsing

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

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

直到最后一步我都很舒服......

我正在尝试查找有关是否可以将离线网络数据库与中央数据库同步的信息,但无法找到涵盖该主题的任何内容。是否有可能做到这一点?如果是这样,你能否提供关于它的信息的链接,或描述如何为我的特定应用实现它的足够细节?

提前致谢

4 个答案:

答案 0 :(得分:6)

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

无论是在服务器上还是在脱机客户端上创建数据集,我都要确保其主键是UUID。我还确保每次更新时记录时间戳。

我也不知道上次离线客户端同步的时间。

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

如果他们在中央数据库上没有更改,我会使用来自脱机客户端的数据更新它们。如果自上次同步以来服务器上的记录已更改,我将其更新到客户端。

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

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

如果两个记录自上次更新后都已更改,我必须依赖用户输入进行协调或指定哪条记录“获胜”的规则。

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

答案 1 :(得分:1)

步骤:

  1. 在本地数据库中保留更改列表。
  2. 连接到远程数据库时,请检查自上次远程同步以来的任何更改。
  3. 如果远程端的更改与本地更改发生冲突,请通知用户该做什么。
  4. 对于所有其他更改,请继续同步:
    1. 下载所有未在本地更改的在线更改。
    2. 上传所有未远程更改的本地更改。
  5. 如果一方有数据转换器,这种方法实际上可以在任何数据库组合上工作。

答案 2 :(得分:0)

在我访问的几个网站上,我认为(只要您使用SQLite作为您的服务器数据库),它应该是可能的。

HTML5网络数据库也使用SQLite(虽然并非所有浏览器都支持它,但W3C似乎已经放弃了对它的支持)

所以...

如果使用.dump命令导出数据,然后使用$ sqlite mydb.db<将数据导入Web数据库。 mydump.sql语法你应该能够用php或java后端进行一些烦躁吗?

然后,当您想要将“离线”数据同步到服务器时,只需执行从webdatabase到dump.sql文件的相反转储并导入到服务器数据库

此站点介绍了向SQLite转储导出和导入

消息来源:dumping and restoring an SQLite DB

答案 3 :(得分:0)

HTML5支持浏览器db SQLite,我尝试过Mozilla和chrome,它运行正常。 我还有一个要求,我有一些离线表格,用户打孔数据并点击保存,它保存在本地浏览器数据库中,以后当用户与服务器同步或上线时,他可以点击实际同步数据的同步按钮从浏览器db任何其他数据源。