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

mon*_*962 14 database html5 offline offline-browsing

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

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

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

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

提前致谢

小智 6

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

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

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

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

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

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

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

如果自上次更新以来两个记录都已更改,则必须依赖用户输入进行协调或指定哪个记录"获胜"的规则.

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


Sco*_*ttC 0

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

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

所以...

如果您使用 .dump 命令导出数据,然后使用 $sqlite mydb.db < mydump.sql 语法将数据导入到 Web 数据库中,您应该能够通过 php 或 java 后端来完成此操作?

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

该站点解释了从 SQLite 转储导出和导入

来源:转储和恢复 SQLite 数据库