CN116049200A - 分析库数据更新方法、装置、计算机设备和介质 - Google Patents
分析库数据更新方法、装置、计算机设备和介质 Download PDFInfo
- Publication number
- CN116049200A CN116049200A CN202211577832.0A CN202211577832A CN116049200A CN 116049200 A CN116049200 A CN 116049200A CN 202211577832 A CN202211577832 A CN 202211577832A CN 116049200 A CN116049200 A CN 116049200A
- Authority
- CN
- China
- Prior art keywords
- message
- data
- library
- target
- service
- 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/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种分析库数据更新方法、装置、计算机设备、计算机可读存储介质和计算机程序产品,该方法包括:获取数据变更消息的采集配置信息、以及与业务库的实时业务数据变更事件对应的实时数据变更消息;在实时数据变更消息与采集配置信息匹配的情况下,将实时数据变更消息确定为目标消息;基于对目标消息进行解析处理得到的解析处理结果,对业务库对应的分析库进行增量数据更新。采用上述方法可以实现与实际分析场景关联的目标增量数据的实时采集,由于在数据更新过程中过滤掉了一部分非目标数据变更消息,大大降低了数据更新过程中的负载,有利于提高数据更新过程中的数据处理效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种分析库数据更新方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
背景技术
随着计算机技术的不断发展和大数据时代的来临,对数据的采集、存储、分析和管控等均提出了新的要求,同时,各个业务侧的业务数据的数据规模不断扩大、数据种类日益丰富,基于各业务侧的实时业务数据变更进行分析库的更新,以便基于分析库进行数据分析变得尤为必要。
传统的分析库数据更新方法,通过canal监听mysql binlog日志,推送消息到kafka的形式,实现分析库和业务库的同步更新,存在负载压力大、数据处理效率低的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高数据处理效率的分析库数据更新方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种分析库数据更新方法。所述方法包括:
获取数据变更消息的采集配置信息、以及与业务库的实时业务数据变更事件对应的实时数据变更消息;
在所述实时数据变更消息与所述采集配置信息匹配的情况下,将所述实时数据变更消息确定为目标消息;
基于对所述目标消息进行解析处理得到的解析处理结果,对所述业务库对应的分析库进行增量数据更新。
在其中一个实施例中,所述基于对所述目标消息进行解析处理得到的解析处理结果,对所述业务库对应的分析库进行增量数据更新,包括:
将所述目标消息存入消息缓存池;
在所述消息缓存池满足消息处理条件的情况下,对所述消息缓存池中的待处理消息进行解析处理,得到解析处理结果;所述待处理消息包括各所述目标消息中的至少一部分;
基于所述解析处理结果,对所述业务库对应的分析库进行增量数据更新。
在其中一个实施例中,所述采集配置信息还包括唯一键字段;所述方法还包括:
确定所述消息缓存池中存储的各所述目标消息各自的消息类型;
基于各所述消息类型和所述唯一键字段,从各所述目标消息中确定待处理消息。
在其中一个实施例中,所述消息类型包括插入型、更新型和删除型;所述基于各所述消息类型和所述唯一键字段,从各所述目标消息中确定待处理消息,包括以下三项中的至少一项:
针对插入型的各所述目标消息,根据各所述目标消息中各自的唯一键字段信息,对各所述目标消息进行去重处理,将去重后保留的各所述目标消息确定为待处理消息;
针对更新型的各所述目标消息,将同一唯一键字段信息所关联的各所述目标消息中,时间戳最接近当前时刻的所述目标消息确定为待处理消息;
针对删除型的各所述目标消息,将各所述目标消息均确定为待处理消息。
在其中一个实施例中,所述采集配置信息包括数据变更消息与分析库的字段映射关系;所述解析处理结果包括所述待处理消息中所携带的业务信息;
所述基于所述解析处理结果,对所述业务库对应的分析库进行增量数据更新,包括:
根据所述字段映射关系,确定所述业务信息在所述业务库中的映射位置、以及所述映射位置所对应的目标数据格式;
对所述业务信息进行格式转换,得到与所述业务信息对应的,满足所述目标数据格式的分析信息;
基于所述分析信息对所述业务库对应的分析库进行增量数据更新。
在其中一个实施例中,所述方法还包括:
获取分隔时间戳;
使用开源全量同步工具,对所述分隔时间戳之前业务库的历史数据进行全量采集,得到全量数据采集结果;
根据所述全量数据采集结果,对所述业务库对应的分析库进行全量数据更新;
获取与业务库的实时业务数据变更事件对应的实时数据变更消息,包括:
获取所述分隔时间戳之后,与业务库的实时业务数据变更事件对应的实时数据变更消息。
在其中一个实施例中,所述采集配置信息包括目标字段;所述方法还包括:
确定所述实时数据变更消息所包含的字段信息;
在所述字段信息与所述目标字段匹配的情况下,确定所述实时数据变更消息与所述采集配置信息匹配。
第二方面,本申请提供了一种分析库数据更新装置。所述装置包括:
获取模块,用于获取数据变更消息的采集配置信息、以及与业务库的实时业务数据变更事件对应的实时数据变更消息;
目标消息确定模块,用于在所述实时数据变更消息与所述采集配置信息匹配的情况下,将所述实时数据变更消息确定为目标消息;
增量数据更新模块,用于基于对所述目标消息进行解析处理得到的解析处理结果,对所述业务库对应的分析库进行增量数据更新。
在其中一个实施例中,增量数据更新模块包括:
缓存单元,用于将所述目标消息存入消息缓存池;
解析单元,用于在所述消息缓存池满足消息处理条件的情况下,对所述消息缓存池中的待处理消息进行解析处理,得到解析处理结果;所述待处理消息包括各所述目标消息中的至少一部分;
增量数据更新单元,用于基于所述解析处理结果,对所述业务库对应的分析库进行增量数据更新。
在其中一个实施例中,所述采集配置信息还包括唯一键字段;所述增量数据更新模块还包括:
待处理消息确定单元,用于确定所述消息缓存池中存储的各所述目标消息各自的消息类型,基于各所述消息类型和所述唯一键字段,从各所述目标消息中确定待处理消息。
在其中一个实施例中,所述消息类型包括插入型、更新型和删除型;所述待处理消息确定单元具体用于:
针对插入型的各所述目标消息,根据各所述目标消息中各自的唯一键字段信息,对各所述目标消息进行去重处理,将去重后保留的各所述目标消息确定为待处理消息;
针对更新型的各所述目标消息,将同一唯一键字段信息所关联的各所述目标消息中,时间戳最接近当前时刻的所述目标消息确定为待处理消息;
针对删除型的各所述目标消息,将各所述目标消息均确定为待处理消息。
在其中一个实施例中,所述采集配置信息包括数据变更消息与分析库的字段映射关系;所述解析处理结果包括所述待处理消息中所携带的业务信息;
所述增量数据更新单元具体用于:
根据所述字段映射关系,确定所述业务信息在所述业务库中的映射位置、以及所述映射位置所对应的目标数据格式;
对所述业务信息进行格式转换,得到与所述业务信息对应的,满足所述目标数据格式的分析信息;
基于所述分析信息对所述业务库对应的分析库进行增量数据更新。
在其中一个实施例中,所述装置还包括全量数据更新模块,用于:获取分隔时间戳;使用开源全量同步工具,对所述分隔时间戳之前业务库的历史数据进行全量采集,得到全量数据采集结果;根据所述全量数据采集结果,对所述业务库对应的分析库进行全量数据更新;
获取模块具体用于:获取所述分隔时间戳之后,与业务库的实时业务数据变更事件对应的实时数据变更消息。
在其中一个实施例中,所述采集配置信息包括目标字段;所述装置还包括匹配模块,用于:确定所述实时数据变更消息所包含的字段信息;在所述字段信息与所述目标字段匹配的情况下,确定所述实时数据变更消息与所述采集配置信息匹配。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述的分析库数据更新方法。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的分析库数据更新方法。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述的分析库数据更新方法。
上述分析库数据更新方法、装置、计算机设备、计算机可读存储介质和计算机程序产品,获取数据变更消息的采集配置信息、以及与业务库的实时业务数据变更事件对应的实时数据变更消息;在实时数据变更消息与采集配置信息匹配的情况下,将实时数据变更消息确定为目标消息;基于对目标消息进行解析处理得到的解析处理结果,对业务库对应的分析库进行增量数据更新。上述过程中,相当于基于采集配置信息与实时数据变更消息的匹配情况,对实时数据变更消息进行过滤,得到目标消息,再基于目标消息对分析库进行增量数据更新,可以根据实际分析场景的需求设置对应的采集配置信息,实现与实际分析场景关联的目标增量数据的实时采集,由于在数据更新过程中过滤掉了一部分非目标数据变更消息,大大降低了数据更新过程中的负载,有利于提高数据更新过程中的数据处理效率。
附图说明
图1为一些实施例中分析库数据更新方法的应用环境图;
图2为一些实施例中分析库数据更新方法的流程示意图;
图3为另一些实施例中分析库数据更新方法的流程示意图;
图4为一些实施例中分析库数据更新过程示意图;
图5为一些实施例中分析库数据更新装置的结构框图;
图6为一些实施例中计算机设备的内部结构图;
图7为另一些实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的分析库数据更新方法,可以应用于如图1所示的应用环境中。其中,业务端102可以通过网络与服务端104进行通信。数据存储系统可以存储服务端104需要处理的数据。数据存储系统可以集成在服务端104中的服务器上,也可以放在云上或其他服务器上。其中,业务端102的数量可以是一个也可以是多个,该业务端102包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端等。服务端104可以用独立的服务器或者是多个服务器组成的服务器集群来实现,也可以用终端实现,该终端包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端等。
具体地,业务端102上安装有业务系统,可以基于该业务系统进行业务数据的采集和存储,形成业务库。服务端104在基于业务数据进行分析库数据更新的过程中:获取数据变更消息的采集配置信息、以及与业务库的实时业务数据变更事件对应的实时数据变更消息;在实时数据变更消息与采集配置信息匹配的情况下,将实时数据变更消息确定为目标消息;基于对目标消息进行解析处理得到的解析处理结果,对业务库对应的分析库进行增量数据更新。
在一些实施例中,如图2所示,提供了一种分析库数据更新方法,以该方法应用于图1中的服务端104为例进行说明,包括以下步骤:
步骤S202,获取数据变更消息的采集配置信息、以及与业务库的实时业务数据变更事件对应的实时数据变更消息。
其中,数据变更消息是指基于消息中间件机制生成的消息。消息中间件是基于队列与消息传递技术,在网络环境中为应用系统提供同步或异步、可靠的消息传输的支撑性软件系统。采用消息中间件机制的系统中,不同的对象之间通过传递消息来激活对方的事件,完成事件的关联操作。该消息中间件例如可以是Kafka、RabbitMQ、RocketMQ等等。
进一步地,业务库是指业务侧用于存储业务数据的数据库。数据库(Database),简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。该业务库的类型可以是关系型数据库或非关系型数据库,总之,本申请对业务库的具体类型不作限定。可以理解,业务数据是指与业务侧的具体业务关联的数据,例如销售门店的销售数据、会员数据等等。业务库的实时业务数据变更事件是指,业务库实时发生的业务数据的变更事件,该业务数据变更的具体类型并不唯一,例如可以是数据新增、数据修改和数据删除等。采集配置信息是指针对数据变更消息的配置信息,可以包括消息的类别(topic)配置信息、字段映射关系、唯一键字段和目标字段,等等。
具体到本申请,服务端可以通过获取与业务库的业务数据变更事件对应的数据变更消息,实现分析库的增量数据更新。具体地,开发者可以根据实际分析场景的需求,设置数据变更消息的采集配置信息。在应用过程中,服务端一方面获取该采集配置信息,另一方面基于消息中间件生成与业务库的实时业务数据变更事件对应的实时数据变更消息。例如,服务端可以对业务库从库开启canal事件监听,生成对应的kafka消息到指定的topic。
在一个实施例中,实时数据变更消息为kafka消息,服务端具体根据采集配置信息动态创建添加kafka消费者,或者销毁被删除的kafka消费者,进行增量数据采集。具体地,服务端根据采集配置信息中的topic配置信息,在新增topic的情况下动态创建消费者,在删除topic的情况下动态删除消费者,以实现增量数据的采集。
步骤S204,在实时数据变更消息与采集配置信息匹配的情况下,将该实时数据变更消息确定为目标消息。
可以理解,由于采集配置信息的具体类型并不唯一,因此,实时数据变更消息与采集配置信息匹配的具体情况也不唯一。例如,实时数据变更消息与采集配置信息匹配,可以包括实时数据变更消息与topic配置信息匹配、实时数据变更消息中包含目标字段的字段信息、实时数据变更消息中包含唯一键字段的字段信息,或者,实时数据变更消息中包含字段映射关系所定义的映射字段的字段信息等各项条件中的至少一项。具体地,服务端将实时数据变更消息与采集配置信息进行匹配,在二者匹配的情况下,将该实时数据变更消息确定为目标消息,用于后续的分析库增量数据更新。在实时数据变更消息与采集配置信息不匹配的情况下,则过滤掉该实时数据变更消息。
在一个实施例中,实时数据变更消息中包含有签名信息,服务端在确定实时数据变更消息与采集配置信息匹配的情况下,还对该实时数据变更消息进行验签,在验签通过的情况下将该实时数据变更消息确定为目标消息,以确保目标消息的安全性。
在一个具体的应用中,采集配置信息包括目标字段。在该实施例的情形下,分析库数据更新方法还包括:确定实时数据变更消息所包含的字段信息;在字段信息与目标字段匹配的情况下,确定实时数据变更消息与采集配置信息匹配。
其中,目标字段可以由开发人员根据具体分析场景确定。字段信息与目标字段匹配,可以是指字段信息为目标字段的字段信息,也可以是指字段信息为目标字段的关联字段的字段信息。可以理解,消息由多个字段信息构成,各字段信息各自对应不同的字段。具体地,服务端在获取实时数据变更消息后,可以确定该实时数据变更消息所包含的字段信息,并将各字段信息与目标字段进行匹配,在实时数据变更消息中存在与目标字段匹配的字段的情况下,确定实时数据变更消息与采集配置信息匹配。
本实施例中,基于目标字段实现对实时数据变更信息的筛选,可以确保目标消息与实际场景的匹配度,有利于提高基于目标消息进行的增量数据更新的更新结果的准确性。
步骤S206,基于对目标消息进行解析处理得到的解析处理结果,对业务库对应的分析库进行增量数据更新。
其中,业务库对应的分析库,是指服务端用于对业务库的业务数据进行分析的数据库。增量数据更新是指在原有数据的基础上进行的数据更新。对目标消息进行解析处理,包括从目标消息中提取业务信息、以及对目标消息进行格式转换处理等过程。该业务信息可以包括业务数据、以及针对该业务数据的业务处理类型。该业务处理类型例如可以是插入数据、更新数据或删除数据等等。具体地,服务端对目标消息进行解析处理,得到该目标消息的解析处理结果,再基于该解析处理结果对业务库对应的分析库进行增量数据更新。
在一个具体的应用中,服务端根据目标消息的topic,确定器对应的topic配置信息,并根据字段映射关系或者自定义的handler(消息头)转换器,将目标消息转化成符合分析库数据格式的SQL语句,以便进行后续的增量数据更新处理。
在一个具体的应用中,采集配置信息还包括处理失败重试策略。具体地,开发者可以根据实际分析场景设置对应的失败重试策略。该失败重试策略例如可以包括延迟列队、定时调度等等。目标消息中可以携带处理状态标识,该处理状态标识的初始值用以表征消息未被处理,在目标消息对应的增量数据更新任务执行完成的情况下,服务端可以将该目标消息的处理状态标识修改为已处理标识。该已处理标识用以表征消息已被处理。这样,服务端可以对已处理消息进行过期处理,并对处理失败的消息进行重试处理。进一步地,若重试处理后仍然处理失败,则服务端一方面可以将该处理失败的目标消息进行持久化处理,将目标消息关联的业务信息存储至备用数据库,以便后续进行数据补偿,另一方面可以向开发者发送告警信息,以提醒开发者进行相应的处理。
上述分析库数据更新方法,获取数据变更消息的采集配置信息、以及与业务库的实时业务数据变更事件对应的实时数据变更消息;在实时数据变更消息与采集配置信息匹配的情况下,将实时数据变更消息确定为目标消息;基于对目标消息进行解析处理得到的解析处理结果,对业务库对应的分析库进行增量数据更新。上述过程中,相当于基于采集配置信息与实时数据变更消息的匹配情况,对实时数据变更消息进行过滤,得到目标消息,再基于目标消息对分析库进行增量数据更新,可以根据实际分析场景的需求设置对应的采集配置信息,实现与实际分析场景关联的目标增量数据的实时采集,由于在数据更新过程中过滤掉了一部分非目标数据变更消息,大大降低了数据更新过程中的负载,有利于提高数据更新过程中的数据处理效率。
在一些实施例中,分析库数据更新方法还包括:获取分隔时间戳;使用开源全量同步工具,对分隔时间戳之前业务库的历史数据进行全量采集,得到全量数据采集结果;根据全量数据采集结果,对业务库对应的分析库进行全量数据更新。在该实施例的情形下,获取与业务库的实时业务数据变更事件对应的实时数据变更消息,包括:获取分隔时间戳之后,与业务库的实时业务数据变更事件对应的实时数据变更消息。
其中,开源全量同步工具是指支持全量数据同步的工具,该开源全量同步工具例如可以是dataX工具、dbsync工具等等。具体地,开发人员可以根据需要设置分隔时间戳,然后以分隔时间戳为分界线,对分隔时间戳之前的业务库数据进行全量数据采集,对分隔时间戳之后的业务库数据进行增量数据采集,具体使用开源全量同步工具,对分隔时间戳之前业务库的历史数据进行全量采集,得到全量数据采集结果,根据全量数据采集结果,对业务库对应的分析库进行全量数据更新,并且,获取分隔时间戳之后,与业务库的实时业务数据变更事件对应的实时数据变更消息,基于实时数据变更消息进行增量数据更新。可以理解,根据实际分析场景的需求,开发人员可以灵活地设置分隔时间戳,例如,该分隔时间戳可以是当前时刻,也可以是未来的某一时刻。
在一个具体的应用中,服务端可以获取全量数据配置信息,并使用开源全量同步工具,对分隔时间戳之前业务库中,与全量数据配置信息匹配的历史数据进行全量采集,得到全量数据采集结果。其中,全量数据配置信息与数据变更消息的采集配置信息对应,以确保全量采集数据与增量采集数据的一致性。
本实施例中,以分隔时间戳为分界线,采用不同的工具分别进行全量数据采集和增量数据采集,有利于进一步提高数据更新效率。
在一些实施例中,步骤S206包括:将目标消息存入消息缓存池;在消息缓存池满足消息处理条件的情况下,对消息缓存池中的待处理消息进行解析处理,得到解析处理结果;基于解析处理结果,对业务库对应的分析库进行增量数据更新。
其中,待处理消息包括各目标消息中的至少一部分。消息处理条件可以是时间条件,也可以是数据量条件。该时间条件例如可以是距离上一次缓存池处理消息的时间间隔达到设定时间间隔,该数据量条件例如可以是消息缓存池中缓存的数据量达到了设定数据量。具体地,服务端将目标消息存入消息缓存池,然后判断消息缓存池是否满足消息处理条件,并在消息缓存池满足消息处理条件的情况下,对消息缓存池中的待处理消息进行解析处理,得到解析处理结果,然后再基于解析处理结果,对业务库对应的分析库进行增量数据更新。
在一个具体的应用中,服务端在对消息缓存池中的待处理消息进行解析处理,得到待处理消息中携带的业务数据后,还基于有序集合(redis zset)对该业务数据进行缓存处理,以进一步确保分析库与业务库的解耦,避免因频繁操作而引起的分析库的性能问题。进一步地,在对业务数据进行缓存处理的过程中,还可以根据数据量进行key拆分,防止出现大key,提高消费能力。在一种可能的实现中,服务端还可以在每次操作redis缓存时,重置key的有效期,使其续期,同时监听key的过期事件,以便进行后续的数据持久化操作,这样一来,冷数据也不至于长期持有redis key,有利于提高缓存的利用率。
需要说明的是,在其他实施例中,服务端也可以先对目标消息进行解析处理,将解析处理后得到的业务数据存储至缓存,然后,在缓存数据的数据量达到预设数据量,或者时间间隔达到预设时间间隔的情况下,基于缓存中的业务信息对分析库进行增量数据更新。
本实施例中,通过引入消息缓存池,使得多个目标消息可以同步处理,能够避免对分析库的频繁操作所引起的性能问题,进而提高分析库数据更新方法的可靠性。
在一个实施例中,采集配置信息还包括唯一键字段。在该实施例的情形下,分析库数据更新方法还包括:确定消息缓存池中存储的各目标消息各自的消息类型;基于各消息类型和唯一键字段,从各目标消息中确定待处理消息。
其中,消息类型是指该目标消息对应的业务数据变更类型,具体可以包括插入型、更新型和删除型。可以理解,插入型消息用以表征向业务库中插入某些业务数据,更新型消息用以表征将业务库中的某些原业务数据替换成新业务数据,删除型消息用以表征删除业务库中的某些业务数据。唯一键字段是指消息中可以作为唯一标识的字段。该唯一键字段可以是消息中所携带的业务数据在业务库中的索引。具体地,服务端可以根据目标消息的消息内容,确定消息缓存池中存储的各目标消息各自的消息类型,然后,基于各消息类型和唯一键字段,从各目标消息中确定待处理消息。
在一个具体的应用中,消息类型包括插入型、更新型和删除型。在该实施例的情形下,基于各消息类型和唯一键字段,从各目标消息中确定待处理消息,包括以下三项中的至少一项:针对插入型的各目标消息,根据各目标消息中各自的唯一键字段信息,对各目标消息进行去重处理,将去重后保留的各目标消息确定为待处理消息;针对更新型的各目标消息,将同一唯一键字段信息所关联的各目标消息中,时间戳最接近当前时刻的目标消息确定为待处理消息;针对删除型的各目标消息,将各目标消息均确定为待处理消息。
其中,唯一键字段信息是指唯一键字段对应的字段信息。如前文所述的,插入型消息用以表征向业务库中插入某些业务数据,在实际业务场景中,可能存在重复插入数据的情况,基于此,服务端针对inset消息,根据唯一键字段信息进行去重,并将去重后保留的各目标消息确定为待处理消息。更新型消息用以表征将业务库中的某些原业务数据替换成新业务数据,在实际业务场景中,可能存在针对同一业务数据进行多次更新的情况,基于此,服务端针对update消息,将同一唯一键字段信息所关联的各目标消息中,时间戳最接近当前时刻的目标消息确定为待处理消息。而针对删除类消息(delete消息),处理器之间将各目标消息均确定为待处理消息,进行批量删除。
本实施例中,基于消息类型和唯一键字段进行消息去重等处理,从消息缓存池中的各目标消息中确定待处理消息,可以避免重复操作所引起的算力浪费,有利于进一步提高消息处理效率。
在一个实施例中,采集配置信息包括数据变更消息与分析库的字段映射关系;解析处理结果包括待处理消息中所携带的业务信息。在该实施例的情形下,基于解析处理结果,对业务库对应的分析库进行增量数据更新,包括:根据字段映射关系,确定业务信息在业务库中的映射位置、以及该映射位置所对应的目标数据格式;对业务信息进行格式转换,得到与业务信息对应的,满足目标数据格式的分析信息;基于分析信息对业务库对应的分析库进行增量数据更新。
其中,业务信息包括业务数据、以及针对业务数据的业务处理类型,例如插入某些业务数据或删除某些业务数据。字段映射关系用以表征消息与业务库的映射关系,具体用以表征消息中字段与业务库中的表位置的映射关系。具体地,服务端根据字段映射关系,可以确定业务信息在业务库中的映射位置、以及该映射位置所对应的目标数据格式。然后,服务端对业务信息进行格式转换,得到与业务信息对应的,满足目标数据格式的分析信息。可以理解,该分析信息同样包括业务数据、以及针对业务数据的业务处理类型。最后,服务端再基于分析信息对业务库对应的分析库进行增量数据更新,实现数据持久化。进一步地,进行数据格式转换的工具可以是通用转换器,也可以是自定义的handler转换器。
本实施例中,基于字段映射关系实现增量数据更新,用户只需要配置字段映射关系,就可以达到采集复用的目的,新表的采集变得极其简单,并且,特殊逻辑的处理只需要做简单的二次开发进行插入即可实现,可以提高分析库数据更新方法的灵活性。
在一些实施例中,如图3所示,分析库数据更新方法包括:
步骤S301,获取分隔时间戳;
步骤S302,使用开源全量同步工具,对分隔时间戳之前业务库的历史数据进行全量采集,得到全量数据采集结果;
步骤S303,根据全量数据采集结果,对业务库对应的分析库进行全量数据更新;
步骤S304,获取数据变更消息的采集配置信息、以及分隔时间戳之后与业务库的实时业务数据变更事件对应的实时数据变更消息;
其中,采集配置信息包括目标字段、唯一键字段、以及数据变更消息与分析库的字段映射关系;
步骤S305,确定实时数据变更消息所包含的字段信息;
步骤S306,在字段信息与目标字段匹配的情况下,确定实时数据变更消息与采集配置信息匹配,将该实时数据变更消息确定为目标消息;
步骤S307,将目标消息存入消息缓存池;
步骤S308,确定消息缓存池中存储的各目标消息各自的消息类型;
步骤S309,基于各消息类型和唯一键字段,从各目标消息中确定待处理消息;
步骤S310,在消息缓存池满足消息处理条件的情况下,对待处理消息进行解析处理,得到解析处理结果;
其中,解析处理结果包括待处理消息中所携带的业务信息;
步骤S311,根据字段映射关系,确定业务信息在业务库中的映射位置、以及该映射位置所对应的目标数据格式;
步骤S312,对业务信息进行格式转换,得到与业务信息对应的,满足目标数据格式的分析信息;
步骤S313,基于分析信息对业务库对应的分析库进行增量数据更新。
为便于理解,下面以kafka消息为例,对分析库数据更新方法进行详细说明。
具体地,如图4所示,分析库数据更新方法包括以下步骤:
步骤一、配置分隔时间戳,使用datax工具,对时间戳之前的历史数据进行全量采集。
步骤二、在分割时间戳之后,开启增量采集服务,对业务库从库开启canal事件监听,生产kafka消息到指定的topic。
步骤三、增加对应topic的配置,包括配置字段的映射关系(当简单的字段映射无法满足时,则需要配置自定义的handler进行处理)、唯一键字段、失败重试策略等信息。
步骤四、读取并检查配置,根据采集配置信息,动态创建新加的kafka消费者、销毁被删除的消费者(资源回收),做增量数据采集。
步骤五、根据配置信息确定目标消息,将目标消息放入消息缓存池,以减少操作分析库批次,增大批量。
由于实际业务场景中,kafka的消息巨频繁,但是消息的size通常都不饱和,导致频繁的对分析库进行操作,造成分析库的性能问题,严重的可能导致停止服务,故引入redis zset进行缓存,并且让消息的pull与实际处理步骤解耦,消息解析完成后直接丢到redis zset中进行缓存,并且根据数据量将key拆分为多个,防止出现大key,然后直接返回,以提高消费能力。进一步地,缓存池在达到一定大小或者指定时长后,自动进行持久化操作;并且每次操作redis缓存时,重置key的有效期,使其续期,同时监听key的过期事件做数据持久化操作,这样一来,冷数据也不至于长期持有redis key,有利于提高缓存池的利用率。
步骤六、数据处理。根据消息的topic,找到其对应的采集配置信息,并基于采集配置信息中字段映射关系、或者自定义的handler处理器,将消息解析成持久化的格式。进一步地,还可以进行数据重复/顺序性问题处理:针对insert消息,根据唯一键标记到redis中进行去重;针对update消息,检查当前库中是否存在该数据,如果不存在,则加入重试批次,直到在库中检索到该数据,如果存在,根据唯一键字段检查是否为最新的update,旧的更新将被忽略;针对delete消息,直接做批量delete。
步骤七、对于处理失败的数据,加入重试批次。按照配置的重试策略进行重试。
步骤八、最终重试失败的数据,发送预警消息告知开发者,并且做持久化(默认持久化到数据库中),做最终的数据补偿。
上述分析库数据更新方法,至少具备以下有益效果:
1、通过datax全量采集、kafka增量采集达到了对全数据的实时采集;
2、用户只需要配置字段映射关系,就可以达到采集复用的目的,新表的采集变得极其简单,特殊逻辑的处理只需要做简单的二次开发进行插入即可实现;
3、缓存接入对实际业务场景的数据特征(数据批次大、批量小)很好的适应,极大的缓解了分析库的性能压力。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的分析库数据更新方法的分析库数据更新装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个分析库数据更新装置实施例中的具体限定可以参见上文中对于分析库数据更新方法的限定,在此不再赘述。
在一些实施例中,如图5所示,提供了一种分析库数据更新装置500,包括:获取模块502、目标消息确定模块504和增量数据更新模块506,其中:
获取模块502,用于获取数据变更消息的采集配置信息、以及与业务库的实时业务数据变更事件对应的实时数据变更消息;
目标消息确定模块504,用于在实时数据变更消息与采集配置信息匹配的情况下,将该实时数据变更消息确定为目标消息;
增量数据更新模块506,用于基于对目标消息进行解析处理得到的解析处理结果,对业务库对应的分析库进行增量数据更新。
在其中一个实施例中,增量数据更新模块506包括:缓存单元,用于将目标消息存入消息缓存池;解析单元,用于在消息缓存池满足消息处理条件的情况下,对消息缓存池中的待处理消息进行解析处理,得到解析处理结果;待处理消息包括各目标消息中的至少一部分;增量数据更新单元,用于基于解析处理结果,对业务库对应的分析库进行增量数据更新。
在其中一个实施例中,采集配置信息还包括唯一键字段;增量数据更新模块506还包括:待处理消息确定单元,用于确定消息缓存池中存储的各目标消息各自的消息类型,基于各消息类型和唯一键字段,从各目标消息中确定待处理消息。
在其中一个实施例中,消息类型包括插入型、更新型和删除型;待处理消息确定单元具体用于:针对插入型的各目标消息,根据各目标消息中各自的唯一键字段信息,对各目标消息进行去重处理,将去重后保留的各目标消息确定为待处理消息;针对更新型的各目标消息,将同一唯一键字段信息所关联的各目标消息中,时间戳最接近当前时刻的目标消息确定为待处理消息;针对删除型的各目标消息,将各目标消息均确定为待处理消息。
在其中一个实施例中,采集配置信息包括数据变更消息与分析库的字段映射关系;解析处理结果包括待处理消息中所携带的业务信息;增量数据更新单元具体用于:根据字段映射关系,确定业务信息在业务库中的映射位置、以及该映射位置所对应的目标数据格式;对业务信息进行格式转换,得到与业务信息对应的,满足目标数据格式的分析信息;基于分析信息对业务库对应的分析库进行增量数据更新。
在其中一个实施例中,分析库数据更新装置还包括全量数据更新模块,用于:获取分隔时间戳;使用开源全量同步工具,对分隔时间戳之前业务库的历史数据进行全量采集,得到全量数据采集结果;根据全量数据采集结果,对业务库对应的分析库进行全量数据更新。在该实施例的情形下,获取模块502具体用于:获取分隔时间戳之后,与业务库的实时业务数据变更事件对应的实时数据变更消息。
在其中一个实施例中,采集配置信息包括目标字段;分析库数据更新装置还包括匹配模块,用于:确定实时数据变更消息所包含的字段信息;在字段信息与目标字段匹配的情况下,确定实时数据变更消息与采集配置信息匹配。
上述分析库数据更新装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一些实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储上述方法中涉及到的数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种分析库数据更新方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图7所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种分析库数据更新方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置,显示屏可以是液晶显示屏或电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图6或图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一些实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述分析库数据更新方法中的步骤。
在一些实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述分析库数据更新方法中的步骤。
在一些实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述分析库数据更新方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种分析库数据更新方法,其特征在于,所述方法包括:
获取数据变更消息的采集配置信息、以及与业务库的实时业务数据变更事件对应的实时数据变更消息;
在所述实时数据变更消息与所述采集配置信息匹配的情况下,将所述实时数据变更消息确定为目标消息;
基于对所述目标消息进行解析处理得到的解析处理结果,对所述业务库对应的分析库进行增量数据更新。
2.根据权利要求1所述的方法,其特征在于,所述基于对所述目标消息进行解析处理得到的解析处理结果,对所述业务库对应的分析库进行增量数据更新,包括:
将所述目标消息存入消息缓存池;
在所述消息缓存池满足消息处理条件的情况下,对所述消息缓存池中的待处理消息进行解析处理,得到解析处理结果;所述待处理消息包括各所述目标消息中的至少一部分;
基于所述解析处理结果,对所述业务库对应的分析库进行增量数据更新。
3.根据权利要求2所述的方法,其特征在于,所述采集配置信息还包括唯一键字段;所述方法还包括:
确定所述消息缓存池中存储的各所述目标消息各自的消息类型;
基于各所述消息类型和所述唯一键字段,从各所述目标消息中确定待处理消息。
4.根据权利要求3所述的方法,其特征在于,所述消息类型包括插入型、更新型和删除型;所述基于各所述消息类型和所述唯一键字段,从各所述目标消息中确定待处理消息,包括以下三项中的至少一项:
针对插入型的各所述目标消息,根据各所述目标消息中各自的唯一键字段信息,对各所述目标消息进行去重处理,将去重后保留的各所述目标消息确定为待处理消息;
针对更新型的各所述目标消息,将同一唯一键字段信息所关联的各所述目标消息中,时间戳最接近当前时刻的所述目标消息确定为待处理消息;
针对删除型的各所述目标消息,将各所述目标消息均确定为待处理消息。
5.根据权利要求2所述的方法,其特征在于,所述采集配置信息包括数据变更消息与分析库的字段映射关系;所述解析处理结果包括所述待处理消息中所携带的业务信息;
所述基于所述解析处理结果,对所述业务库对应的分析库进行增量数据更新,包括:
根据所述字段映射关系,确定所述业务信息在所述业务库中的映射位置、以及所述映射位置所对应的目标数据格式;
对所述业务信息进行格式转换,得到与所述业务信息对应的,满足所述目标数据格式的分析信息;
基于所述分析信息对所述业务库对应的分析库进行增量数据更新。
6.根据权利要求1至5中任意一项所述的方法,其特征在于,所述方法还包括:
获取分隔时间戳;
使用开源全量同步工具,对所述分隔时间戳之前业务库的历史数据进行全量采集,得到全量数据采集结果;
根据所述全量数据采集结果,对所述业务库对应的分析库进行全量数据更新;
获取与业务库的实时业务数据变更事件对应的实时数据变更消息,包括:
获取所述分隔时间戳之后,与业务库的实时业务数据变更事件对应的实时数据变更消息。
7.根据权利要求1至5中任意一项所述的方法,其特征在于,所述采集配置信息包括目标字段;所述方法还包括:
确定所述实时数据变更消息所包含的字段信息;
在所述字段信息与所述目标字段匹配的情况下,确定所述实时数据变更消息与所述采集配置信息匹配。
8.一种分析库数据更新装置,其特征在于,所述装置包括:
获取模块,用于获取数据变更消息的采集配置信息、以及与业务库的实时业务数据变更事件对应的实时数据变更消息;
目标消息确定模块,用于在所述实时数据变更消息与所述采集配置信息匹配的情况下,将所述实时数据变更消息确定为目标消息;
增量数据更新模块,用于基于对所述目标消息进行解析处理得到的解析处理结果,对所述业务库对应的分析库进行增量数据更新。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211577832.0A CN116049200A (zh) | 2022-12-05 | 2022-12-05 | 分析库数据更新方法、装置、计算机设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211577832.0A CN116049200A (zh) | 2022-12-05 | 2022-12-05 | 分析库数据更新方法、装置、计算机设备和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116049200A true CN116049200A (zh) | 2023-05-02 |
Family
ID=86122713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211577832.0A Pending CN116049200A (zh) | 2022-12-05 | 2022-12-05 | 分析库数据更新方法、装置、计算机设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116049200A (zh) |
-
2022
- 2022-12-05 CN CN202211577832.0A patent/CN116049200A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109034993B (zh) | 对账方法、设备、系统及计算机可读存储介质 | |
CN108536761B (zh) | 报表数据查询方法及服务器 | |
CN107220142B (zh) | 执行数据恢复操作的方法及装置 | |
CN107506451B (zh) | 用于数据交互的异常信息监控方法及装置 | |
CN110032604B (zh) | 数据存储装置、转译装置及数据库访问方法 | |
CN107766575B (zh) | 读写分离的数据库访问方法及装置 | |
CN109918349A (zh) | 日志处理方法、装置、存储介质和电子装置 | |
CN110928851B (zh) | 处理日志信息的方法、装置、设备及存储介质 | |
CN104584524A (zh) | 聚合中介系统中的数据 | |
CN114741335A (zh) | 缓存管理方法、装置、介质及设备 | |
CN112860412B (zh) | 业务数据处理方法、装置、电子设备及存储介质 | |
CN113961643A (zh) | 搜索引擎更新方法及其装置、设备、介质、产品 | |
CN116049200A (zh) | 分析库数据更新方法、装置、计算机设备和介质 | |
CN116049142A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN116170508A (zh) | 数据处理方法、终端、系统、设备、介质及产品 | |
CN111061719B (zh) | 数据收集方法、装置、设备和存储介质 | |
CN113986828A (zh) | 存储海量文件的方法、装置、电子设备及存储介质 | |
CN113220727A (zh) | 基于云平台的电力物联数据可视化展现系统及其展现方法 | |
CN108614838B (zh) | 一种用户群索引处理方法、装置及系统 | |
CN111782588A (zh) | 一种文件读取方法、装置、设备和介质 | |
CN109977104A (zh) | 数据管理方法及装置 | |
CN106528577B (zh) | 一种设置待清理文件的方法和装置 | |
CN115604667B (zh) | 消息发送方法、装置、计算机设备和存储介质 | |
CN115203159B (zh) | 一种数据存储方法、装置、计算机设备和存储介质 | |
CN116821102B (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 |