mysql多客户端数据不同步_一种多终端设备上的数据同步方法

一种多终端设备上的数据同步方法

【技术领域】

[0001] 属于移动通信技术领域,特别是涉及基于离网环境下多种移动终端设备之间的数 据同步的方法。 技术背景

[0002] 90年代未,数据同步始于有线连接,如MAC机作为数据中心,与终端设备(iPod)通 过FireWire进行同步。2000年以后,云服务迅速发展,以PC/MAC机为代表的数据中心逐渐 转向了云端只要设备有网络,就可以使用,如通讯录,微信的消息备份与恢复,AppStore。

[0003] 近年来伴随着互联网和芯片技术的高速发展,移动终端设备的种类也越来越多。 移动终端设备是指可以在移动中使用的计算机设备,例如手机、笔记本、平板电脑、POS机甚 至包括车载电脑都属于移动终端设备,这些设备的出现,极大的方便和丰富了人们的工作 和生活,显著的优点促使人们根据自己的需求选择适合自己的智能终端设备。

[0004] 然而,人们在使用中经常需要对各种信息进行修改,导致在设备中的所储存的 数据信息需要比定期改变,而且同一种类型的数据需要存储在多种终端设备中,这样就产 生了一个需要保持各种终端中同类型数据的一致性和完整性问题。由于无线网络通信能力 自身存在的局限性,不能随时连接网络进行数据交换,使得离线应用的需求逐渐普及。

[0005] 在现有的技术中,解决此问题的方法主要是同步式的云服务访问方式,虽然这种 方法比较方便,但现有的大部分云服务并没有充分考虑移动客户端的特性,传输数据量很 大,为移动设备带来较大的计算资源消耗和网络带宽占用,使其响应并不流畅,无法高效便 捷地访问云服务。

[0006] 因此为满足人们于同时使用多种移动终端设备时各终端设备间对于数据同步的 要求,以及在访问数据过程中更加流畅、高效的体验要求,需要找到一种新型的数据同步方 法,以实现多种移动终端设备之间数据同步的一致性和用户体验的流畅性。该类应用不再 同步地与云交互,而是直接访问本地文件系统交换数据,取而代之的是,数据在后台与云端 进行通信,数据访问与同步两个过程是异步执行的。

【发明内容】

[0007] 针对现有技术的缺点的基础上,本发明的目的在于提供一种能够满足在离网环境 下多终端设备间的保持数据最终一致性的解决方式。

[0008] 为实现上述目的,本发明提供一种多终端设备上的数据同步方法,主要包括以下 几个步骤: (1) 在终端设备中识别出相应的变化对象并将其进行标注; (2) 将标注的变化对象写入到本地数据库; (3) 在本地数据库中,调取标注的变化对象,将其打上时间戳抽象为事务日志; (4) 将事务日志写入本地同步表中; (5) 终端设备后台启动同步服务,循环读取本地同步表中的事务日志,并将其批量提交 到服务器端,存入服务器端数据库中; (6) 提交成功的日志,将事务日志从本地同步表中删除; (7) 服务器端循环读取事务日志,逐条进行解析还原变化对象; (8) 另一终端设备接入后,从服务器端获取最新的事务日志; (9) 将获取的事务日志在本地数据库中回放; (10) 通过访问本地数据库中新的事务日志,记录事务日志的当前时间戳; (11) 数据同步工作完成后,即可通知上层界面去更新数据。

[0009] 进一步,所述步骤(1)中,根据业务逻辑划分变化对象,变化对象通过全局描述符 ⑶ID标识,变化对象之间的关系通过变化对象ID关联。

[0010] 进一步,所述步骤(2)中,本地数据库使用Sqlite数据库。

[0011] 进一步,所述步骤(3)中,设定变化对象的一次变化打上时间戳封装为一条事务日

[0012] 进一步,所述步骤(4)中,本地同步表是终端设备中维护的一个增量更新表,用于 记录事务日志。

[0013] 进一步,所述步骤(5 )中,服务器端数据库为MySQL或MongoDB等非关系型数据库。

[0014] 进一步,所述步骤(7)中,若服务器端在对象变化时做其它处理,仅需设置一系列 数据处理器,将事件分开处理。

