CN114676199A - 一种同步方法、同步系统、计算机设备和存储介质 - Google Patents
一种同步方法、同步系统、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN114676199A CN114676199A CN202210474327.7A CN202210474327A CN114676199A CN 114676199 A CN114676199 A CN 114676199A CN 202210474327 A CN202210474327 A CN 202210474327A CN 114676199 A CN114676199 A CN 114676199A
- Authority
- CN
- China
- Prior art keywords
- data
- message queue
- relational database
- pipeline
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
Abstract
本发明公开了一种同步方法、同步系统、计算机设备和存储介质。在本发明的一个实施例中,该同步方法包括如下步骤:通过中间服务器的管道实时获取关系型数据库的更新信息;解析更新信息并将更新数据存储到消息队列;根据消息队列将更新数据同步到列式数据库。本发明通过中间服务器将关系型数据库和列式数据库相结合,使得系统可以同时具有两种数据库的优势,在数据处理技术领域具有实际的应用价值。
Description
技术领域
本发明涉及一种同步方法,尤其涉及一种将关系型数据库的数据同步到列式数据库的方法,同时涉及相应的同步系统、计算机设备和存储介质,属于数据处理技术领域。
背景技术
目前,互联网电子商务系统、企业办公自动化OA系统、企业资源计划ERP系统广泛应用,大数据高效的、实时的查询和报表展示越来越重要;传统的数据库大多数都是采用的关系型数据库,然而传统的关系型数据库对于大数据查询和报表的效率基本不是实时的,一般都是采用T+1,即第二天只能查询头一天的数据;而且当数据量超过亿级的时候,整体性能也会非常慢;这使得无法满足飞速发展的业务的需要。
在公开号为CN113934797A的中国专利申请中,公开了一种银行业超大数据同步方法。该方法包括如下步骤:应用系统登记待推送数据,生成数据推送表,触发定时同步任务;查询并设置推送参数表;查询数据推送表,判断数据推送表中是否存在待推送数据,若存在,则查询出待推送数据,并关联源表,若不存在,则结束任务;根据所述推送参数表,将所述待推送数据转化为对应推送格式后,发布至消息队列;通过ClickHouse消息队列引擎解析消息队列数据,并转发至消息队列表中;通过ClickHouse物化视图读取消息队列表中接收的数据,并根据数据转化规则,将数据写入目标数据表中存储。该发明能够实现数据通过消息队列存入列式数据库,但需要依赖数据推送表定时执行同步任务,无法实现数据的实时同步。
类似地,在公开号为CN112988916A的中国专利申请中,公开了一种针对ClickHouse的全量和增量同步方法,包括如下步骤:实时捕获原始数据的数据变化;将所述原始数据的数据变化转化为删除操作和插入操作;将所述删除操作和插入操作提交到数据处理队列;判断所述数据处理队列的当前队列的长度和等待的时间间隔是否达到预设阈值;当前队列的长度和等待的时间间隔中任一达到预设阈值时,基于所述数据处理队列,提交同步任务至ClickHouse,以完成数据变化的同步。该发明通过数据处理队列,当队列达到阈值后将数据推送到ClickHouse中进行数据抽取并存储,从而在一定程度上实现了数据的同步,然而由于使用阈值控制,存在实时性较差的问题,并且由于数据抽取操作是在ClickHouse中实现,使系统对ClickHouse产生了依赖,使得系统灵活性下降。
发明内容
本发明所要解决的首要技术问题在于提供一种同步方法,可以将关系型数据库的数据同步到列式数据库。
本发明所要解决的另一技术问题在于提供一种相应的同步系统。
本发明所要解决的又一技术问题在于提供一种相应的计算机设备和存储介质。
为了实现上述目的,本发明采用下述的技术方案:
根据本发明实施例的第一方面,提供一种应用于中间服务器的同步方法,包括如下步骤:
S20:通过中间服务器的管道实时获取关系型数据库的更新信息,所述更新信息为所述管道实时向所述关系型数据库发送的第一查询请求获得的,所述更新信息包括所述关系型数据库的更新数据;
S40:解析所述更新信息并将所述更新数据存储到消息队列;
S60:根据所述消息队列将所述更新数据同步到列式数据库。
其中较优地,所述同步方法还包括:
S10:获取所述关系型数据库的历史数据并存储到所述消息队列,根据所述消息队列将所述历史数据同步到所述列式数据库,所述历史数据为所述中间服务器的控制器向所述关系型数据库发送的第二查询请求获得的。
其中较优地,所述同步方法还包括:
S1:初始化守护计数器;
S2:利用预设置的第一守护进程实时监控所述管道与所述关系型数据库的第一连接关系、以及所述管道与所述列式数据库的第二连接关系,所述第一连接关系为通过向所述关系型数据库发送第一连接请求以获取第一连接信息获得的,所述第二连接关系为通过向所述列式数据库发送第二连接请求以获取第二连接信息获得的;
S3:判断所述守护计数器是否大于守护阈值,若大于则跳转至S4,若小于则响应于所述第一连接和/或第二连接的中断重新建立连接,并跳转到S2;
S4:利用预设置的第二守护进程实时监控所述第一守护进程,响应于所述第一守护进程的异常重启所述第一守护进程,并跳转至S1。
根据本发明实施例的第二方面,提供一种应用于关系型数据库的同步方法,包括如下步骤:接收中间服务器的管道实时发送的第一查询请求发送更新信息至所述管道,所述更新信息包括更新数据,以使得所述管道解析所述更新信息并将所述更新数据存储到消息队列,并根据所述消息队列将所述更新数据同步到列式数据库。
其中较优地,所述同步方法还包括:接收所述中间服务器发送的第二查询请求发送历史数据至所述控制器,以使得所述控制器将所述历史数据存储到消息队列,并根据所述消息队列将所述历史数据同步到列式数据库。
根据本发明实施例的第三方面,提供一种应用于列式数据库的同步方法,包括如下步骤:实时获取更新数据并存储,所述更新数据为中间服务器的管道实时向关系型数据库发送第一查询请求获取的更新信息、经所述管道从所述更新信息中解析出的并存储在所述消息队列中的。
其中较优地,所述同步方法还包括:获取历史数据并存储,所述历史数据为所述中间服务器的控制器实时向关系型数据库发送第二查询请求获取的、并存储在所述消息队列中的。
根据本发明实施例的第四方面,提供一种同步系统,包括关系型数据库、中间服务器和列式数据库,其中,所述中间服务器包括控制器、管道和消息队列,所述控制器被配置为:
S20:通过管道实时获取关系型数据库的更新信息,所述更新信息为所述管道实时向所述关系型数据库发送的第一查询请求获得的,所述更新信息包括所述关系型数据库的更新数据;
S40:解析所述更新信息并将所述更新数据存储到消息队列;
S60:根据所述消息队列将所述更新数据同步到列式数据库。
根据本发明实施例的第五方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的同步方法。
根据本发明实施例的第六方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的同步方法。
与现有技术相比较,本发明所提供的同步方法通过中间服务器的管道实时监测关系型数据库的更新信息,并通过消息队列实时将更新信息的更新数据存储到列式数据库中,从而在通过关系型数据库确保提供完整的事务支持的基础上,同时通过实时同步更新数据的列式数据库实现高效的实时查询能力,并具有对数据进行高频率、低延迟的修改和删除的能力;进一步的,本发明通过守护进程实时监控同步系统的运行情况,保证了系统能够长期、稳定的运行;具有实际应用价值。
附图说明
图1为本发明的一个实施例中,同步方法的流程图;
图2为本发明的一个实施例中,同步系统的结构图;
图3为本发明的一个实施例中,同步方法的泳道图;
图4为本发明的另一个实施例中,同步方法的泳道图;
图5为本发明的另一个实施例中,守护进程的流程图;
图6为本发明的一个实施例中,计算机设备的结构示意图。
具体实施方式
下面结合附图和具体实施例对本发明的技术内容进行详细具体的说明。
<第一实施例>
如图1所示,本发明的第一实施例公开了一种同步方法,应用于中间服务器,包括如下步骤:
S20:通过中间服务器的管道实时获取关系型数据库的更新信息,所述更新信息为所述管道实时向所述关系型数据库发送的第一查询请求获得的,所述更新信息包括所述关系型数据库的更新数据;
S40:解析所述更新信息并将所述更新数据存储到消息队列;
S60:根据所述消息队列将所述更新数据同步到列式数据库。
本实施例通过中间服务器的管道实时监测关系型数据库的更新信息,并通过消息队列实时将更新信息的更新数据存储到列式数据库中,从而在通过关系型数据库确保提供完整的事务支持的基础上,同时通过实时同步更新数据的列式数据库实现高效的实时查询能力,并具有对数据进行高频率、低延迟的修改和删除的能力;即同时具有关系型数据库和列式数据库的优点,能够支持事务的完整性和实时查询。
在一个具体的实施例中,如图2所示为本实施例的同步系统,包括关系型数据库、中间服务器和列式数据库,其中:
关系型数据库使用行式存储,目前常用的关系型数据库为MySQL,Postgresql,SQLServer和Oracle等,能够提供完整的事务支持,对于高频率的修改操作、删除操作具有较高的处理效率,但在处理大数据查询和报表时存在效率较低的问题,无法实现实时查询,而且当数据量超过亿级的时候整体性能会变慢。在本实施例中,关系型数据库为MySQL,该数据库支持将更新信息通过binlog的方式进行记录,同时支持主库和从库自动同步功能,能够实现本发明所述的关系型数据库的技术特性,而且该数据库在业界具有广泛的应用,占有较大的市场份额,具有较强的实用性。
列式数据库使用列式存储,目前主要的列式数据库为ClickHouse,其优点在于具有非常强大的查询效率,支持亿级以上数据量的查询,能够大幅降低数据读取数量、降低磁盘IO和网络IO的数量,同时提供计算性能的横向扩展,支持副本功能以实现数据容灾,但是对于高频率的修改操作、低延迟的修改操作和删除操作存在性能较差的问题,而且不能提供完整的事务支持。在本实施例中,列式数据库采用ClickHouse实现,该数据库在列式数据库领域占据较大市场份额,并且还支持云端接口调用能够实现本发明的列式数据库的技术特性,且具有较高的实用性。
所述中间服务器包括控制器、管道和消息队列。
所述管道实时监控关系型数据库的数据变化并将更新信息传递给控制器。在本实施例中,管道为Canal,Canal是用java开发的基于数据库的增量日志解析。Canal的工作原理是把自己伪装成MySQL的从库(slave),能够支持MySQL的binlog解析,并且能够模拟MySQL从库的交互协议向MySQL的主库发送dump协议,MySQL的主库收到Canal发送过来的dump请求,开始推送作为更新信息的binlog给Canal,然后Canal解析binlog获取更新数据并发送到所述控制器,从而通过Canal实现对关系型数据库的更新信息的实时获取。
所述消息队列是一种可以实现系统异步通信的中间件,常用于解决系统异步解耦和请求(TPS)削峰填谷的问题,在消息队列中定义了生产者,消费者,提供者三种角色,生产者作为消息的发送方,消费者作为消息的接收方,生产者和消费者统称为客户端。在发布订阅模型中,通过主题对消息进行路由,生产者可以将消息发到指定的主题,消费者订阅这个主题即可收到生产者发送的消息。一个生产者可以向一个或多个主题中发送消息,一个消费者也可以消费一个或多个主题中的消息,一个主题也可以有多个生产者或消费者,生产者和消费者只需要关联主题,而不用关心这消息由谁发送或者消费。提供者为每一个主题维护一个或多个队列来保存消息,消息在队列中遵循先进先出的原则。在本实施例中,消息队列采用RocketMQ实现。
所述控制器用于对整个同步过程进行中转和控制,通过管道实时获取关系型数据库的更新信息,具体的,所述更新信息为所述管道实时向所述关系型数据库发送的第一查询请求获得的,所述更新信息包括所述关系型数据库的更新数据。所述控制器解析所述更新信息并将所述更新数据存储到消息队列;根据所述消息队列将所述更新数据同步到列式数据库。本实施例能够将关系型数据库的更新数据实时同步到列式数据库中,通过将关系型数据库对完整事务的支持性能与列式数据库对查询的快速性能相结合,从而满足各系统的海量数据的应用。
具体的,如图3所示,以将MySQL的实时数据同步到ClickHouse为例进行说明:
第一步,中间服务器的管道向关系型数据库发送第一查询请求。
第二步,关系型数据库向管道发送更新信息。
在本实施例中,关系型数据库MySQL设置成主从备份模式,当主库有数据改变时,将自动同步到从库,即MySQL的主库将更新的数据自动同步到伪装成MySQL从库的管道Canal。具体的,当关系型数据库MySQL发生数据变化时生成binlog,并向从库发送更新信息,管道Canal作为MySQL的伪从属设备会监控MySQL的数据变化,所述中间服务器的控制器作为所述管道Cannal的客户端会接收到所述MySQL服务器发来的更新信息,从而实现所述中间服务器的管道向关系型数据库发送第一查询请求,并获取关系型数据库发送的更新信息。换句话说,关系型数据库接收管道实时发送的第一查询请求发送更新信息至所述管道,所述更新信息包括更新数据,具体包括新增数据、删除数据和修改数据。
第三步,中间服务器的控制器解析更新信息获取更新数据,并将更新数据存储到消息队列中。
在本实施例中,所述中间服务器的控制器收到关系型数据库MySQL发来的更新信息后,对该信息进行解析并按照所述消息队列的要求进行数据封装,所述封装操作包含但不限于指定消息的主题等操作。所述中间服务器的控制器作为所述消息队列的消息生产者将封装好的更新数据发送到所述消息队列的对应主题下,从而实现将更新数据存储到消息队列中。这种基于消息队列的方式可以实现异步消息生产,大大提高了数据传输的效率,可以支持多个消息生产者并行向消息队列发送消息,可支持多个进程同时进行异步传输。
第四步,中间服务器的控制器根据所述消息队列将所述更新数据同步到列式数据库。
在本实施例中,所述中间服务器的控制器作为所述消息队列的消费者,从队列中依次查询到待处理的更新数据,并对该更新数据进行封装后调用所述列式数据库ClickHouse的云端接口将更新数据同步到列式数据库中。由于任何消息队列的消费者都能够异步的从消息队列中获取消息数据,且可以保证先入先出的处理顺序,因此所述中间服务器的控制器作为所述消息队列的消息消费者也能够使用多进程异步的方式消费消息,即实现多个控制器同时、异步、有序地将更新数据通过云端接口存储到列式数据库中,具有较快的处理速度和较高的稳定性。
至此,完成将关系型数据库的数据实时同步到列式数据库。本实施例通过采用关系型数据库MySQL、列式数据库ClickHouse、管道Canal和消息队列RocketMQ,一方面利用关系型数据库实现完整的事务支持,具有高频率和低延迟的增加、修改和删除已存在数据的能力;另一方面利用列式数据库实现大容量数据查询功能,对超亿级数据量能够实现秒级分析响应,同时能够横向扩展计算性能,并且通过对数据的预聚合能力进一步提升数据查询的效率。
值得说明的是,本发明对关系型数据库的具体形式不做具体限定,对数据实时同步的频率设定不做具体限定,本领域技术人员应当根据实际应用需求进行设置,以实现业务需要为设计准则,在此不再赘述。
需要注意的是,控制器能够同时使用多个进程,例如使用多个进程进行生产,使用多个进程进行消费,本领域技术人员应当根据实际应用需求进行设置,以实现业务需要为设计准则,在此不再赘述。
考虑到关系型数据库中的存量数据,在一个可选的实施例中,所述同步方法还包括:
中间服务器的控制器获取所述关系型数据库的历史数据并存储到所述消息队列,根据所述消息队列将所述历史数据同步到所述列式数据库,所述历史数据为所述中间服务器的控制器向所述关系型数据库发送的第二查询请求获得的。
如图4所示,以将MySQL的数据同步到ClickHouse为例进行说明:
第一步,中间服务器的控制器从关系型数据库读取历史数据。
第二步,关系型数据库向控制器发送历史数据。
在本实施例中,中间服务器的控制器根据事先配置好的数据来源从关系型数据库MySQL请求数据,当关系型数据库MySQL响应控制器发出的读取历史数据请求时,将历史数据发送给所述中间服务器的控制器;即所述中间服务器向所述关系型数据库发送的第二查询请求获得历史数据。
第三步,中间服务器的控制器解析历史数据,并将历史数据存储到消息队列中。
在本实施例中,所述中间服务器的控制器收到关系型数据库MySQL的历史数据后,对该历史数据进行解析并按照所述消息队列的要求进行数据封装,所述封装操作包含但不限于指定消息的主题等操作。所述中间服务器的控制器作为所述消息队列的消息生产者将封装好的历史数据发送到所述消息队列的对应主题下,从而实现将历史数据存储到消息队列中。这种基于消息队列的方式可以实现异步消息生产,大大提高了数据传输的效率,能够支持多个消息生产者并行向消息队列发送消息能够支持多个进程同时异步的传输。
第四步,中间服务器的控制器根据所述消息队列将所述历史数据同步到列式数据库。
在本实施例中,所述中间服务器的控制器作为所述消息队列的消费者,从队列中依次查询到待处理的历史数据,并对该历史数据进行封装后调用所述列式数据库ClickHouse的云端接口将历史数据同步到列式数据库中。因为任何消息队列的消费者都可以异步的从消息队列中获取消息数据,且可以保证先入先出的处理顺序,因此所述中间服务器的控制器作为所述消息队列的消息消费者也能够使用多进程异步的方式消费消息,实现多个进程同时、异步、保序的将历史数据通过云端接口存储到列式数据库中,具有较快的处理速度和较高的稳定性。
在本实施例中,所述中间服务器的控制器(即消费者)根据订阅的消息进行消费,从而实现将关系型数据库的历史数据同步到所述列式数据库。
考虑到同步系统的稳定运行,在一个可选的实施例中,如图5所示,所述同步方法还包括:
S1:初始化守护计数器;
S2:利用预设置的第一守护进程实时监控所述管道与所述关系型数据库的第一连接关系、以及所述管道与所述列式数据库的第二连接关系,所述第一连接关系为通过向所述关系型数据库发送第一连接请求以获取第一连接信息获得的,所述第二连接关系为通过向所述列式数据库发送第二连接请求以获取第二连接信息获得的;
S3:判断所述第一连接关系和/或所述第二连接关系是否存在中断,若存在中断则判断所述守护计数器是否大于守护阈值,若大于则跳转至S4,若小于则响应于所述第一连接和/或第二连接的中断重新建立连接,所述守护计数器计数,并跳转到S2;
S4:利用预设置的第二守护进程实时监控所述第一守护进程,响应于所述第一守护进程的异常重启所述第一守护进程,并跳转至S1。
在本实施例中,利用第一守护进程和第二守护进程实时监控第一连接关系和第二连接关系,从而确保所述管道与所述关系型数据库、所述管道与所述列式数据库之间的通信连接是正常的,以确保关系型数据库的更新数据能实时同步到列式数据库中。
具体地:
S1:中间服务器的控制器初始化守护计数器。
在本实施例中,在第一连接出现中断、或第二连接出现中断、或第一连接和第二连接均出现中断时,使用守护计数器判断是否重新建立连接,或重启第一守护进程。
S2:第一守护进程查看第一连接关系和第二连接关系。
在本实施例中,利用第一守护进程实时监控所述管道与所述关系型数据库的第一连接关系,具体的,中间服务器的控制器通过向所述关系型数据库发送第一连接请求并接收到第一连接信息以确定第一连接关系为正常的,若未接收到第一连接信息则确定第一连接关系为中断的;同理,利用第一守护进程实时监控所述管道与所述列式数据库的第二连接关系,具体的,中间服务器的控制器通过向所述列式数据库发送第二连接请求并接收到第二连接信息以确定第二连接关系为正常的,若未接收到第二连接信息则确定第二连接关系为中断的。
S31:第一守护进程判断所述第一连接关系、或所述第二连接关系、或第一连接关系和第二连接关系是否存在中断。在本实施例中,当第一连接关系和第二连接关系中的任一个出现中断时跳转到S32,否则跳转到S2由第一守护进程继续监控第一连接关系和第二连接关系。
S32:第一守护进程判断守护计数器是否大于守护阈值,若大于则跳转至S4,若小于则跳转至S33。在本实施例中,守护阈值设置为2,当守护计数器小于2时跳转到S33,当守护计数器大于2时跳转至S4。
S33:第一守护进程重新建立第一连接、或者重新建立第二连接、或者重新建立第一连接和第二连接,并且守护计数器计数进行加1计数,然后跳转至S2由第一守护进程继续监控第一连接关系和第二连接关系。
S4:第二守护进程重启所述第一守护进程。在本实施例中,当连续查询第一连接关系、或第二连接关系、或第一连接关系和第二连接关系存在2次中断的情况下,认为第一守护进程处于异常工作状态,此时,由第二守护进程重启第一守护进程,从而确保关系型数据库的实时数据能够同步到列式数据库中,有效提高同步系统的稳定性。
值得说明的是,本发明对第一守护进程和第二守护进程不做具体限定,第一守护进程和第二守护进程可以为同时监控第一连接关系和第二连接关系;并且,第一守护进程和第二守护进程可以相互监测,当二者中的一个出现异常情况时,二者中的另一个能够对其重启以实现正常运行,本领域技术人员应当根据实际应用需求进行设置,以提高同步系统的稳定性为设计准则,在此不再赘述。
基于上述应用于中间服务器的同步方法,本发明还提供了一种应用于关系型数据库的同步方法,接收中间服务器的管道实时发送的第一查询请求发送更新信息至所述管道,所述更新信息包括更新数据,以使得所述管道解析所述更新信息并将所述更新数据存储到消息队列,并根据所述消息队列将所述更新数据同步到列式数据库。
本实施例通过中间服务器的管道实时监测关系型数据库的更新信息,并通过消息队列实时将更新信息的更新数据存储到列式数据库中,从而在通过关系型数据库确保提供完整的事务支持的基础上,同时通过实时同步更新数据的列式数据库实现高效的实时查询能力,并具有对数据进行高频率、低延迟的修改和删除的能力。具体实施方式参见前述实施例,在此不再赘述。
在一个可选的实施例中,所述同步方法还包括,接收所述中间服务器发送的第二查询请求发送历史数据至所述控制器,以使得所述控制器将所述历史数据存储到消息队列,并根据所述消息队列将所述历史数据同步到列式数据库。
本实施例通过将所述关系型数据库的历史数据存储到所述消息队列,通过消息队列将历史数据同步到列式数据库,具体实施方式参见前述实施例,在此不再赘述。
基于上述应用于中间服务器的同步方法,本发明还提供了一种应用于列式数据库的同步方法,实时获取更新数据并存储,所述更新数据为中间服务器的管道实时向关系型数据库发送第一查询请求获取的更新信息、经所述管道从所述更新信息中解析出的并存储在所述消息队列中的。
本实施例通过中间服务器的管道实时监测关系型数据库的更新信息,并通过消息队列实时将更新信息的更新数据存储到列式数据库中,从而在通过关系型数据库确保提供完整的事务支持的基础上,同时通过实时同步更新数据的列式数据库实现高效的实时查询能力,并具有对数据进行高频率、低延迟的修改和删除的能力。具体实施方式参见前述实施例,在此不再赘述。
在一个可选的实施例中,所述同步方法还包括,获取历史数据并存储,所述历史数据为所述中间服务器的控制器实时向关系型数据库发送第二查询请求获取的、并存储在所述消息队列中的。
本实施例通过将所述关系型数据库的历史数据存储到所述消息队列,通过消息队列将历史数据同步到列式数据库,具体实施方式参见前述实施例,在此不再赘述。
<第二实施例>
基于上述实施例的同步方法,如图2所示,本发明还提供了一种同步系统,包括关系型数据库、中间服务器和列式数据库,其中,所述中间服务器包括控制器、管道和消息队列,所述控制器被配置为:
S20:通过管道实时获取关系型数据库的更新信息,所述更新信息为所述管道实时向所述关系型数据库发送的第一查询请求获得的,所述更新信息包括所述关系型数据库的更新数据;
S40:解析所述更新信息并将所述更新数据存储到消息队列;
S60:根据所述消息队列将所述更新数据同步到列式数据库。
在本实施例中,所述同步系统通过中间服务器的管道实时监测关系型数据库的更新信息,并通过消息队列实时将更新信息的更新数据存储到列式数据库中,从而在通过关系型数据库确保提供完整的事务支持的基础上,同时通过实时同步更新数据的列式数据库实现高效的实时查询能力,并具有对数据进行高频率、低延迟的修改和删除的能力。本实施例的具体实施方式参见前述实施例,在此不再赘述。
<第三实施例>
本发明的另一个实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现:
S20:通过中间服务器的管道实时获取关系型数据库的更新信息,所述更新信息为所述管道实时向所述关系型数据库发送的第一查询请求获得的,所述更新信息包括所述关系型数据库的更新数据;
S40:解析所述更新信息并将所述更新数据存储到消息队列;
S60:根据所述消息队列将所述更新数据同步到列式数据库。
在实际应用中,所述计算机可读存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
<第四实施例>
如图6所示,本发明的另一个实施例提供的一种计算机设备的结构示意图。图6显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图6未显示,通常称为“硬盘驱动器”)。尽管图6中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图6所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图6中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理器单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的一种同步方法。
与现有技术相比较,本发明所提供的同步方法通过中间服务器的管道实时监测关系型数据库的更新信息,并通过消息队列实时将更新信息的更新数据存储到列式数据库中,从而在通过关系型数据库确保提供完整的事务支持的基础上,同时通过实时同步更新数据的列式数据库实现高效的实时查询能力,并具有对数据进行高频率、低延迟的修改和删除的能力。
上面对本发明所提供的同步方法、同步系统、计算机设备和存储介质进行了详细的说明。对本领域的一般技术人员而言,在不背离本发明实质内容的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。
Claims (10)
1.一种应用于中间服务器的同步方法,其特征在于包括如下步骤:
S20:通过中间服务器的管道实时获取关系型数据库的更新信息,所述更新信息为所述管道实时向所述关系型数据库发送的第一查询请求获得的,所述更新信息包括所述关系型数据库的更新数据;
S40:解析所述更新信息并将所述更新数据存储到消息队列;
S60:根据所述消息队列将所述更新数据同步到列式数据库。
2.如权利要求1所述的同步方法,其特征在于还包括:
S10:获取所述关系型数据库的历史数据并存储到所述消息队列,根据所述消息队列将所述历史数据同步到所述列式数据库,所述历史数据为所述中间服务器的控制器向所述关系型数据库发送的第二查询请求获得的。
3.如权利要求1或2所述的同步方法,其特征在于还包括:
S1:初始化守护计数器;
S2:利用预设置的第一守护进程实时监控所述管道与所述关系型数据库的第一连接关系、以及所述管道与所述列式数据库的第二连接关系,所述第一连接关系为通过向所述关系型数据库发送第一连接请求以获取第一连接信息获得的,所述第二连接关系为通过向所述列式数据库发送第二连接请求以获取第二连接信息获得的;
S3:判断所述第一连接关系和/或所述第二连接关系是否存在中断,若存在中断则判断所述守护计数器是否大于守护阈值,若大于则跳转至S4,若小于则响应于所述第一连接和/或第二连接的中断重新建立连接,所述守护计数器计数,并跳转到S2;
S4:利用预设置的第二守护进程实时监控所述第一守护进程,响应于所述第一守护进程的异常重启所述第一守护进程,并跳转至S1。
4.一种应用于关系型数据库的同步方法,其特征在于包括如下步骤:
接收中间服务器的管道实时发送的第一查询请求发送更新信息至所述管道,所述更新信息包括更新数据,以使得所述管道解析所述更新信息并将所述更新数据存储到消息队列,并根据所述消息队列将所述更新数据同步到列式数据库。
5.如权利要求4所述的同步方法,其特征在于还包括:
接收所述中间服务器发送的第二查询请求发送历史数据至所述控制器,以使得所述控制器将所述历史数据存储到消息队列,并根据所述消息队列将所述历史数据同步到列式数据库。
6.一种应用于列式数据库的同步方法,其特征在于包括如下步骤:
实时获取更新数据并存储,所述更新数据为中间服务器的管道实时向关系型数据库发送第一查询请求获取的更新信息、经所述管道从所述更新信息中解析出的并存储在所述消息队列中的。
7.如权利要求6所述的同步方法,其特征在于还包括:
获取历史数据并存储,所述历史数据为所述中间服务器的控制器实时向关系型数据库发送第二查询请求获取的、并存储在所述消息队列中的。
8.一种同步系统,包括关系型数据库、中间服务器和列式数据库,其中,所述中间服务器包括控制器、管道和消息队列,其特征在于所述控制器被配置为:
S20:通过管道实时获取关系型数据库的更新信息,所述更新信息为所述管道实时向所述关系型数据库发送的第一查询请求获得的,所述更新信息包括所述关系型数据库的更新数据;
S40:解析所述更新信息并将所述更新数据存储到消息队列;
S60:根据所述消息队列将所述更新数据同步到列式数据库。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:
该程序被处理器执行时实现权利要求1~3中任意一项所述的方法;
或者
该程序被处理器执行时实现权利要求4~5中任意一项所述的方法;
或者
该程序被处理器执行时实现权利要求6~7中任意一项所述的方法。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于:
所述处理器执行所述程序时实现权利要求1~3中任意一项所述的方法;
或者
所述处理器执行所述程序时实现权利要求4~5中任意一项所述的方法;
或者
所述处理器执行所述程序时实现权利要求6~7中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210474327.7A CN114676199A (zh) | 2022-04-29 | 2022-04-29 | 一种同步方法、同步系统、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210474327.7A CN114676199A (zh) | 2022-04-29 | 2022-04-29 | 一种同步方法、同步系统、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114676199A true CN114676199A (zh) | 2022-06-28 |
Family
ID=82080831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210474327.7A Pending CN114676199A (zh) | 2022-04-29 | 2022-04-29 | 一种同步方法、同步系统、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114676199A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115208899A (zh) * | 2022-06-29 | 2022-10-18 | 安阳师范学院 | 一种改进的p2p海量科学数据同步方法 |
CN117082117A (zh) * | 2023-10-16 | 2023-11-17 | 企查查科技股份有限公司 | 用户会话服务系统、用户会话的分布式管理方法及装置 |
-
2022
- 2022-04-29 CN CN202210474327.7A patent/CN114676199A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115208899A (zh) * | 2022-06-29 | 2022-10-18 | 安阳师范学院 | 一种改进的p2p海量科学数据同步方法 |
CN115208899B (zh) * | 2022-06-29 | 2023-06-06 | 安阳师范学院 | 一种改进的p2p海量科学数据同步方法 |
CN117082117A (zh) * | 2023-10-16 | 2023-11-17 | 企查查科技股份有限公司 | 用户会话服务系统、用户会话的分布式管理方法及装置 |
CN117082117B (zh) * | 2023-10-16 | 2024-01-26 | 企查查科技股份有限公司 | 用户会话服务系统、用户会话的分布式管理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10740196B2 (en) | Event batching, output sequencing, and log based state storage in continuous query processing | |
CN107038162B (zh) | 基于数据库日志的实时数据查询方法和系统 | |
US9009104B2 (en) | Checkpoint-free in log mining for distributed information sharing | |
CN112069265B (zh) | 配置数据的同步方法、业务数据系统、计算机系统和介质 | |
CN114676199A (zh) | 一种同步方法、同步系统、计算机设备和存储介质 | |
US20120030169A1 (en) | Application instance and query stores | |
US11010171B2 (en) | Efficient out of process reshuffle of streaming data | |
JP5686034B2 (ja) | クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム | |
CN113193947B (zh) | 实现分布式全局序的方法、设备、介质及程序产品 | |
CN110837423A (zh) | 一种自动导引运输车数据采集的方法和装置 | |
WO2024041022A1 (zh) | 数据库表变更方法、装置、设备和存储介质 | |
CN110968430A (zh) | 基于消息队列的处理方法和消息队列 | |
CN110781197A (zh) | 一种hive离线同步校验方法、装置及电子设备 | |
US20130179400A1 (en) | Intelligent data publishing framework for common data updates in large scale networks of heterogeneous computer systems | |
CN111338834A (zh) | 数据存储方法和装置 | |
CN110704401A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN116383207A (zh) | 一种数据标签管理方法、装置、电子设备和存储介质 | |
CN116701352A (zh) | 一种数据库数据迁移方法及系统 | |
CN115640310A (zh) | 用于业务数据聚合的方法和装置、电子设备和存储介质 | |
CN112948410A (zh) | 数据处理方法、装置、设备及介质 | |
CN113761051A (zh) | 消息推送方法、数据获取方法、装置、系统、设备和介质 | |
CN114222985A (zh) | 包括用于访问和管理利用和作业数据的数据库模式的系统和服务器 | |
CN113760977A (zh) | 一种信息查询方法、装置、设备及存储介质 | |
CN112732728A (zh) | 一种数据同步方法和系统 | |
CN113297002B (zh) | 数据库工作模式的切换方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |