CN115640310A - 用于业务数据聚合的方法和装置、电子设备和存储介质 - Google Patents
用于业务数据聚合的方法和装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN115640310A CN115640310A CN202211395191.7A CN202211395191A CN115640310A CN 115640310 A CN115640310 A CN 115640310A CN 202211395191 A CN202211395191 A CN 202211395191A CN 115640310 A CN115640310 A CN 115640310A
- Authority
- CN
- China
- Prior art keywords
- aggregation
- data
- task
- level
- message queue
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开实施例公开了一种用于业务数据聚合的方法和装置、电子设备和存储介质,其中,用于业务数据聚合的方法包括:响应于监测到至少一个业务源表中的数据变化,确定对应各聚合层级的表征数据变化的消息队列;其中,聚合层级以及聚合层级之间的聚合执行顺序,根据实现聚合目标的逻辑关系预先划分;根据消息队列以及聚合执行顺序,递归触发对应每个聚合层级的聚合任务,直至得到匹配聚合目标的聚合结果;其中,聚合任务为根据实现聚合目标的逻辑关系预先确定,聚合结果包括数据模型或聚合中间表。利用本公开方法,可以提高业务数据聚合的效率。
Description
技术领域
本公开涉及数据处理技术领域,尤其是一种用于业务数据聚合的方法和装置、电子设备和存储介质。
背景技术
在业财类业务处理应用中,对数据模型的重塑聚合是一个普遍需求。相关技术中,对数据模型的重塑聚合的方式主要包括两种,其一是基于数据仓库技术(Extract-Load-Transform,ETL)工具的批处理方式;其二是基于消息中间件的流式处理方式。
其中,对于基于消息中间件的流式处理方式,在相关技术中,主要采用的方案是将全部待聚合数据一次性聚合,一旦因某项数据获取失败,就会导致聚合任务失败;进而相关技术会将失败的聚合任务持久化到数据库中,然后以一定时间间隔重试调用失败的聚合任务,并且每次重试调用需要重新对全部待聚合数据执行一次性聚合。
因此,相关技术的这种处理方式,不仅因消耗大量运算资源而导致聚合任务执行效率较低,还会因为存储大量失败的聚合任务而消耗存储空间。
发明内容
本公开实施例提供一种用于业务数据聚合的方法和装置、电子设备和存储介质,可以提高业务数据聚合的效率。
本公开实施例的一个方面,提供一种用于业务数据聚合的方法,包括:响应于监测到至少一个业务源表中的数据变化,确定对应各聚合层级的表征所述数据变化的消息队列;其中,所述聚合层级以及所述聚合层级之间的聚合执行顺序,根据实现聚合目标的逻辑关系预先划分;根据所述消息队列以及所述聚合执行顺序,递归触发对应每个聚合层级的聚合任务,直至得到匹配所述聚合目标的聚合结果;其中,所述聚合任务为根据实现聚合目标的逻辑关系预先确定,所述聚合结果包括数据模型或聚合中间表。
本公开实施例的另一个方面,提供一种用于业务数据聚合的装置,包括:数据监测模块,被配置为:响应于监测到至少一个业务源表中的数据变化,确定对应各聚合层级的表征所述数据变化的消息队列;其中,所述聚合层级以及所述聚合层级之间的聚合执行顺序,根据实现聚合目标的逻辑关系预先划分;聚合模块,被配置为:根据所述消息队列以及所述聚合执行顺序,递归触发对应每个聚合层级的聚合任务,直至得到匹配所述聚合目标的聚合结果;其中,所述聚合任务为根据实现聚合目标的逻辑关系预先确定,所述聚合结果包括数据模型或聚合中间表。
本公开实施例的又一个方面,提供一种电子设备,其中,包括:存储器,用于存储计算机程序;处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现本公开所述用于业务数据聚合的方法。
本公开实施例的又一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现本公开所述用于业务数据聚合的方法。
基于本公开的用于业务数据聚合的方法和装置、电子设备和存储介质,通过监测至少一个业务源表,响应于监测到至少一个业务源表中的数据变化,确定对应各聚合层级的表征数据变化的消息队列;然后根据消息队列以及聚合执行顺序,递归触发对应每个聚合层级的聚合任务,直至得到匹配聚合目标的聚合结果;可以利用递归触发的方式实现对聚合目标的分层聚合,并且基于对应各聚合层级的表征数据变化的消息队列,可以在每个聚合层级中实现多个聚合任务并发执行,为业务数据聚合提供了一种新的聚合方式。另外,本公开上述实施例的用于业务数据聚合的方法中,因为可以分层聚合,因此即使某一聚合层级的聚合任务因数据获取失败,也只需暂停该聚合任务,不会影响其他聚合任务,并且当该失败的聚合任务重新触发执行时,可基于前一聚合层级的聚合结果继续执行聚合,而不需要整个聚合目标的全部聚合任务都重新执行,因此可提高业务数据聚合的效率。
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同描述一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1是本公开的用于业务数据聚合的方法一个实施例的流程图;
图2是本公开的用于业务数据聚合的方法的一个应用实施例的示意图;
图3是本公开的用于业务数据聚合的方法的另一个应用实施例的示意图;
图4是本公开的用于业务数据聚合的方法另一个实施例的流程图;
图5是本公开的用于业务数据聚合的方法又一个实施例的流程图;
图6是本公开的用于业务数据聚合的装置一个实施例的结构示意图;
图7是本公开的用于业务数据聚合的装置另一个实施例的结构示意图;
图8是本公开电子设备一个应用实施例的结构示意图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
本领域技术人员可以理解,本公开实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。
还应理解,在本公开实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
还应理解,对于本公开实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
另外,本公开中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本公开中字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,本公开对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本公开实施例可以应用于终端设备、计算机系统、服务器等电子设备,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与终端设备、计算机系统、服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
终端设备、计算机系统、服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
示例性方法
图1是本公开的用于业务数据聚合的方法一个实施例的流程图。如图1所示的方法包括步骤S110和S120。下面对各步骤分别进行说明。
S110、响应于监测到至少一个业务源表中的数据变化,确定对应各聚合层级的表征该数据变化的消息队列;其中,聚合层级以及聚合层级之间的聚合执行顺序,根据实现聚合目标的逻辑关系预先划分。
S120、根据消息队列以及聚合执行顺序,递归触发对应每个聚合层级的聚合任务,直至得到匹配聚合目标的聚合结果;其中,聚合任务为根据实现聚合目标的逻辑关系预先确定,聚合结果包括数据模型或聚合中间表。
其中,业务源表是用于存储企业、个人或其他类别组织机构的业务数据的表格。本公开对业务源表的类型不作限定,例如可以是公司的财务报表、个人的银行流水等。另外,业务源表可以存储于数据库中,然后通过对数据库的监测,可以获悉数据库中业务源表的数据变化。
其中,聚合目标是指根据业务需求从目标类别业务源表中获取目标类别的业务数据。例如,从企业的银行流水中获取企业的某项业务流水的相关信息,其中,相关信息可以是该业务流水中涉及的业务的名称、业务交易频次、单次交易额度等。聚合层级是指基于实现聚合目标的逻辑关系,对该聚合目标进行任务拆分,从而形成的层级划分。聚合任务是指对聚合层级内所包括的任务进行划分,确定的每个具体任务。
本公开对消息队列中的消息的类型不作限定,例如可以是表示发生变化的数据的字段、键值等信息。另外,一条数据变化对应着一条消息。
需要说明的是,上述聚合目标是根据业务需求预先设定的,可以程序等形式预先配置,进而聚合层级的划分以及聚合层级之间的聚合执行顺序也可基于聚合目标而相应地预先配置。另外,本公开对聚合目标可划分为多少聚合层级、以及每个聚合层级可包括多少聚合任务不作限定,可根据实际业务需求而定。
为便于理解上述“聚合目标、聚合层级、聚合任务以及聚合结果”的概念,下面参照图2进行相应说明。
在图2示例中,业务源表中发生变化的数据例如包括数据表TableA、数据表TableB、数据表TableC;聚合目标例如包括聚合目标一和聚合目标二,其中,聚合目标一是希望将数据表TableA和数据表TableB聚合;聚合目标二是希望将数据表TableA、数据表TableB以及数据表TableC聚合。
对于聚合目标一,其包括一个聚合层级,该一个聚合层级对应一个聚合任务(即,Task_TableA&B),即将从业务源表中获取的数据表TableA和数据表TableB聚合得到聚合中间表TableA&B。对于聚合目标二,其包括两个聚合层级,每个聚合层级包括一个聚合任务;具体地,第一聚合层级为聚合数据表TableA和数据表TableB,对应的聚合任务为Task_TableA&B,即,利用数据表TableA和数据表TableB进行聚合,得到聚合中间表TableA&B。第二聚合层级为聚合数据表TableC与第一聚合层级的聚合结果,对应的聚合任务为Task_ModelC,即,利用聚合中间表TableA&B和数据表TableC进行聚合,得到数据模型TableC&(TableA&TableB)。
需要说明的是,上述关于图2示例仅是示例性说明,并不对本公开的方案构成任何限制。
例如,在上述聚合目标一中,聚合任务还可以是将从业务源表中获取的数据表TableA和数据表TableB聚合得到数据模型,则在此情况下,得到的聚合结果TableA&B即为数据模型。
又例如,在上述聚合目标二中,第二聚合层级对应的聚合任务还可以是聚合数据表TableC与第一聚合层级的聚合结果(即,聚合中间表TableA&B),然后得到一个聚合中间表,例如也可以符号化描述该第二聚合层级对应的聚合中间表为TableC&(TableA&TableB)。这里需要解释的是,该聚合中间表TableC&(TableA&TableB)可作为其他数据聚合处理系统的调用数据或跨平台数据聚合业务调用的数据,亦或其他适用的场景,不局限于图2示例场景。
即本公开的方案中,可根据实际需要或应用场景配置聚合任务,以获取各自所需的聚合中间表或数据模型,本公开对此不做限制。
亦即,本公开方案中,聚合中间表既可以作为得到数据模型的中间结果,也可单独作为聚合结果输出。
根据上述参照图2示例的解释,步骤S120中的“递归触发”可以理解为对聚合目标进行分层(或分步骤)聚合,可以减少失败的聚合任务的重试次数(具体实施方式将在下文中描述)。
数据模型或聚合中间表是利用从业务源表中针对目标对象抽取的目标类别的业务数据而形成的数据集,可用于描述目标对象的相关特征。例如,图2示例的聚合中间表TableA&B,以及图2示例的数据模型TableC&(TableA&B)。
基于本公开上述实施例的用于业务数据聚合的方法,首先通过响应于监测到至少一个业务源表中的数据变化,确定对应各聚合层级的表征数据变化的消息队列;然后根据消息队列以及聚合执行顺序,递归触发对应每个聚合层级的聚合任务,直至得到匹配聚合目标的聚合结果;可以利用递归触发的方式实现对聚合目标的分层聚合,并且基于对应各聚合层级的表征数据变化的消息队列,可以在每个聚合层级中实现多个聚合任务并发执行,为业务数据聚合提供了一种新的聚合方式;
另外,本公开上述实施例的用于业务数据聚合的方法中,因为可以分层聚合,因此即使某一聚合层级的聚合任务因数据获取失败,也只需暂停该聚合任务,不会影响其他聚合任务,并且当该失败的聚合任务重新触发执行时,可基于前一聚合层级的聚合结果继续执行聚合,而不需要整个聚合目标的全部聚合任务都重新执行,因此可提高业务数据聚合的效率。
作为一种可选实施方式,在图1实施例基础上,步骤S110可通过如下方式实现:
响应于监测到至少一个业务源表中的数据变化,将对应各聚合层级的表征数据变化的消息,发送至消息队列缓存中间件进行缓存,形成对应各聚合层级的消息队列。其中,增量数据同步工具例如可以包括但不限于Canal中间件、Debezium中间件等中间件中的至少一个,消息队列缓存中间件例如可以是Kafka中间件。
其中,上述“监测到至少一个业务源表中的数据变化”可通过如下方式实现:假设存储业务源表的数据可为MySQL数据库,增量数据同步工具为Canal中间件。基于此,一旦业务源表中某项数据发生变化,MySQL就会相应的将发生变化的数据记录在binlog日志文件中,Canal中间件可通过监测MySQL的binlog日志文件,获悉业务源表中的数据变化。
由于本公开上述实施例的方案,可能会面临海量数据高并发的应用场景,而又因为执行方案的系统或硬件设备的计算资源有限,为避免系统或硬件设备因无法应对高并发数据处理的压力而导致瘫痪,遂采用消息队列缓存中间件(例如,Kafka中间件)对表征数据变化的消息进行缓存,以达到削峰填谷的作用,有利于执行本公开上述实施例方案的系统或硬件设备的平稳运行。
参照图2或图3,本公开实施例中的消息队列例如可以包括:表征发生变化的数据TableA的消息,表征发生变化的数据TableB的消息,以及表征发生变化的数据TableC的消息。
作为一个可选实施方式,在图1实施例基础上,参照图4,步骤S120可包括如下步骤:
S1210、按照聚合执行顺序,依次利用每个聚合层级各自对应的消息队列,执行对应每个聚合层级的聚合任务。
其中,执行对应每个聚合层级的聚合任务的过程为:响应于前一聚合层级的聚合任务完成,根据前一聚合层级的聚合任务得到的聚合中间表,执行当前聚合层级对应的聚合任务,直至完成对应每个聚合层级的聚合任务,得到匹配聚合目标的聚合结果。
为便于理解,参照图2说明上述执行“对应每个聚合层级的聚合任务”的过程:
因为对于上述的聚合目标二而言,其包括两个聚合层级,每个聚合层级包括一个聚合任务;具体地,第一聚合层级为聚合数据表TableA和数据表TableB,对应的聚合任务为Task_TableA&B,即,利用数据表TableA和数据表TableB进行聚合,得到聚合中间表TableA&B;第二聚合层级为聚合TableC与第一聚合层级的聚合结果,对应的聚合任务为Task_ModelC,即,利用聚合中间表TableA&B和TableC进行聚合,得到数据模型TableC&(TableA&TableB)。
因此这里就是根据(前一聚合层级的聚合任务得到的聚合中间表)第一聚合层级的聚合任务得到的聚合中间表(即,TableA&B),执行第二聚合层级的聚合任务(即,执行当前聚合层级对应的聚合任务),最终聚合得到的数据模型TableC&(TableA&TableB)或也可写作数据模型TableC&(TableA&B);即,得到匹配上述聚合目标二的聚合结果。
在一个可选示例中,步骤S1210“依次利用每个聚合层级各自对应的消息队列,执行对应每个聚合层级的聚合任务”可通过如下方式实现:
针对每个聚合层级,响应于监测到对应的消息队列,并行触发消息队列中每个消息对应的聚合任务,得到对应的聚合中间表。其中,消息队列中的消息与聚合任务之间对应关系为一一映射或多对一映射。
可以理解,针对每个聚合层级,并行触发消息队列中每个消息对应的聚合任务,可以提高聚合效率;另外,结合实施例1中对整个聚合目标的分层,当该失败的聚合任务重新触发执行时,可基于前一聚合层级的聚合结果继续执行聚合,而不需要整个聚合目标的全部聚合任务都重新执行,因此可进一步提高业务数据聚合的效率。
上述“监测”例如可根据相关的监听函数,从消息队列缓存中间件(例如,Kafka中间件)中获取消息队列;本公开不限于此,也可基于其他方式实现。
参照图2,一个变化的数据对应一个消息,例如,作为变化的数据的数据表TableA、数据表TableB以及数据表TableC可分别对应一条消息,但是数据表TableA和数据表TableB各自对应的消息,对应同一聚合任务Task_TableA&B(属于二对一的情况);数据表TableC对应的消息,则对应一个聚合任务Task_ModelC(属于一对一的情况)。
在该示例中,上述“针对每个聚合层级,响应于监测到对应的消息队列,并行触发消息队列中每个消息对应的聚合任务”可通过如下方式实现:
针对每个聚合任务,根据目标规则从至少一个业务源表和/或由前一聚合层级的聚合任务得到的聚合中间表中查询数据,组合成属于当前聚合层级的数据模型或聚合中间表。其中,目标规则是:为实现聚合目标给每一个聚合任务确定的业务聚合规则,业务聚合规则中包括业务源表中待查询数据的字段、以及属于前一聚合层级的聚合中间表中待查询数据的字段。
上述“根据目标规则从至少一个业务源表和/或由前一聚合层级的聚合任务得到的聚合中间表中查询数据”可参照图2理解。例如,对于上述聚合目标二而言,其包括两个聚合层级,每个聚合层级包括一个聚合任务;具体地,第一聚合层级为聚合数据表TableA和数据表TableB,对应的聚合任务为Task_TableA&B,即,利用数据表TableA和数据表TableB进行聚合,得到聚合中间表TableA&B;第二聚合层级为聚合数据表TableC与第一聚合层级的聚合结果,对应的聚合任务为Task_ModelC,即,利用聚合中间表TableA&B和数据表TableC进行聚合,得到数据模型TableC&(TableA&TableB)。其中,第二聚合层级对应的聚合任务从至少一个业务源表中查询数据得到数据表TableC,以及从第一聚合层级的聚合结果中查询数据得到聚合中间表TableA&TableB(亦可写作TableA&B)。
在该示例中,参照图5,上述“根据目标规则从至少一个业务源表和/或由前一聚合层级的聚合任务得到的聚合中间表中查询数据”,还可包括如下步骤:
S12101、响应于查询数据失败,将查询数据失败的聚合任务加入预先创建的任务等待队列,并中断该聚合任务;S12102,根据查询数据失败的聚合任务所查询的数据的键值,建立该查询数据失败的聚合任务与被查询数据之间的关联关系;S12103,响应于被查询数据获取成功,根据关联关系从任务等待队列中查找对应的中断聚合任务,并触发该中断聚合任务继续执行。
其中,任务等待队列可以在步骤S110执行时同步创建。
可以理解,数据库(例如,MySQL)中可以键值对(key_value)的形式存储数据,其中的key(即为键值)在数据库中是唯一的,因此通过键值就可以查询到该键值对应的数据(即,被查询的数据)。
此外,需要说明的是,查询数据失败可能是因为业务源表中相应的数据未发生变化或者前一聚合层级的聚合任务未完成,此时需要中断失败的聚合任务,并将其加入预先创建的任务等待队列。例如,参照图2和图3,由于数据表TableA、数据表TableB以及数据表TableC的发生变化的时间不一致(即,确定变化的数据对应的消息的时刻有先后顺序),进而不同聚合层级的聚合任务的完成时间也有先后差异。例如,利用数据表TableA、数据表TableB以及数据表TableC的发生变化的时序,可将对应数据表TableA数据表、TableB以及数据表TableC的消息到达顺序描述为:TableC<TableA<TableB。
另外,如图3所示,其中“等待队列”并非本公开上述实施例中的任务等待队列,而是上述聚合任务查询失败的数据的数据队列,该数据队列可存储在如图2所示的失败日志fail_binlog中。其中,数据队列中的队列Queue_TableA、队列Queue_TableB以及队列Queue_TableA&B分别是对应数据表TableA、数据表TableB以及聚合中间表TableA&B的队列。其中,数据表TableA的键值(id_a)例如可以为123;数据表TableB的键值(id_b)例如可以为456。因此,聚合任务Task_TableA&B以及聚合任务Task_ModelC要在查询数据失败或前一聚合层级的聚合任务未完成时进入任务等待队列;其中,聚合任务Task_TableA&B要等待数据对列中的队列Queue_TableA、队列Queue_TableB对应的数据获取完成后,才能执行相应的聚合任务;而聚合任务Task_ModelC要等到属于前一聚合层级的聚合任务Task_TableA&B完成,才能执行相应的聚合任务。另外,参照图3,上述聚合任务Task_ModelC可以聚合公式的形式描述,例如聚合公式为:ModelC=TableC&(TableA&TableB)。
另外,参照图2,还可将聚合任务查询失败的数据的键值存储至失败日志fail-binlog中,而对应失败的聚合任务存储至任务等待队列中,当对应失败日志fail-binlog中某一键值的数据获取成功,则删除从失败日志fail-binlog中删除该键值,并根据该键值从任务等待队列轮询查找出对应的已中断的聚合任务,以及重新触发该中断的聚合任务;该过程即为“重试失败的聚合任务”。
如上,利用本公开上述示例的方案,不仅可以通过任务等待队列以及基于关联关系的事件通知方式,实现多个并行聚合任务之间的调度,而且对于失败的聚合任务,只需要一次重试(即响应于被查询数据获取成功或者前一聚合层级完成聚合)即可以使该失败的聚合任务完成聚合;从而提高失败的聚合任务的重试成功率,减少重试次数,提升整体结合性能和效率;另外,不需要持久化存储失败的聚合任务,因此相对于现有技术将失败的聚合任务持久化到数据库中的方案,可节省存储空间。
在步骤S1210的示例中,上述“针对每个聚合层级,响应于监测到对应的消息队列,并行触发消息队列中每个消息对应的聚合任务”还可实现为:将并行触发的消息队列中每个消息对应的聚合任务,运行在聚合任务线程池上。
可以理解,由于本公开上述实施例的方案,可能会面临海量数据高并发的应用场景,而又因为执行方案的系统或硬件设备的计算资源有限,为避免系统或硬件设备因无法应对高并发数据处理的压力而导致瘫痪,遂“将并行触发的消息队列中每个消息对应的聚合任务,运行在聚合任务线程池上”,以达到削峰填谷的作用,有利于执行本公开上述实施例方案的系统或硬件设备的平稳运行。
综上,利用本公开上述实施例的用于业务数据聚合的方法,首先可以利用递归触发的方式实现对聚合目标的分层聚合,并且基于对应各聚合层级的表征数据变化的消息队列,可以在每个聚合层级中实现多个聚合任务并发执行,为业务数据聚合提供了一种新的聚合方式;其次,还可以通过任务等待队列以及基于关联关系的事件通知方式,实现多个并行聚合任务之间的调度,而且对于失败的聚合任务,只需要一次重试(即响应于被查询数据获取成功或者前一聚合层级完成聚合)即可以使该失败的聚合任务完成聚合;从而提高失败的聚合任务的重试成功率,减少重试次数,提升整体结合性能和效率;另外,不需要持久化存储失败的聚合任务,因此相对于现有技术将失败的聚合任务持久化到数据库中的方案,可节省存储空间。
示例性装置
应理解,本文中前述实施例关于用于业务数据聚合的方法也可类似地应用于以下用于业务数据聚合的装置中进行类似扩展。为简化起见,未对其进行详细描述。
图6是本公开的用于业务数据聚合的装置一个实施例的结构示意图。如图6所示,用于业务数据聚合的装置,包括:数据监测模块610,被配置为:响应于监测到至少一个业务源表中的数据变化,确定对应各聚合层级的表征数据变化的消息队列;其中,聚合层级以及聚合层级之间的聚合执行顺序,根据实现聚合目标的逻辑关系预先划分;聚合模块620,被配置为:根据消息队列以及聚合执行顺序,递归触发对应每个聚合层级的聚合任务,直至得到匹配聚合目标的聚合结果;其中,聚合任务为根据实现聚合目标的逻辑关系预先确定,聚合结果包括数据模型或聚合中间表。
可选地,数据监测模块610,被进一步配置为:响应于监测到至少一个业务源表中的数据变化,将对应各聚合层级的表征数据变化的消息,发送至消息队列缓存中间件进行缓存,形成对应各聚合层级的消息队列。
可选地,参照图7,聚合模块620,包括:执行子模块6210,被配置为:按照聚合执行顺序,依次利用每个聚合层级各自对应的消息队列,执行对应每个聚合层级的聚合任务;其中,执行对应每个聚合层级的聚合任务的过程为:响应于前一聚合层级的聚合任务完成,根据前一聚合层级的聚合任务得到的聚合中间表,执行当前聚合层级对应的聚合任务,直至完成对应每个聚合层级的聚合任务,得到匹配聚合目标的聚合结果。
可选地,执行子模块6210,被进一步配置为:针对每个聚合层级,响应于监测到对应的消息队列,并行触发消息队列中每个消息对应的聚合任务,得到对应的聚合中间表;其中,消息队列中的消息与聚合任务之间对应关系为一一映射或多对一映射。
可选地,执行子模块6210,被进一步配置为:针对每个聚合任务,根据目标规则从至少一个业务源表和/或由前一聚合层级的聚合任务得到的聚合中间表中查询数据,组合成属于当前聚合层级的数据模型或聚合中间表;其中,目标规则是:为实现聚合目标给每一个聚合任务确定的业务聚合规则,业务聚合规则中包括业务源表中待查询数据的字段、以及属于前一聚合层级的聚合中间表中待查询数据的字段。
可选地,执行子模块6210包括并行调度单元,被配置为:响应于查询数据失败,将查询数据失败的聚合任务加入预先创建的任务等待队列,并中断该聚合任务;根据查询数据失败的聚合任务所查询的数据的键值,建立该查询数据失败的聚合任务与被查询数据之间的关联关系;响应于被查询数据获取成功,根据关联关系从任务等待队列中查找对应的中断聚合任务,并触发该中断聚合任务继续执行。
可选地,执行子模块6210,被进一步配置为:将并行触发的消息队列中每个消息对应的聚合任务,运行在聚合任务线程池上。
综上,利用本公开上述实施例的用于业务数据聚合的装置,首先可以利用递归触发的方式实现对聚合目标的分层聚合,并且基于对应各聚合层级的表征数据变化的消息队列,可以在每个聚合层级中实现多个聚合任务并发执行,为业务数据聚合提供了一种新的聚合方式;其次,还可以通过任务等待队列以及基于关联关系的事件通知方式,实现多个并行聚合任务之间的调度,而且对于失败的聚合任务,只需要一次重试(即响应于被查询数据获取成功或者前一聚合层级完成聚合)即可以使该失败的聚合任务完成聚合;从而提高失败的聚合任务的重试成功率,减少重试次数,提升整体结合性能和效率;另外,不需要持久化存储失败的聚合任务,因此相对于现有技术将失败的聚合任务持久化到数据库中的方案,可节省存储空间。
示例性电子设备
另外,本公开实施例还提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现本公开上述任一实施例所述的用于业务数据聚合的方法。
图8是本公开电子设备一个应用实施例的结构示意图。下面,参考图8来描述根据本公开实施例的电子设备。该电子设备可以是第一设备和第二设备中的任一个或两者、或与它们独立的单机设备,该单机设备可以与第一设备和第二设备进行通信,以从它们接收所采集到的输入信号。
如图8所示,电子设备包括一个或多个处理器和存储器。
处理器可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备中的其他组件以执行期望的功能。
存储器可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器可以运行所述程序指令,以实现上文所述的本公开的各个实施例的用于业务数据聚合的方法以及/或者其他期望的功能。
在一个示例中,电子设备还可以包括:输入装置和输出装置,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
此外,该输入设备还可以包括例如键盘、鼠标等等。
该输出装置可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出设备可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图8中仅示出了该电子设备中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备还可以包括任何其他适当的组件。
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述部分中描述的根据本公开各种实施例的用于业务数据聚合的方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述部分中描述的根据本公开各种实施例的用于业务数据聚合的方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (10)
1.一种用于业务数据聚合的方法,包括:
响应于监测到至少一个业务源表中的数据变化,确定对应各聚合层级的表征所述数据变化的消息队列;其中,所述聚合层级以及所述聚合层级之间的聚合执行顺序,根据实现聚合目标的逻辑关系预先划分;
根据所述消息队列以及所述聚合执行顺序,递归触发对应每个聚合层级的聚合任务,直至得到匹配所述聚合目标的聚合结果;其中,所述聚合任务为根据实现聚合目标的逻辑关系预先确定,所述聚合结果包括数据模型或聚合中间表。
2.根据权利要求1所述的方法,其特征在于,响应于监测到至少一个业务源表中的数据变化,确定对应各聚合层级的表征所述数据变化的消息队列,包括:
响应于监测到所述至少一个业务源表中的数据变化,将对应各聚合层级的表征所述数据变化的消息,发送至消息队列缓存中间件进行缓存,形成对应各聚合层级的消息队列。
3.根据权利要求1所述的方法,其特征在于,根据所述消息队列以及所述聚合执行顺序,递归触发对应每个聚合层级的聚合任务,包括:
按照所述聚合执行顺序,依次利用每个聚合层级各自对应的消息队列,执行对应每个聚合层级的聚合任务;
其中,所述执行对应每个聚合层级的聚合任务的过程为:
响应于前一聚合层级的聚合任务完成,根据前一聚合层级的聚合任务得到的所述聚合中间表,执行当前聚合层级对应的聚合任务,直至完成对应每个聚合层级的聚合任务,得到匹配所述聚合目标的聚合结果。
4.根据权利要求3所述的方法,其特征在于,依次利用每个聚合层级各自对应的消息队列,执行对应每个聚合层级的聚合任务,包括:
针对每个聚合层级,响应于监测到对应的消息队列,并行触发所述消息队列中每个消息对应的聚合任务,得到对应的所述聚合中间表;
其中,所述消息队列中的消息与所述聚合任务之间对应关系为一一映射或多对一映射。
5.根据权利要求4所述的方法,其特征在于,针对每个聚合层级,响应于监测到对应的消息队列,并行触发所述消息队列中每个消息对应的聚合任务,包括:
针对每个聚合任务,根据目标规则从所述至少一个业务源表和/或由前一聚合层级的聚合任务得到的聚合中间表中查询数据,组合成属于当前聚合层级的数据模型或聚合中间表;
其中,所述目标规则是:为实现所述聚合目标给每一个聚合任务确定的业务聚合规则,所述业务聚合规则中包括所述业务源表中待查询数据的字段、以及属于前一聚合层级的聚合中间表中待查询数据的字段。
6.根据权利要求5所述的方法,其特征在于,针对每个聚合任务,根据目标规则从所述至少一个业务源表和/或由前一聚合层级的聚合任务得到的聚合中间表中查询数据,包括:
响应于查询数据失败,将所述查询数据失败的聚合任务加入预先创建的任务等待队列,并中断该聚合任务;
根据所述查询数据失败的聚合任务所查询的数据的键值,建立该查询数据失败的聚合任务与被查询数据之间的关联关系;
响应于被查询数据获取成功,根据所述关联关系从所述任务等待队列中查找对应的中断聚合任务,并触发该中断聚合任务继续执行。
7.根据权利要求4所述的方法,其特征在于,针对每个聚合层级,响应于监测到对应的消息队列,并行触发所述消息队列中每个消息对应的聚合任务,包括:
将并行触发的所述消息队列中每个消息对应的聚合任务,运行在聚合任务线程池上。
8.一种用于业务数据聚合的装置,包括:
数据监测模块,被配置为:响应于监测到至少一个业务源表中的数据变化,确定对应各聚合层级的表征所述数据变化的消息队列;其中,所述聚合层级以及所述聚合层级之间的聚合执行顺序,根据实现聚合目标的逻辑关系预先划分;
聚合模块,被配置为:根据所述消息队列以及所述聚合执行顺序,递归触发对应每个聚合层级的聚合任务,直至得到匹配所述聚合目标的聚合结果;其中,所述聚合任务为根据实现聚合目标的逻辑关系预先确定,所述聚合结果包括数据模型或聚合中间表。
9.一种电子设备,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述权利要求1-7任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时,实现上述权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211395191.7A CN115640310A (zh) | 2022-11-08 | 2022-11-08 | 用于业务数据聚合的方法和装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211395191.7A CN115640310A (zh) | 2022-11-08 | 2022-11-08 | 用于业务数据聚合的方法和装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115640310A true CN115640310A (zh) | 2023-01-24 |
Family
ID=84949405
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211395191.7A Pending CN115640310A (zh) | 2022-11-08 | 2022-11-08 | 用于业务数据聚合的方法和装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115640310A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117216147A (zh) * | 2023-11-08 | 2023-12-12 | 中国电子科技集团公司第十五研究所 | 一种根据数据属性进行数据分层控制存储的方法及装置 |
-
2022
- 2022-11-08 CN CN202211395191.7A patent/CN115640310A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117216147A (zh) * | 2023-11-08 | 2023-12-12 | 中国电子科技集团公司第十五研究所 | 一种根据数据属性进行数据分层控制存储的方法及装置 |
CN117216147B (zh) * | 2023-11-08 | 2024-01-19 | 中国电子科技集团公司第十五研究所 | 一种根据数据属性进行数据分层控制存储的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12013856B2 (en) | Burst performance of database queries according to query size | |
WO2022063284A1 (zh) | 数据同步方法、装置、设备及计算机可读介质 | |
US9710530B2 (en) | Performance checking component for an ETL job | |
US20200409949A1 (en) | Dynamically assigning queries to secondary query processing resources | |
CN111143286B (zh) | 一种云平台日志管理方法及系统 | |
US10860604B1 (en) | Scalable tracking for database udpates according to a secondary index | |
US20190012349A1 (en) | High performance real-time relational database system and methods for using same | |
US11106651B2 (en) | Table discovery in distributed and dynamic computing systems | |
US10616042B2 (en) | Collaborative triggers in distributed and dynamic computing systems | |
US20180004797A1 (en) | Application resiliency management using a database driver | |
US12001450B2 (en) | Distributed table storage processing method, device and system | |
US11816511B1 (en) | Virtual partitioning of a shared message bus | |
CN116756152A (zh) | 基于区块链的数据处理方法和装置、电子设备和存储介质 | |
CN111338834B (zh) | 数据存储方法和装置 | |
US11243979B1 (en) | Asynchronous propagation of database events | |
CN115640310A (zh) | 用于业务数据聚合的方法和装置、电子设备和存储介质 | |
US20220244990A1 (en) | Method for performing modification task, electronic device and readable storage medium | |
US9773034B1 (en) | Large-scale log index | |
US11386153B1 (en) | Flexible tagging and searching system | |
US11855910B2 (en) | Configuration management of cloud resources for multiple providers and frameworks | |
CN111753017B (zh) | 基于Kylin系统的维表处理方法、装置、电子设备及存储介质 | |
WO2024016594A1 (zh) | 一种伪列实现方法、装置、电子设备及存储介质 | |
CN115357827A (zh) | 区块链浏览器组件和电子设备 | |
US11340964B2 (en) | Systems and methods for efficient management of advanced functions in software defined storage systems | |
US11874821B2 (en) | Block aggregation for shared streams |
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 |