基于SQLite的嵌入式数据库同步方法技术

技术编号:15225265 阅读:40 留言:0更新日期:2017-04-27 03:51
本发明专利技术公开了一种基于SQLite的嵌入式数据库同步方法,包括系统初始化、系统启动以及增量同步三个阶段。本发明专利技术建立在设备的数据库上,整个过程不需要额外增加专门处理同步事务的设备,节约了成本,符合嵌入式系统的特点。同时,本发明专利技术使用的数据库为SQLite,占用资源少、性能良好且无管理成本,满足嵌入式设备成本控制的需求,并保证了同步的可靠性与稳定性;通过数据库操作日志的方式防止因为网络传输造成的数据丢失,同步的数据库表可根据实际的需要进行灵活配置。

【技术实现步骤摘要】

本专利技术属于嵌入式数据库
,具体涉及一种基于SQLite的嵌入式数据库同步方法的设计。
技术介绍
在商业信息系统领域,嵌入式设备上所存储和管理的信息往往都是整个集成信息系统的一部分,而这些数据往往都需要与整个信息系统的数据进行同步和交互,随着嵌入式技术的发展和广泛应用,嵌入式数据同步和交互变得越来越重要。对于同步方式来说,目前数据同步主要是基于增量进行同步,即把一段时间内一个数据库变化的数据传输到另一个数据库,达到数据库一致,变化的数据主要有增加的数据,修改的数据,删除的数据。在这种方式下,如果最开始两个数据中的数据具备一定的差距,那么这部分差距就不能被同步。对于嵌入式信息系统来说,如果按照通常的思路,在同步系统中单独加入一个同步服务器或设备来处理同步的事务,那么必然会造成成本的增加;同时,嵌入式设备的网络环境存在不稳定的因素,需要解决由网络或者其他因素造成同步数据没有成功的问题。此外,实际应用场景中,设备的数据不一定是所有都需要同步,因此,同步的数据应该是可以灵活配置。对于嵌入式数据库来说,目前开源的只有两个比较成熟的项目:SQLite和BerkeleyDB。其中,只有SQLite支持SQL(StructuredQueryLanguage,结构化查询语言),它是一个轻量级、跨平台的关系型数据库,并且具有占用资源少、性能良好和零管理成本的优点。BerkeleyDB不是一个关系型数据库系统,而大多数的信息系统中都使用关系型数据库。
技术实现思路
本专利技术的目的是为了解决现有的嵌入式数据同步技术成本较高,且配置不够灵活的问题,提出了一种基于SQLite的嵌入式数据库同步方法。本专利技术的技术方案为:基于SQLite的嵌入式数据库同步方法,包括以下步骤:S1、配置用户自身设备在同步网络中的角色;在同步系统中,同步的设备被称为节点,系统中的节点分为master节点和slave节点两种,系统中只能有一个master节点,至少有一个slave节点;如果有多个slave节点,则通过配置节点号进行区别;S2、在同一个网段上为master节点和slave节点配置IP地址,并在master节点和slave节点上都建立FTP服务器;S3、master节点在本地建立一个soap服务器;S4、master节点和slave节点根据配置,在现有数据库结构的基础上,增加需要同步表的操作记录表,并在数据库中增加触发器,用于记录同步表中改变的主键ID以及该条记录的变动类型;S5、各个slave节点向master节点的soap服务器发送请求,请求获取master节点同步表的数据;S6、master节点依照先后顺序对各个请求作排队处理,并把master节点上的同步数据主动封装为slave节点能够识别的json日志文件,发送到当前处理到的slave节点的FTP服务器上;S7、收到json日志文件后,slave节点将其解析为SQL语句并执行,获得master节点上的同步数据;S8、master节点和slave节点判断同步表是否发生增加、删除或更新的操作,若是则进入步骤S9,否则进入步骤S10;S9、触发器在对应的操作记录表中记录下发生改动记录的ID和改变类型;S10、master节点和slave节点判断操作记录表中是否有内容,若有则进入步骤S11,否则进入步骤S13;S11、master节点和slave节点在封装的线程中进行处理,把记录封装为json日志,并删除操作记录表中触发器产生的对应记录;S12、master节点和slave节点检测到生成json日志后,发送线程向对方FTP服务器发送json日志;S13、master节点和slave节点检测FTP服务器上是否有接收到的json日志,若是则进入步骤S14,否则返回步骤S8;S14、解析线程解析json日志,开启数据库事务,生成对应的SQL语句并执行;S15、判断SQL语句是否执行成功,若是则进入步骤S16,否则进入步骤S17;S16、提交事务并删除对应的json文件,返回步骤S8进行循环;S17、事务回滚,返回步骤S8进行循环。进一步地,步骤S2中master节点需要配置一个或者多个slave节点的IP地址,slave节点则只需要配置master节点的IP地址。进一步地,步骤S4中操作记录表记录的内容包括数据库记录的ID以及该条记录的操作方式,操作方式分为增加、删除和更新三种。进一步地,步骤S9中如果slave节点因为解析master节点发送的日志而改变同步表的内容,那么slave节点由于先删除了触发器,将不会生成对应的操作记录,从而防止master节点和slave节点循环的生成同一个同步记录。进一步地,步骤S11中json日志的内容包括发生改变的数据库表名称、记录内容以及操作类型。进一步地,步骤S11中把记录封装为json日志的具体过程为:master节点和slave节点先读取同步记录表中记录的ID和操作类型,根据ID到对应同步表中读取数据,写入到json格式的文件中,并加上操作类型;当操作类型为删除时,记录内容只有记录的ID。进一步地,步骤S12中发送线程向对方FTP服务器发送json日志的具体规则为:slave节点只发送给master节点,发送线程依照json日志文件的文件名排序,依次发送给master节点的FTP服务器;master节点把一条记录生成多个slave节点对应的json文件,在发送时,master节点把对应的json文件发送到各个slave节点的FTP服务器。进一步地,步骤S14具体为:开启数据库事务,解析线程获得操作类型、操作的同步表以及记录内容后生成对应的SQL语句,该语句就是对方之前执行过的一个SQL语句,执行该条语句,该条操作就得到了同步。进一步地,步骤S14中slave节点在开启数据库事务之后需要删除记录同步表操作的触发器,防止执行同步后该条同步记录又被触发器记录,避免master节点和slave节点循环的同步同一个记录。进一步地,步骤S16中slave节点在提交事务之前需要把删除的对应触发器重新添加上。本专利技术的有益效果是:本专利技术建立在设备的数据库上,整个过程不需要额外增加专门处理同步事务的设备,节约了成本,符合嵌入式系统的特点。同时,本专利技术使用的数据库为SQLite,占用资源少、性能良好且无管理成本,满足嵌入式设备成本控制的需求,并保证了同步的可靠性与稳定性;通过数据库操作日志的方式防止因为网络传输造成的数据丢失,同步的数据库表可根据实际的需要进行灵活配置。附图说明图1为本专利技术提供的基于SQLite的嵌入式数据库同步方法流程图。图2为本专利技术实施例的数据库同步系统数据流向示意图。具体实施方式下面结合附图对本专利技术的实施例作进一步的说明。本专利技术提供了一种基于SQLite的嵌入式数据库同步方法,包括系统初始化、系统启动以及增量同步三个阶段。如图1所示,每个阶段具体包括以下步骤:(1)系统初始化阶段:S1、配置用户自身设备在同步网络中的角色。本专利技术使用的数据库为SQLite,它是一个轻量级、跨平台的关系型数据库,并且占用资源少、性能良好、无管理成本。在数据库同步系统中,同步的设备被称为节点,系统中的节点分为master节点和slave节点两种,系统中只能有一个本文档来自技高网...