[0015] 进一步,所设置的数据处理器还包括以下几个步骤: 将读取的事务日志提交到处理器; 处理完成的事务日志存储到本地数据库中; 等待其它终端设备获取并同步到本地。

[0016] 进一步,所述步骤(10)中,记录当前时间戳,用于下一次获取事务日志时,服务器 端计算这段时间内的增量日志列表。

[0017] 结合附图阅读本发明实施方式的详细描述后,本发明的其他特点和优点将变得更 加清楚。

[0018] 本方法与现有数据同步方案相比,具有以下几点优势:数据访问与数据同步分离, 用户信息的展示与用户的修改操作可以离线完成,本地操作快速体验好;服务器端不需要 提供若干的变化对象读写接口,仅需要维护一个数据同步接口和一系列注册后的任务处理 器,业务扩展仅增加任务处理器,体现了软件设计中的开闭原则;事务日志抽象成变化对象 的事务日志,而不是SQL语句,事务日志可以在客户端对接sqlite,在服务器端对接MySQL 或MongoDB等非关系型数据库;服务器端主要功能为事务日志透传与数据备份,能够在多 个应用中复用,节省了后台开发成本与开发时间。

【附图说明】

[0019] 下面结合附图与【具体实施方式】对本发明作进一步详细的说明: 图1为本发明的用于多终端设备上数据同步方法的流程图 图2为服务器端事务日志处理流程图。

【具体实施方式】

[0020] 为了使本发明的目的、技术方案和优点更加清楚,下面将对本发明的具体实施方 式作进一步的详细描述。

[0021] 参见图1,本实施例的适用于多终端设备上的数据同步方法,包括以下步骤: (1)在终端设备中识别出相应的变化对象并将其进行标注; 具体根据业务逻辑划分变化对象,变化对象通过全局描述符GUID标识,变化对象之间 的关系通过变化对象ID关联。

[0022] (2)将标注的变化对象写入到本地数据库; 本地数据库使用Sql

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534623.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oem监控mysql_OEM12c 安装配置MySQL Plug-in用来监控MySQL

Plug-in--注册信息[roottest agent]# /oem/emcli setup -urlhttps://omsdb.localdomain:7301/em -usernamesysmanOracle Enterprise Manager 12c 3.Copyright (c) 1996, 2013 Oracle Corporation and/or its affiliates. All rights reserved.The configuration directory &quo…

怎么利用迭代器写入mysql_range()是什么?为什么不生产迭代器?

本篇文章给大家带来的内容是关于range()是什么?为什么不生产迭代器?有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。迭代器是 23 种设计模式中最常用的一种(之一),在 Python 中随处可见它的身影&#x…

java 流式_Java开发笔记(七十二)Java8新增的流式处理

通过前面几篇文章的学习,大家应能掌握几种容器类型的常见用法,对于简单的增删改和遍历操作,各容器实例都提供了相应的处理方法,对于实际开发中频繁使用的清单List,还能利用Arrays工具的asList方法给清单对象做初始化赋…

java保留二位小数_java使double保留两位小数的多方法 java保留两位小数

复制代码代码如下:mport java.text.DecimalFormat;DecimalFormat df new DecimalFormat("######0.00");double d1 3.23456double d2 0.0;double d3 2.0;df.format(d1);df.format(d2);df.format(d3);3个结果分别为:复制代码代码如下:3.230.002.00java保留两位…

linux java jar打包_【Java】Java程序打包成jar包在Linux上运行

当需要把在Windows上开发的Java程序用在Linux上运行时,就需要吧该Java程序打包成jar包上传到Linux上去运行。1.Java程序用MyEclipse打包成可运行的jar包(1)在MyEclipse中选中需要打包的项目,点击右键,选择:Export... 如下图所示&a…

java匿名对象 回收_Java 匿名对象

我们知道一般实例化一个对象的格式,如下:Car car new Car();其中,变量名 car 就是 new Car() 这个对象的名字。car 是引用类型的变量,它的值存放的是对象的引用(或地址),通过 car 这个变量我们就可以间接使用对象。那…

java int 正则表达式_java正则表达式

Java正则表达式正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。Java正则表达式和Perl的是最为相似的。java.util.regex包主要包括以下三个类:Pattern类&#xf…

mysql.h 动态编译命令_Linux环境编译动态库和静态库总结

对Linux环境动态库和静态库的一些基础知识做一些总结,首先总结静态库的编译步骤。1 先基于.cpp或者.c文件生成对应的.o文件2将几个.o文件 使用ar -cr命令 生成libname.a文件libname.a 为静态库, name 为静态库的名字,可以根据模块功能命名。举…

netbeans java中文_Ubuntu 下jdk安装中文字体 java 解决netbeans 方块字 中文乱码

安装环境Ubuntu 11.04、javajdk1.6.0_27首先找到你需要的字体,比如我就是从windows系统里拷出来的,C:\WINDOWS\Fonts这里有很多字体,我只拷贝了simsun.ttc(中文 宋体,从xp系统拷贝的,win7 下没有这个文件)安装java后&a…

python 教学_「Python基础」一次就装好Python手把手装到好

一、前言:安装Python有两个主要的方法,视情况而定我两个都会用:(1)安装 AnacondaAnaconda像一个懒人包,安装它等于把Python安装好连同把Python大部分的套件也下载好了,不只如此连通较常用的Python IDE一同帮你装到好。…

java求二维数组每行的最大值_用JAVA输入一个二维数组a[3][4]的元素值,求输出其元素最大值...

展开全部这个简单啊,把所有元素遍历一边62616964757a686964616fe58685e5aeb931333335343963代码:import java.util.Scanner;public class Help2 {public static void main(String[] args) {Scanner inputnew Scanner(System.in);System.out.print("…

java redis 面试题_Java开发人员怎么面试 常见Redis面试题有哪些

Java开发人员怎么面试?常见Redis面试题有哪些?Redis是目前各大企业都在使用的人们技术,也是企业选拔人才时考核的一个难题。有很多同学只是简单了解Redis的应用,但对于为什么要用Redis以及企业面试中有关Redis的问题却答不上来。接…

java方法重载实事例_零基础java入门教程函数重载function实例化格式案例

java函数的重载,说白了就是函数块函数名一样,但函数类型和参数类型和参数列表个数不同重载之和参数列表有关系,与返回值无关java函数重载函数重载铺垫如下图函数重载铺垫上图功能显示,功能一致所以功能一致所以用的功能函数名一致…

java 类 属性数量_跟我学java编程—Java类的属性与成员变量

在定义类时,经常需要抽象出它的属性,并定义在类的主体中。下面就来介绍与属性相关的内容。常量属性在类中定义的属性有常量属性和成员属性之分。常量属性用final关键字修饰,常量只能赋值一次,在程序中不能修改它的值。一般来说&am…

java获取界面输入数字_通过JAVA设计 GUI 界面的计算器程序,用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、...

通过JAVA设计 GUI 界面的计算器程序,用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、2016-08-22 0 0 0 4.0分其他1积分下载如何获取积分?通过JAVA设计 GUI 界面的计算器程序,用户可以通过鼠标依次输入参加计算的数值&am…

java自定义错误码类_如何编写和应用Java的自定义异常类

11.7.1编写自定义异常类的模式编写自定义异常类实际上是继承一个API标准异常类,用新定义的异常处理信息覆盖原有信息的过程。常用的编写自定义异常类的模式如下:public class CustomException extends Exception {//或者继承任何标准异常类public Custom…

java对mysql查询_如何利用java对mysql数据库进行增删改查

代码如下:增:Test//数据插入public void demo1() {Connection connnull;Statement stmtnull;try {//注册驱动Class.forName("com.mysql.jdbc.Driver");//创建连接connDriverManager.getConnection("jdbc:mysql://localhost:3306/name&quo…

util.java_TelnetUtil.java

package com.ailk.ess.webapp2.servermng.net;import java.io.InputStream;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;import org.apache.commons.net.telnet.TelnetClient;public class TelnetUtil {//telnet客户端对象VT220/VT52Telnet…

生活中java继承例子_简单继承例子:java

通用类,来继承出圆和矩形。package circle;public class Geometric {private String color"white";private boolean filled;private java.util.Date dateCreated;public Geometric(){dateCreatednew java.util.Date();}public Geometric(String color,boo…

java技术简介英文_Java技术常见的英文缩写

1、 URL,Uniform Resource Location,统一资源定位符。2、 JDBC,Java DataBase Connectivity,Java数据库连接。3、 JSP,Java Server Pages,Java服务器页面。4、 JVM,Java Virtual Machine&#x…