一种增量分发sqlite数据的系统及方法技术方案

技术编号:39262614 阅读:11 留言:0更新日期:2023-10-30 12:15
本发明专利技术公开了一种增量分发sqlite数据的系统及方法,所述系统包括主节点写入器、主节点同步器和若干个子节点接收器,所述子节点接收器注册在主节点同步器中。在数据增量同步机制中,主节点写入器只将当前写入的修改分离出来,不会全量导出数据,解决了CPU消耗问题;主节点同步器只接受增量的修改并传输到子节点,解决了网络消耗问题;主节点同步器上连接着子节点的子节点接收器,当有增量数据需要同步时,立马就同步过去,解决了同步时效性,由于只在数据同步错误时才会全量重新同步,其他时候都只同步修改的数据,所以当数据量变得很大时依然不会有多少负担,解决了扩展性问题,具有较好的实用性。较好的实用性。

【技术实现步骤摘要】
一种增量分发sqlite数据的系统及方法


[0001]本专利技术属于数据同步处理的
,具体涉及一种增量分发sqlite数据的系统及方法。

技术介绍

[0002]Sqlite是一种文件型数据库,实现了自给自足的、无服务器的、零配置的、事务性的SQL数据库引擎。在业务的集群环境中,往往存在主节点+子节点的模式,其中主节点写入数据,剩余子节点只需要读取主节点的数据即可。如果此种模式中使用的是基于本地文件的sqlite数据库,那只能定时做数据库文件同步:主节点先dump出整个数据库文件,发送到子节点,子节点接受到文件后,使用load出来。其中sqlite提供dump和load功能。
[0003]由于sqlite数据库只有一个文件,在一个主节点写入、多个从节点读取的集群情况下,同步sqlite文件效率很低下,尤其是主节点将整个sqlitedump出来发送给子节点,子节点再load回去时,在长久的使用下,这个数据库文件可能有几百MB甚至达到GB级别,由此会造成性能下降、同步时间长等问题。即如果集群主节点和从节点不能增量的同步数据,那就需要完整的dump出整个数据库,并完整的load整个数据库,效率十分低下。在长期使用的数据库的情况下,这个文件可能达到GB级别,dump和load非常消耗资源和时间。
[0004]综上所述,现有技术中,当主节点向子节点同步数据时,可以先将整个sqlite数据库文件dump出来,然后发送给子节点,子节点接收到数据库备份后,将其load进当前数据库,完成数据的同步。存在以下缺点:<br/>①
CPU消耗:数据库的完整dump和load非常消耗CPU资源;

网络消耗:网络全量传输数据库文件耗时;

同步时效性:由于CPU消耗大+传输耗时长,所以需要设置同步间隔,比如5分钟或1小时同步一次;

扩展性:随着数据变大,消耗的CPU资源和网络传输资源,将占比越来越大,比如光是dump出1GB的数据库备份,就需要5分钟,还原也需要同样的时间,传输时间也变得很长,数据量增长最终导致同步机制不可持续扩展。

技术实现思路