【技术保护点】
基于SQLite的嵌入式数据库同步方法,其特征在于,包括以下步骤:S1、配置用户自身设备在同步网络中的角色;在同步系统中,同步的设备被称为节点,系统中的节点分为master节点和slave节点两种,系统中只能有一个master节点,至少有一个slave节点;如果有多个slave节点,则通过配置节点号进行区别;S2、在同一个网段上为master节点和slave节点配置IP地址,并在master节点和slave节点上都建立FTP服务器;S3、master节点在本地建立一个soap服务器;S4、master节点和slave节点根据配置,在现有数据库结构的基础上,增加需要同步表的操作记录表,并在数据库中增加触发器,用于记录同步表中改变的主键ID以及该条记录的变动类型;S5、各个slave节点向master节点的soap服务器发送请求,请求获取master节点同步表的数据;S6、master节点依照先后顺序对各个请求作排队处理,并把master节点上的同步数据主动封装为slave节点能够识别的json日志文件,发送到当前处理到的slave节点的FTP服务器上;S7、收到json日志文件后,slave节点将其解析为SQL语句并执行,获得master节点上的同步数据;S8、master节点和slave节点判断同步表是否发生增加、删除或更新的操作,若是则进入步骤S9,否则进入步骤S10;S9、触发器在对应的操作记录表中记录下发生改动记录的ID和改变类型;S10、master节点和slave节点判断操作记录表中是否有内容,若有则进入步骤S11,否则进入步骤S13;S11、master节点和slave节点在封装的线程中进行处理,把记录封装为json日志,并删除操作记录表中触发器产生的对应记录;S12、master节点和slave节点检测到生成json日志后,发送线程向对方FTP服务器发送json日志;S13、master节点和slave节点检测FTP服务器上是否有接收到的json日志,若是则进入步骤S14,否则返回步骤S8;S14、解析线程解析json日志,开启数据库事务,生成对应的SQL语句并执行;S15、判断SQL语句是否执行成功,若是则进入步骤S16,否则进入步骤S17;S16、提交事务并删除对应的json文件,返回步骤S8进行循环;S17、事务回滚,返回步骤S8进行循环。...

【技术特征摘要】
1.基于SQLite的嵌入式数据库同步方法,其特征在于,包括以下步骤:S1、配置用户自身设备在同步网络中的角色;在同步系统中,同步的设备被称为节点,系统中的节点分为master节点和slave节点两种,系统中只能有一个master节点,至少有一个slave节点;如果有多个slave节点,则通过配置节点号进行区别;S2、在同一个网段上为master节点和slave节点配置IP地址,并在master节点和slave节点上都建立FTP服务器;S3、master节点在本地建立一个soap服务器;S4、master节点和slave节点根据配置,在现有数据库结构的基础上,增加需要同步表的操作记录表,并在数据库中增加触发器,用于记录同步表中改变的主键ID以及该条记录的变动类型;S5、各个slave节点向master节点的soap服务器发送请求,请求获取master节点同步表的数据;S6、master节点依照先后顺序对各个请求作排队处理,并把master节点上的同步数据主动封装为slave节点能够识别的json日志文件,发送到当前处理到的slave节点的FTP服务器上;S7、收到json日志文件后,slave节点将其解析为SQL语句并执行,获得master节点上的同步数据;S8、master节点和slave节点判断同步表是否发生增加、删除或更新的操作,若是则进入步骤S9,否则进入步骤S10;S9、触发器在对应的操作记录表中记录下发生改动记录的ID和改变类型;S10、master节点和slave节点判断操作记录表中是否有内容,若有则进入步骤S11,否则进入步骤S13;S11、master节点和slave节点在封装的线程中进行处理,把记录封装为json日志,并删除操作记录表中触发器产生的对应记录;S12、master节点和slave节点检测到生成json日志后,发送线程向对方FTP服务器发送json日志;S13、master节点和slave节点检测FTP服务器上是否有接收到的json日志,若是则进入步骤S14,否则返回步骤S8;S14、解析线程解析json日志,开启数据库事务,生成对应的SQL语句并执行;S15、判断SQL语句是否执行成功,若是则进入步骤S16,否则进入步骤S17;S16、提交事务并删除对应的json文件,返回步骤S8进行循环;S17、事务回滚,返回步骤S8进行循环。2.根据权利要求1所述的基于SQLite的嵌入式数据库同步方法,其特征在于,所述步骤S2中master节点需要配置一个或者多个slave...

【专利技术属性】
技术研发人员:邹杰邹式论
申请(专利权)人:成都九洲电子信息系统股份有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1