[0005]本专利技术的目的在于提供一种增量分发sqlite数据的系统及方法,通过在主节点中增加主节点写入器,实现托管写入的数据写入方式,通过主节点同步器和子节点接收器的连接结构实现sqlite数据分发,本专利技术解决了在一主多从,主节点写入数据、从节点读取数据的情况下,无法高效同步sqlite数据的问题。集群主节点向子节点以sqlite语句的文本内容增量同步数据。
[0006]本专利技术主要通过以下技术方案实现:一种增量分发sqlite数据的系统,包括主节点写入器、主节点同步器和若干个子节点接收器,所述子节点接收器注册在主节点同步器中,用于实现通过主节点同步器建立
各个子节点接收器的独立会话;所述主节点写入器是调用者执行sqlite语句的桥梁,用于接收主节点sqlite语句并在主节点sqlite上执行,将执行结果返回给调用者,且在执行成功后分离出增、删、改的sqlite语句,并将分离好的sqlite语句发送给连接当前主节点的主节点同步器;所述主节点同步器用于记录主节点写入器发来的增、删、改的sqlite语句,并根据会话情况相应同步SQL语句给各个子节点接收器,所述子节点接收器用于将接收到的sqlite语句在子节点本地sqlite中执行。
[0007]本专利技术主要通过以下技术方案实现:一种增量分发sqlite数据的方法,采用上述的系统进行,包括以下步骤:步骤S1:当主节点数据写入时,不再直接向sqlite中写入,而是将sqlite语句提交给主节点写入器,实现将数据写入本地sqlite文件,并将写入的sqlite语句发送给连接到当前节点的主节点同步器;步骤S2:在主节点同步器中,记录主节点增、删、改的sqlite语句;处理子节点接收器的连接,并为每个子节点接收器创建各自独立的会话,以记录各自的sqlite语句同步情况;根据各个子节点接收器的会话的不同情况,同步sqlite语句给各个子节点接收器;步骤S3:在子节点接收器中,将接收到的sqlite语句在子节点本地sqlite中执行。
[0008]为了更好地实现本专利技术,进一步地,所述步骤S3中,在子节点业务服务启动时,子节点接收器将主节点的sqlite文件完整的拉取到当前节点;在使用时,子节点接收器将主节点的sqlite语句在当前节点执行一遍,并将执行结果反馈给主节点同步器。
[0009]为了更好地实现本专利技术,进一步地,若子节点中sqlite语句执行失败,则错误次数+1,当错误次数到达上限时,主节点同步器重新将主节点的sqlite数据库文件全量同步给子节点接收器;若执行成功,则主节点同步器将事件标记为已成功,继续执行时间线上下一个sqlite语句。
[0010]为了更好地实现本专利技术,进一步地,所述步骤S1中,主节点朝主节点写入器中执行sqlite语句,主节点写入器在主节点执行语句,如果是增、删、改类型的语句,会将语句记录都主节点同步器中。
[0011]为了更好地实现本专利技术,进一步地,包括以下步骤:步骤A1:主节点启动主节点写入器和主节点同步器;子节点启动子节点接收器;步骤A2:子节点的子节点接收器将自己注册到主节点的主节点同步器中;主节点同步器建立各个子节点接收器的独立会话;步骤A3:子节点接收器开始拉取主节点的初始数据;步骤A4:主节点业务服务启动,子节点业务服务启动;主节点朝主节点写入器中执行sqlite语句,主节点写入器在主节点执行语句,如果是增、删、改类型的语句,会将语句记录都主节点同步器中;步骤A5:主节点的主节点同步器将存储的sqlite语句,根据各个子节点接收器会话的同步情况,分发给各个子节点接收器;步骤A6:子节点接收器根据主节点同步器发来的sqlite语句,朝自己的节点中同样执行该sqlite语句,并将执行结果返回给主节点的主节点同步器;步骤A7:主节点同步器根据子节点接收器反馈的结果,做进一步的处理:若执行成功,则将事件标记为已成功,继续执行时间线上下一个sqlite语句;
若执行失败,则错误次数+1,当错误次数到达上限时,重新将主节点的sqlite数据库文件全量同步给子节点接收器。
[0012]本专利技术的有益效果如下:(1)本专利技术通过在主节点中增加主节点写入器,实现托管写入的数据写入方式,通过主节点同步器和子节点接收器的连接结构实现sqlite数据分发,本专利技术解决了在一主多从,主节点写入数据、从节点读取数据的情况下,无法高效同步sqlite数据的问题,最终实现集群主节点向子节点以sqlite语句的文本内容增量同步数据,具有较好的实用性。
[0013](2)本专利技术可以解决上述的现有技术中存在的4个缺点:在数据增量同步机制中,主节点写入器只将当前写入的修改分离出来,不会全量导出数据,解决了CPU消耗问题;主节点同步器只接受增量的修改并传输到子节点,解决了网络消耗问题;主节点同步器上连接着子节点的子节点接收器,当有本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种增量分发sqlite数据的系统,其特征在于,包括主节点写入器、主节点同步器和若干个子节点接收器,所述子节点接收器注册在主节点同步器中,用于实现通过主节点同步器建立各个子节点接收器的独立会话;所述主节点写入器是调用者执行sqlite语句的桥梁,用于接收主节点sqlite语句并在主节点sqlite上执行,将执行结果返回给调用者,且在执行成功后分离出增、删、改的sqlite语句,并将分离好的sqlite语句发送给连接当前主节点的主节点同步器;所述主节点同步器用于记录主节点写入器发来的增、删、改的sqlite语句,并根据会话情况相应同步SQL语句给各个子节点接收器,所述子节点接收器用于将接收到的sqlite语句在子节点本地sqlite中执行。2.一种增量分发sqlite数据的方法,采用权利要求1所述的系统进行,其特征在于,包括以下步骤:步骤S1:当主节点数据写入时,不再直接向sqlite中写入,而是将sqlite语句提交给主节点写入器,实现将数据写入本地sqlite文件,并将写入的sqlite语句发送给连接到当前节点的主节点同步器;步骤S2:在主节点同步器中,记录主节点增、删、改的sqlite语句;处理子节点接收器的连接,并为每个子节点接收器创建各自独立的会话,以记录各自的sqlite语句同步情况;根据各个子节点接收器的会话的不同情况,同步sqlite语句给各个子节点接收器;步骤S3:在子节点接收器中,将接收到的sqlite语句在子节点本地sqlite中执行。3.根据权利要求2所述的一种增量分发sqlite数据的方法,其特征在于,所述步骤S3中,在子节点业务服务启动时,子节点接收器将主节点的sqlite文件完整的拉取到当前节点;在使用时,子节点接收器将主节点的sqlite语句在当前节点执行一遍,并将执行结果反馈给主节点同步器。4.根据权利要求3所述的一种...

【专利技术属性】
技术研发人员:陈杨段平霞郑学新陈泉有
申请(专利权)人:成都安恒信息技术有限公司
类型:发明
国别省市:

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

1