数据聚合方法、装置、电子设备及存储介质与流程

未命名 07-27 阅读:124 评论:0


1.本技术涉及数据处理技术领域,尤其涉及一种数据聚合方法、装置、电子设备及存储介质。


背景技术:

2.随着大数据时代的到来,许多数据都需要聚合后再展示。例如:业务模块产生的数据,需要在数据聚合平台中聚合,聚合后的数据再由大屏展示。
3.目前,数据聚合平台主要通过bi工具实现多数据聚合。当出现数据聚合需求时,开发人员就需要根据数据聚合需求在bi工具中进行开发。由于bi工具通过pg数据库中的json函数实现数据聚合,因此,开发人员需要在bi工具写入java代码,以使得bi工具在运行后,能够对业务模块产生的相关数据按照数据聚合需求进行聚合。
4.但是,在bi工具中写入java代码,对于写入人员的专业水平要求较高,只有专门从事软件开发的人员才能够操作。而数据聚合需求不断增加,有限数量的开发人员无法在短时间内通过bi工具实现大量的数据聚合需求,进而导致数据聚合平台针对大量数据聚合需求进行数据聚合的效率低下。


技术实现要素:

5.本技术实施例的目的是提供一种数据聚合方法、装置、电子设备及存储介质,以提高数据聚合效率。
6.为解决上述技术问题,本技术实施例提供如下技术方案:
7.本技术第一方面提供一种数据聚合方法,所述方法包括:接收聚合逻辑代码,所述聚合逻辑代码基于数据聚合需求编写,与数据聚合工具所使用的代码语言不同;通过解释器将所述聚合逻辑代码转译为与所述数据聚合工具所使用的代码语言一致的转译聚合代码;将所述转译聚合代码注入所述数据聚合工具中的数据聚合框架内,以使注入所述转译聚合代码的数据聚合工具运行后能够按照所述数据聚合需求进行数据聚合。
8.本技术第二方面提供一种数据聚合装置,所述装置包括:接收模块,用于接收聚合逻辑代码,所述聚合逻辑代码基于数据聚合需求编写,与数据聚合工具所使用的代码语言不同;转译模块,用于通过解释器将所述聚合逻辑代码转译为与所述数据聚合工具所使用的代码语言一致的转译聚合代码;注入聚合模块,用于将所述转译聚合代码注入所述数据聚合工具中的数据聚合框架内,以使注入所述转译聚合代码的数据聚合工具运行后能够按照所述数据聚合需求进行数据聚合。
9.本技术第三方面提供一种电子设备,所述电子设备包括:处理器、存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行第一方面中的方法。
10.本技术第四方面提供一种计算机可读存储介质,所述存储介质包括:存储的程序;其中,在所述程序运行时控制所述存储介质所在设备执行第一方面中的方法。
11.相较于现有技术,本技术第一方面提供的数据聚合方法,数据聚合平台在接收到基于数据聚合需求编写的、与数据聚合工具所使用的代码语言不同的聚合逻辑代码后,通过解释器将聚合逻辑代码转译为与数据聚合工具所使用的代码语言一致的转译聚合代码,进而将转译聚合代码注入数据聚合工具中的数据聚合框架内,以使注入转译聚合代码的数据聚合工具运行后能够按照数据聚合需求进行数据聚合。这样,在数据聚合工具中基于数据聚合需求进行开发时,就可以不限于使用数据聚合工具所使用的代码语言,使用简单易学的代码语言也能够在数据聚合工具中实现数据聚合需求的开发,更多的人员都能够参与到数据聚合平台中数据聚合需求的开发,使得大量的数据聚合需求通过更多人员的分担,在短时间内就能够完成开发,提高数据聚合平台针对大量数据聚合需求进行数据聚合的效率。
12.本技术第二方面提供的数据聚合装置、第三方面提供的电子设备、第四方面提供的计算机可读存储介质,与第一方面提供的数据聚合方法具有相同或相似的有益效果。
附图说明
13.通过参考附图阅读下文的详细描述,本技术示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本技术的若干实施方式,相同或对应的标号表示相同或对应的部分,其中:
14.图1为本技术实施例中数据聚合方法的场景架构示意图一;
15.图2为本技术实施例中数据聚合方法的流程示意图;
16.图3为本技术实施例中数据聚合工具处理聚合逻辑代码的过程示意图一;
17.图4为本技术实施例中数据聚合框架的架构示意图一;
18.图5为本技术实施例中数据聚合方法的场景架构示意图二;
19.图6为本技术实施例中数据聚合工具处理聚合逻辑代码的过程示意图二;
20.图7为本技术实施例中数据聚合框架的架构示意图二;
21.图8为本技术实施例中数据聚合装置的结构示意图;
22.图9为本技术实施例中电子设备的结构示意图。
具体实施方式
23.下面将参照附图更详细地描述本技术的示例性实施方式。虽然附图中显示了本技术的示例性实施方式,然而应当理解,可以以各种形式实现本技术而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本技术,并且能够将本技术的范围完整的传达给本领域的技术人员。
24.需要注意的是,除非另有说明,本技术使用的技术术语或者科学术语应当为本技术所属领域技术人员所理解的通常意义。
25.目前,数据聚合平台通过bi工具实现某种数据聚合需求,需要开发人员在bi工具中使用java代码进行开发,这对开发人员的专业水平要求较高,只有专门从事软件开发的人员才能够实现。而数据聚合需求的数量在不断增加,有限的开发人员无法在短时间内满足大量的数据聚合需求,这就导致数据聚合平台对于大量的数据聚合需求的执行效率低下。
26.发明人经过研究发现,导致数据聚合平台对大量数据聚合需求的执行效率低下的主要原因是在bi工具中进行需求开发需要使用java代码,而java代码只有专门从事软件开发工作的人员才会使用。如果在bi工具中进行需求开发时不再限制于仅仅使用java代码,而可以使用其他的代码,例如:python脚本、c#代码等。这样,不是专门从事软件开发的人员,例如:运维人员、管理人员等,也可以在bi工具中基于数据聚合需求进行开发,使得大量的数据聚合需求能够被更多的人员分担,进而在短时间内开发完成,提高数据聚合平台对大量数据聚合需求的执行效率。
27.有鉴于此,本技术实施例提供一种数据聚合方法、装置、电子设备及存储介质,任何人员都可以基于数据获取需求,使用与数据聚合平台中数据聚合工具不同的代码语言编辑出聚合逻辑代码,数据聚合平台再通过解释器将该聚合逻辑代码转译为与数据聚合工具的代码语言相同的转译聚合代码,进而将转译聚合代码注入到数据聚合工具的数据聚合框架内,数据聚合工具在运行后,就能够按照数据聚合需求对相关数据进行聚合。这样,在数据聚合工具中基于数据聚合需求进行开发时,就可以不仅限于使用java代码这样的高级代码,使用简单易学的代码也能够在数据聚合工具中实现数据聚合需求的开发,更多的人员都能够参与到数据聚合平台中数据聚合需求的开发,使得大量的数据聚合需求通过更多人员的分担,在短时间内就能够完成开发,提高数据聚合平台针对大量数据聚合需求进行数据聚合的效率。
28.为了能够更加清楚的对本技术实施例提供的数据聚合方法进行说明,首先,对本技术实施例提供的数据聚合方法所处的使用场景进行说明。
29.图1为本技术实施例中数据聚合方法的场景架构示意图一,参见图1所示,该架构可以包括:业务模块、数据聚合平台和大屏。
30.这里的业务模块,就是生产待聚合数据的模块。在实际应用中,可以是指某一个或某几个平台、网页或应用程序(application,app)。对于业务模块的具体类型,此处不做限定。业务模块在产生待聚合数据后,就会将待聚合数据发送给数据聚合平台。
31.在数据聚合平台中,包括有数据聚合工具。而本技术实施例中的数据聚合方法就实现在数据聚合工具中。数据聚合平台接收到待聚合数据,数据聚合平台中的数据聚合工具已经按照本技术实施例中的数据聚合方法将待聚合数据的数据聚合需求开发完成,运行后能够直接将待聚合数据进行聚合,得到聚合数据,进而将数据发送给大屏。
32.大屏接收到聚合数据后,就能够基于聚合数据进行显示,以供用户直观的查看业务模块生产出的数据。
33.接下来,对本技术实施例提供的数据聚合方法进行详细说明。
34.图2为本技术实施例中数据聚合方法的流程示意图,参见图2所示,该方法可以包括:
35.s201:接收聚合逻辑代码。
36.其中,聚合逻辑代码基于数据聚合需求编写,与数据聚合工具所使用的代码语言不同。
37.这里的数据聚合需求,可以是指需要将哪些数据按照什么样的逻辑进行聚合,例如:需要将购物软件a中展示的服饰类商品、食物类商品和电子类商品的每日浏览量进行统计。
38.当出现某一数据聚合需求时,相关人员可以根据该数据聚合需求,使用任何一种代码语言(如果使用与数据聚合工具相同的代码语言,就是现有技术,如果使用与数据聚合工具不同的代码语言,就是本技术实施例所述的数据聚合方法),编写出聚合逻辑代码,并将该聚合逻辑代码发送给数据聚合平台,数据聚合平台就能够接收到基于数据聚合需求编写的聚合逻辑代码,进而使聚合逻辑代码在数据聚合工具中实现数据聚合需求。
39.s202:通过解释器将聚合逻辑代码转译为与数据聚合工具所使用的代码语言一致的转译聚合代码。
40.由于数据聚合工具接收到的聚合逻辑代码与数据聚合工具本身所使用的代码的语言不同,直接将聚合逻辑代码注入到数据聚合工具中,数据聚合工具无法识别,进而无法基于聚合逻辑代码按照数据聚合需求实现数据聚合,因此,需要将聚合逻辑代码进行转译,转译为数据聚合工具所使用的代码语言对应的代码,及转译聚合代码。进行代码转译时,使用的工具就是解释器。
41.举例来说,聚合逻辑代码为python脚本,而数据聚合平台使用的是java语言,因此,需要将python脚本输入到解释器中,解释器输出的就是java代码。这里的python脚本与java代码其中的聚合逻辑相同,只是使用了不同的代码语言表示。
42.s203:将转译聚合代码注入数据聚合工具中的数据聚合框架内,以使注入转译聚合代码的数据聚合工具运行后能够按照数据聚合需求进行数据聚合。
43.在聚合工具中,具有开发人员预先搭建好的数据聚合框架。在数据聚合框架中,已编辑好能够实现各种数据聚合的通用代码,只有具体的聚合逻辑处预留出,以便将相关人员编辑的、经过转译的转译逻辑代码填写进来。这样,数据聚合平台通过数据聚合框架就能够实现多种数据聚合需求。
44.举例来说,在数据聚合平台的数据聚合工具中预先搭建好数据聚合框架x,当存储数据聚合需求a时,人员1基于数据聚合需求a编辑出聚合逻辑代码a,解释器将聚合逻辑代码a转译为转译聚合代码a1,数据聚合工具将转译聚合代码a1注入到数据聚合框架x中。当存储数据聚合需求b时,人员2基于数据聚合需求b编辑出聚合逻辑代码b,解释器将聚合逻辑代码b转译为转译聚合代码b1,数据聚合工具将转译聚合代码b1注入到数据聚合框架x中。这样,数据聚合工具通过数据聚合框架x就能够实现数据聚合需求1和数据聚合需求2。
45.转译聚合代码在数据聚合框架中注入完成后,数据聚合平台基于注入转译聚合代码的数据聚合框架运行,就能够按照数据聚合需求对相关数据进行聚合。
46.由上述内容可知,本技术实施例提供的数据聚合方法,数据聚合平台在接收到基于数据聚合需求编写的、与数据聚合工具所使用的代码语言不同的聚合逻辑代码后,通过解释器将聚合逻辑代码转译为与数据聚合工具所使用的代码语言一致的转译聚合代码,进而将转译聚合代码注入数据聚合工具中的数据聚合框架内,以使注入转译聚合代码的数据聚合工具运行后能够按照数据聚合需求进行数据聚合。这样,在数据聚合工具中基于数据聚合需求进行开发时,就可以不限于使用数据聚合工具所使用的代码语言,使用简单易学的代码语言也能够在数据聚合工具中实现数据聚合需求的开发,更多的人员都能够参与到数据聚合平台中数据聚合需求的开发,使得大量的数据聚合需求通过更多人员的分担,在短时间内就能够完成开发,提高数据聚合平台针对大量数据聚合需求进行数据聚合的效率。
47.进一步地,作为对上述步骤s202和s203的扩展,由于聚合逻辑代码并不是在数据聚合工具中直接进行开发的,可能会存在安全风险,因此,聚合逻辑代码在数据聚合工具中实际运行时,需要对聚合逻辑代码所运行的环境的执行权限进行限制。
48.具体来说,在上述步骤s202之前,该方法可以包括:
49.步骤a1:将聚合逻辑代码存储于第一容器。
50.数据聚合工具在接收到聚合逻辑代码后,聚合逻辑代码可能并不需要立即被执行,可以先将聚合逻辑代码存储于第一容器中。
51.这里的第一容器,可以是数据聚合工具中的任意容器,例如:java容器。对于第一容器的具体类型,此处不做限定。
52.步骤a2:响应代码执行指令,将聚合逻辑代码从第一容器移至第二容器。
53.其中,第二容器的执行权限低于第一容器的执行权限。
54.当聚合逻辑代码需要被执行时,就将聚合逻辑代码从第一容器移至第二容器。第二容器预先配置有安全策略。聚合逻辑代码在第二容器中执行时,其权限会受到控制。例如:不允许修改操作系统文件、不允许访问网络硬件等。对于第二容器中配置的执行权限的具体内容,此处不做限定。
55.图3为本技术实施例中数据聚合工具处理聚合逻辑代码的过程示意图一,参见图3所示,数据聚合工具首先会接收到相关人员输入的聚合逻辑代码,然后将聚合逻辑代码存储在第一容器中。当聚合逻辑代码需要执行时,数据聚合工具将第一容器中的聚合逻辑代码移动到有执行权限限制的第二容器中。
56.在将聚合逻辑代码从无执行权限限制的第一容器中转移至有操作权限限制的第二容器中后,就可以在第二容器中执行聚合逻辑代码,能够限制聚合逻辑代码进行任何可能危害到平台安全的操作。
57.相应的,上述步骤s202可以是:在第二容器中,通过解释器将聚合逻辑代码转译为与数据聚合工具所使用的代码语言一致的转译聚合代码。
58.相应的,上述步骤s203可以是:在第二容器中,将转译聚合代码注入数据聚合工具中的数据聚合框架内,以使注入转译聚合代码的数据聚合工具运行后能够按照数据聚合需求进行数据聚合。
59.由上述内容可知,将聚合逻辑代码放置在具有执行权限限制的第二容器中执行,能够避免聚合逻辑代码执行有关危害数据聚合工具的不安全操作,使得数据聚合工具能够适用于各种代码语言的基础上,同时能够确保数据聚合工具的安全运行。
60.进一步地,作为对上述步骤a1的扩展,在将聚合逻辑代码存储在第一容器中前,可以先对聚合逻辑代码进行安全验证,初步确保存储在第一容器中的聚合逻辑代码都是相对安全的。
61.具体来说,在上述步骤a1之前,该方法还可以包括:
62.步骤b1:判断聚合逻辑代码是否存在安全风险。若是,则执行步骤b2,若否,则执行步骤a1。
63.虽然第一容器中不执行聚合逻辑代码,但是,第一容器用来存储聚合逻辑代码,为了避免聚合逻辑代码中恶意写入能够使得聚合逻辑代码在第一容器中执行的危害数据聚合工具安全的代码,在将聚合逻辑代码存储在第一容器中前,需要先判断聚合逻辑代码是
否存在安全风险。
64.在判断聚合逻辑代码是否存在安全风险的过程中,可以将聚合逻辑代码与一些已知的不安全代码或函数进行对比,如果对比一致,则认为聚合逻辑代码存在安全风险,如果对比不一致,则认为聚合逻辑代码不存在安全风险。还可以将聚合逻辑代码交由第三方人员进行分析,如果第三方人员反馈聚合逻辑代码存在安全风险,则认为聚合逻辑代码存在安全风险,如果第三方人员反馈聚合逻辑代码不存在安全风险,则认为聚合逻辑代码不存在安全风险。对于聚合逻辑代码是否存在安全风险的具体判断方式,此处不做限定。
65.步骤b2:丢弃聚合逻辑代码。
66.在判断出聚合逻辑代码存在安全风险后,说明聚合逻辑代码的目的可能并不是为了实现某种方式的数据聚合,而是对数据聚合工具进行攻击,此时,就不再将该聚合逻辑代码存储在第一容器中,而是丢弃该聚合逻辑代码。与此同时,还可以输出一个提示信息,以提示输入该聚合逻辑代码的人员或者数据聚合工具的管理人员,本次输入的聚合逻辑代码存在安全风险,使得输入该聚合逻辑代码的人员修改代码,以及管理人员加强对输入代码的防范。
67.步骤a1为:将聚合逻辑代码存储于第一容器。
68.在判断出聚合逻辑代码不存在安全风险后,说明聚合逻辑代码的目的可能就是为了实现某种方式的数据聚合,并不是对数据聚合工具进行攻击,此时,就可以将聚合逻辑代码存储在第一容器中,以待运行。
69.由上述内容可知,在将聚合逻辑代码存储在第一容器中前,先对聚合逻辑代码的安全风险进行验证,只有通过安全风险验证的聚合逻辑代码才能够存储于第一容器,这样能够确保第一容器中存储的聚合逻辑代码相对安全,进一步确保数据聚合工具的安全运行。
70.进一步地,作为对上述步骤b1的细化,在聚合逻辑代码中,大多数情况下,都是通过代码中的函数对数据聚合工具进行恶意攻击的,因此可以通过函数黑名单或函数白名单对聚合逻辑代码是否存在安全风险进行判断。
71.具体来说,上述步骤b1可以包括:
72.步骤b11:判断聚合逻辑代码中使用的函数是否存在于函数黑名单中。
73.有一些函数,就是为了在网络中进行恶意攻击而创建的。可以将以往发现的这些函数集中在一个名单中,就构成了函数黑名单。
74.在对聚合逻辑代码中的函数进行判断的过程中,可以先从聚合逻辑代码中提取出所有的函数,然后将提取的每一个函数分别与函数黑名单中的函数进行匹配,如果提取的某一个函数与函数黑名单中的某一个函数匹配,就确定聚合逻辑代码中使用的函数存在于函数黑名单中,如果提取的所有函数与函数黑名单中的所有函数均不匹配,就确定聚合逻辑代码中使用的函数不存在于函数黑名单中。还可以将函数黑名单中的每一个函数在聚合逻辑代码中进行匹配,如果函数黑名单中的某一个函数在聚合逻辑代码中匹配上,就确定聚合逻辑代码中使用的函数存在于函数黑名单中,如果函数黑名单中的所有函数在聚合逻辑代码中都没有匹配上,就确定聚合逻辑代码中使用的函数不存在于函数黑名单中。对于判断聚合逻辑代码中使用的函数是否存在于函数黑名单中的具体方式,此处不做限定。
75.步骤b12:判断聚合逻辑代码中使用的函数是否存在于函数白名单之外。
76.有一些函数,就是为了在网络中实现某种正常功能而创建的。可以将以往确认的这些函数集中在一个名单中,就构成了函数白名单。
77.在对聚合逻辑代码中的函数进行判断的过程中,可以先从聚合逻辑代码中提取出所有的函数,然后将提取的每一个函数分别与函数白名单中的函数进行匹配,如果提取的所有函数与函数白名单中的所有函数均不匹配,就确定聚合逻辑代码中使用的函数存在于函数白名单之外,如果提取的某一个函数与函数白名单中的某一个函数匹配,就确定聚合逻辑代码中使用的函数不存在于函数白名单之外。还可以将函数白名单中的每一个函数在聚合逻辑代码中进行匹配,如果函数白名单中的所有函数在聚合逻辑代码中都没有匹配上,就确定聚合逻辑代码中使用的函数存在于函数白名单之外,如果函数白名单中的某一个函数在聚合逻辑代码中匹配上,就确定聚合逻辑代码中使用的函数不存在于函数白名单之外。对于判断聚合逻辑代码中使用的函数是否存在于函数白名单之外的具体方式,此处不做限定。
78.这里需要说明的是,上述步骤b11和步骤b12可以同时执行,也可以择一执行。当上述步骤b11和步骤b12可以同时执行时,步骤b11和步骤b12的判断结果中只要有一个为是,就认为聚合逻辑代码存在安全风险。
79.由上述内容可知,通过函数黑名单或函数白名单,能够发现聚合逻辑代码中存在安全风险的函数,进而确定聚合逻辑代码是否存在安全风险,无需再对聚合逻辑代码中函数之外的内容进行判断,提高聚合逻辑代码安全风险的验证效率。
80.进一步地,作为对上述步骤a1的扩展,在将聚合逻辑代码存储在第一容器中后,还可以提取聚合逻辑代码的摘要信息,并将提取的摘要信息与聚合逻辑代码一起存储在第一容器中,能够发现聚合逻辑代码是否在第一容器中发生修改,以及便于从第一容器中查找出相应的聚合逻辑代码。
81.具体来说,在上述步骤a1之后,该方法还可以包括:
82.步骤c1:提取聚合逻辑代码的摘要信息。
83.在实际应用中,可以提取聚合逻辑代码的信息摘要算法(message digest algorithm,md5)值。当然,也可以提取聚合逻辑代码其他类型的摘要信息,例如:从聚合逻辑代码中提取出的关键字段。对于提取的摘要信息的具体类型,此处不做限定。
84.步骤c2:将摘要信息在第一容器中与聚合逻辑代码对应存储。
85.在从聚合逻辑代码中提取出摘要信息后,就可以将摘要信息与聚合逻辑代码一起对应存储在第一容器中。
86.当需要运行聚合逻辑代码时,就可以根据摘要信息在第一容器中查找相应的聚合逻辑代码,或者从第一容器中的聚合逻辑代码中再次提取摘要信息,并与之前存储的摘要信息进行对比,以确定该聚合逻辑代码是否在第一容器中发生了修改。
87.由上述内容可知,在将聚合逻辑代码存储于第一容器的同时,还提取聚合逻辑代码的摘要信息,并将聚合逻辑代码的摘要信息与聚合逻辑代码对应存储在第一容器中,以便通过存储的摘要信息判断聚合逻辑代码是否在第一容器中发生修改,提高数据聚合工具运行的安全性,以及通过摘要信息能够从第一容器中快速准确的查找出所需的聚合逻辑代码,进而执行,提高数据聚合工具进行数据聚合的效率和准确性。
88.进一步地,作为对上述步骤c2的扩展,在将聚合逻辑代码从第一容器移至第二容
器的过程中,可以先不直接将聚合逻辑代码从第一容器移至第二容器,而是先判断第一容器中的聚合逻辑代码是否产生变化,如果确定没有产生变化,再将第一容器中的聚合逻辑代码移至第二容器。
89.具体来说,上述步骤a2可以包括:
90.步骤c3:响应代码执行指令,从第一容器中提取聚合逻辑代码。
91.当聚合逻辑代码需要执行时,相关人员会在数据聚合工具中输入代码执行指令,数据聚合工具会响应该代码执行指令,并从第一容器中提取出该代码执行指令指示的聚合逻辑代码。
92.步骤c4:再次提取聚合逻辑代码的摘要信息。
93.在从第一容器中提取出聚合逻辑代码后,从提取的聚合逻辑代码中提取其摘要信息。这里提取聚合逻辑代码中摘要信息的具体方式,与上述步骤c2相同,此处不再赘述。
94.步骤c5:判断再次提取的摘要信息与存储前提取的摘要信息是否一致。若是,则执行步骤c6,若否,则执行步骤c7。
95.步骤c6:将聚合逻辑代码从第一容器移至第二容器。
96.步骤c7:丢弃从第一容器中提取的聚合逻辑代码。
97.相关人员在将聚合逻辑代码输入至数据聚合工具中时,其输入的聚合逻辑代码可能并不任何问题,也会通过安全验证,并存储在第一容器中。但是,一旦聚合逻辑代码存储在第一容器中后,相关人员还可以对聚合逻辑代码进行修改,将聚合逻辑代码修改为能够对数据聚合工具进行攻击的代码,因此需要确定从第一容器中提取出的聚合逻辑代码是否为当时存储的聚合逻辑代码。
98.而聚合逻辑代码的内容一旦发生变化,提取的摘要信息也会有所差异。在第一容器中存储的摘要信息是基于存储时的聚合逻辑代码得到的,再从此时提取的聚合逻辑代码中提取摘要信息,并将这两个摘要信息对比,如果一致,说明当初存储的聚合逻辑代码与此时提取的聚合逻辑代码一致,聚合逻辑代码并没有在存储期间发生修改,可以将从第一容器中提取的聚合逻辑代码移至第二容器中执行。如果不一致,说明当初存储的聚合逻辑代码与此时提取的聚合逻辑代码不一致,聚合逻辑代码在存储期间发生了修改,就需要将从第一容器中提取出的聚合逻辑代码丢弃,避免其落入第二容器中执行,对数据聚合工具产生安全威胁。与此同时,还可以输出一个提示信息,以提示数据聚合工具的管理人员,第一容器中存储的聚合逻辑代码被修改过,需要对数据聚合工具采取相应的保护措施。
99.由上述内容可知,从第一容器中提取出聚合逻辑代码后,从提取的聚合逻辑代码中提取摘要信息,并将提取的摘要信息与第一容器中存储的摘要信息进行对比,以确定聚合逻辑代码存储在第一容器的过程中是否发生修改,只有才确定没有发生修改的情况下,才能够将聚合逻辑代码移送至第二容器中执行,确保数据聚合工具的安全性。
100.进一步地,作为对图2所述方法的扩展,还可以对数据聚合框架中的内容进行扩展,以使数据聚合工具能够适用于更多的场景。
101.图4为本技术实施例中数据聚合框架的架构示意图一,参见图4所示,在数据聚合框架中,至少包括有:前置模块、聚合模块和后置模块。其中,前置模块位于聚合模块之前,用于对聚合前的数据进行预处理。后置模块位于聚合模块之后,用于对聚合后的数据进行处理。而聚合模块就是对数据进行聚合处理。
102.具体来说,在上述步骤s201之前,该方法还可以包括:
103.步骤d1:接收功能扩展信息。
104.当相关人员需要对数据聚合工具中的功能进行扩展时,也就是想在数据聚合工具中增加一些数据处理方式,以在合适的时机对聚合前或聚合后的数据进行处理,相关人员可以将数据处理方式以及数据处理时机等内容编辑在功能扩展信息中,并输入到数据聚合工具中。
105.步骤d2:从功能扩展信息中提取数据处理方式和数据处理时机。
106.数据聚合工具接收到功能扩展信息后,就可以对功能扩展信息进行解析,进而从功能扩展信息中提取出数据处理方式和数据处理时机。
107.步骤d3:根据数据处理时机从前置模块、聚合模块和后置模块中确定出目标模块。
108.不同的数据处理方式需要在不同的模块中实现,例如:数据认证需要在前置模块中实现,数据聚合、mock数据的判断需要在聚合模块中实现,数据的排序、去重、推送、采集处理日志等需要在后置模块中实现。数据处理时机中就给出了需要将相应的数据处理方式放在哪一个模块中实现。根据数据处理时机能够从前置模块、聚合模块和后置模块中选择出执行相应的数据处理方式的目标模块。
109.步骤d4:将数据处理方式添加到目标模块中。
110.数据聚合工具在确定了执行数据处理方式的目标模块后,就可以将数据处理方式以代码的形式添加到数据聚合框架的相应模块中。
111.由上述内容可知,根据相关人员输入的功能扩展信息,能够将相关人员需要扩展的数据处理方式添加到数据聚合框架的前置模块、聚合模块或后置模块中,使得数据聚合工具能够实现更多的扩展功能,增加了数据聚合工具的使用场景。
112.进一步地,作为对上述步骤d4的扩展,在对数据聚合框架进行功能扩展后,后续待聚合的数据在进行聚合的同时,还可以使用这些扩展的功能。其中一项扩展功能就是在数据聚合框架的前置模块中,对不同源发送的数据进行认证,以实现数据聚合工具能够聚合多源数据。
113.具体来说,数据处理方式为认证和聚合,目标模块为前置模块和聚合模块。
114.在上述步骤d4之后,该方法还可以包括:
115.步骤d51:接收多条待聚合数据.
116.其中,多条待聚合数据来自不同的数据源。
117.有时需要聚合的数据并不是同一个源发出的,可能需要将多个源发出的数据聚合。多条待聚合数据就是不同的数据源发出的、需要进行聚合的数据。例如:3条待聚合数据,待聚合数据1来组于数据源a,待聚合数据2来组于数据源b,待聚合数据3来组于数据源a。也就是说,多条数据源中的数据,有的可以来自于同一数据源,有的则来自于不同的数据源。
118.步骤d52:在前置模块中对多条待聚合数据进行认证。
119.由于数据聚合工具中接入了多个数据源,有时进行数据聚合仅需要其中某几个数据源的数据,为了将无需的数据源产生的数据过滤,就需要在聚合数据之前,对接收到的多条待聚合数据进行认证。
120.在实际应用中,可以进行账号密码、hook等形式的认证,对于认证的具体方式,此
处不做限定。
121.举例来说,假设数据聚合工具中接入了数据源a、数据源b和数据源c,数据源a产生数据1和数据2,数据源b产生数据3,数据源c产生数据4,目前只需要将数据源a和数据源b产生的数据聚合。此时,接收到数据1、数据2、数据3和数据4,需要查看数据1、数据2、数据3和数据4对应的数据源接入时的账号和密码,即,查看数据源a、数据源b和数据源c所使用的账号和密码,经过查看发现,数据源c不是此时聚合需要的数据源,因此,数据源c生产的数据4没有通过认证,数据源a生产的数据1和数据2通过认证,数据源b生产的数据3通过认证。
122.步骤d53:当认证通过时,在聚合模块中对认证通过的待聚合数据进行聚合。
123.如果待聚合数据通过认证,就可以进入到聚合模块中与其他数据进行聚合。而如果待聚合数据没有通过认证,则不能够使其进入聚合模块参与数据聚合,可以丢弃。
124.由上述内容可知,通过对待聚合的数据进行认证,能够使不同数据源的数据实现聚合,解决了数据聚合工具无法实现多源数据聚合的问题。
125.进一步地,作为对上述步骤d4的扩展,在对数据聚合框架进行功能扩展后,后续待聚合的数据在进行聚合的同时,还可以使用这些扩展的功能。其中一项扩展功能就是在数据聚合框架的聚合模块中,根据实际情况聚合mock数据,并输出给大屏展示。
126.具体来说,数据处理方式为mock数据判断和聚合,目标模块为聚合模块。
127.在上述步骤d4之后,该方法还可以包括:
128.步骤d61:接收前置模块输出的前置处理数据。
129.待聚合数据在前置模块中进行预处理之后,就会得到前置处理数据,进而发送至聚合模块中进行聚合。
130.步骤d62:基于mock数据展示需求,在聚合模块中判断前置处理数据是否为mock数据。若是,则执行步骤d63,若否,则执行步骤d64。
131.步骤d63:在聚合模块中对前置处理数据进行聚合。
132.步骤d64:丢弃前置处理数据,继续接收前置模块输出的前置处理数据。
133.聚合模块在对前置模块输出的前置处理数据进行聚合前,需要先查看是否存在mock数据展示需求,如果存在,就需要先判断前置处理数据是否为mock数据。若是,说明前置处理数据符合需求,即当前的待聚合数据符合mock数据展示需求,则在聚合模块中对前置处理数据进行聚合。若否,说明前置处理数据不符合需求,即当前的待聚合数据不符合mock数据展示需求,则可以丢弃该前置处理数据,继续接收前置模块输出的前置处理数据。
134.由上述内容可知,通过在聚合模块中设置mock数据的判断机制,当存在mock数据展示需求时,能够将mock数据进行聚合,从而输出至大屏展示,丰富了数据聚合工具的功能。
135.进一步地,作为对上述步骤d4的扩展,在对数据聚合框架进行功能扩展后,后续待聚合的数据在进行聚合的同时,还可以使用这些扩展的功能。其中一项扩展功能就是在数据聚合框架的后置模块中,对聚合后的数据进行进一步处理。
136.具体来说,数据处理方式为排序、去重、推送、采集处理日志中的一个或多个,目标模块为后置模块。
137.在上述步骤d4之后,该方法还可以包括:
138.步骤d71:接收聚合模块输出的聚合数据。
http交互。
149.图7为本技术实施例中数据聚合框架的架构示意图二,参见图7所示,数据聚合框架pdm的核心就是一个数据生产工厂datafactory。通过定义工厂流水线的生产步骤,以及各环节前后的前/后置处理器datafactory postprocessor,过程中监听datafactory listenner,以达到聚合框架灵活扩展的目的。
150.在数据生产流水线datafactory中,依次进行:生产前检查datadefinition,datadefinition填入setdefinition,获取生产分布式锁,生产前置处理invokeproductbeforeprocessors,其中包括完整性校验、特征填充和建立聚合本地结构化表(更新表),然后获取数据productdata,对于productdata,判断是否为mock,若是,则再次获取productdata,若否,则进入数据生产子流程doproduct,然后生产完成后置处理invokeproductpostprocessors,其中包括更新本地结果,然后完工监听发布pushdatafactorylistener,其中包括通知界面管理模块事件datafacejobpublisher,push mq,最后释放生产分布式锁,datadefinition复位。
151.在数据生产子流程doproduct中,依次进行:采集前置处理invokecollectbeforeprocessors,其中包括http数据集、公共参数处置前置处理,大禹认证前置处理,tsoc认证前置处理,业务传参前置处理,时间参数前置处理,分页参数预处理前置处理,其他集参数预处理前置处理,然后采集collectdata,其中包括采集工厂&采集链,http采集,sql采集,然后采集后置处理invokecollectpostprocessors,其中包括待扩展的公共处理,例如去重、排序等,然后脚本执行前置处理execscrippostprocessbefore,其中包括待扩展的处理,例如校验等,然后脚本执行execscript,其中包括脚本执行工厂&执行链,python执行,js执行。
152.这样,数据聚合框架就能够实现:http认证,通过扩展postprocessor,解决接入不同http数据源的认证问题;满足不同的数据使用方式的需求,通过扩展postprocessor解决聚合结果的pull和push的不同需求;支持二开,通过datafactory的postprocessor可方便扩展聚合平台特性,如增加对聚合结果排序,去重的支持;通过listenner对聚合过程的日志进行采集。
153.基于同一发明构思,作为对上述方法的实现,本技术实施例还提供了一种数据聚合装置。图8为本技术实施例中数据聚合装置的结构示意图,参见图8所示,该装置可以包括:
154.接收模块801,用于接收聚合逻辑代码,所述聚合逻辑代码基于数据聚合需求编写,与数据聚合工具所使用的代码语言不同;
155.转译模块802,用于通过解释器将所述聚合逻辑代码转译为与所述数据聚合工具所使用的代码语言一致的转译聚合代码;
156.注入聚合模块803,用于将所述转译聚合代码注入所述数据聚合工具中的数据聚合框架内,以使注入所述转译聚合代码的数据聚合工具运行后能够按照所述数据聚合需求进行数据聚合。
157.进一步地,所述装置还包括:转移模块,用于将所述聚合逻辑代码存储于第一容器;响应代码执行指令,将所述聚合逻辑代码从所述第一容器移至第二容器,所述第二容器的执行权限低于所述第一容器的执行权限;
158.所述转译模块,具体用于在所述第二容器中,通过解释器将所述聚合逻辑代码转译为与所述数据聚合工具所使用的代码语言一致的转译聚合代码。
159.进一步地,所述装置还包括:校验模块,用于判断所述聚合逻辑代码是否存在安全风险;若是,则丢弃所述聚合逻辑代码;
160.所述转移模块,具体用于若否,则将所述聚合逻辑代码存储于第一容器。
161.进一步地,所述校验模块,具体用于判断所述聚合逻辑代码中使用的函数是否存在于函数黑名单中;或者,判断所述聚合逻辑代码中使用的函数是否存在于函数白名单之外。
162.进一步地,所述装置还包括:认证模块,用于提取所述聚合逻辑代码的摘要信息;将所述摘要信息在所述第一容器中与所述聚合逻辑代码对应存储。
163.进一步地,所述转移模块,具体用于响应代码执行指令,从所述第一容器中提取所述聚合逻辑代码;再次提取所述聚合逻辑代码的摘要信息;判断再次提取的摘要信息与存储前提取的摘要信息是否一致;若是,则将所述聚合逻辑代码从所述第一容器移至第二容器;若否,则丢弃从所述第一容器中提取的所述聚合逻辑代码。
164.进一步地,所述数据聚合框架包括:聚合模块,以及位于所述聚合模块前的前置模块或者位于所述聚合模块后的后置模块,所述装置还包括:扩展模块,用于接收功能扩展信息;从所述功能扩展信息中提取数据处理方式和数据处理时机;根据所述数据处理时机从所述前置模块、所述聚合模块和所述后置模块中确定出目标模块;将所述数据处理方式添加到所述目标模块中。
165.进一步地,所述数据处理方式为认证和聚合,所述目标模块为前置模块和聚合模块,所述装置还包括:执行模块,用于接收多条待聚合数据,所述多条待聚合数据来自不同的数据源;在所述前置模块中对所述多条待聚合数据进行认证;当认证通过时,在所述聚合模块中对认证通过的待聚合数据进行聚合。
166.进一步地,所述数据处理方式为mock数据判断和聚合,所述目标模块为聚合模块,所述装置还包括:执行模块,用于接收所述前置模块输出的前置处理数据;基于mock数据展示需求,在所述聚合模块中判断所述前置处理数据是否为mock数据;若是,则在所述聚合模块中对所述前置处理数据进行聚合;若否,则丢弃所述前置处理数据,继续接收所述前置模块输出的前置处理数据。
167.进一步地,所述数据处理方式为排序、去重、推送、采集处理日志中的一个或多个,所述目标模块为后置模块,所述装置还包括:执行模块,用于接收所述聚合模块输出的聚合数据;在所述后置模块中对所述聚合数据进行排序、去重、推送、采集所述聚合模块的处理日志中的一个或多个。
168.这里需要指出的是,以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本技术装置实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
169.基于同一发明构思,本技术实施例还提供了一种电子设备。图9为本技术实施例中电子设备的结构示意图,参见图9所示,该电子设备可以包括:处理器901、存储器902、总线903;其中,处理器901、存储器902通过总线903完成相互间的通信;处理器901用于调用存储器902中的程序指令,以执行上述一个或多个实施例中的方法。
170.这里需要指出的是,以上电子设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本技术电子设备实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
171.基于同一发明构思,本技术实施例还提供了一种计算机可读存储介质,该存储介质可以包括:存储的程序;其中,在程序运行时控制存储介质所在设备执行上述一个或多个实施例中的方法。
172.这里需要指出的是,以上存储介质实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本技术存储介质实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
173.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。

技术特征:
1.一种数据聚合方法,其特征在于,所述方法包括:接收聚合逻辑代码,所述聚合逻辑代码基于数据聚合需求编写,与数据聚合工具所使用的代码语言不同;通过解释器将所述聚合逻辑代码转译为与所述数据聚合工具所使用的代码语言一致的转译聚合代码;将所述转译聚合代码注入所述数据聚合工具中的数据聚合框架内,以使注入所述转译聚合代码的数据聚合工具运行后能够按照所述数据聚合需求进行数据聚合。2.根据权利要求1所述的方法,其特征在于,在通过解释器将所述聚合逻辑代码转译为与所述数据聚合工具所使用的代码语言一致的转译聚合代码之前,所述方法还包括:将所述聚合逻辑代码存储于第一容器;响应代码执行指令,将所述聚合逻辑代码从所述第一容器移至第二容器,所述第二容器的执行权限低于所述第一容器的执行权限;所述通过解释器将所述聚合逻辑代码转译为与所述数据聚合工具所使用的代码语言一致的转译聚合代码,包括:在所述第二容器中,通过解释器将所述聚合逻辑代码转译为与所述数据聚合工具所使用的代码语言一致的转译聚合代码。3.根据权利要求2所述的方法,其特征在于,在将所述聚合逻辑代码存储于第一容器之前,所述方法还包括:判断所述聚合逻辑代码是否存在安全风险;若是,则丢弃所述聚合逻辑代码;所述将所述聚合逻辑代码存储于第一容器,包括:若否,则将所述聚合逻辑代码存储于第一容器。4.根据权利要求3所述的方法,其特征在于,所述判断所述聚合逻辑代码是否存在安全风险,包括:判断所述聚合逻辑代码中使用的函数是否存在于函数黑名单中;或者,判断所述聚合逻辑代码中使用的函数是否存在于函数白名单之外。5.根据权利要求2所述的方法,其特征在于,在将所述聚合逻辑代码存储于第一容器之后,所述方法还包括:提取所述聚合逻辑代码的摘要信息;将所述摘要信息在所述第一容器中与所述聚合逻辑代码对应存储。6.根据权利要求5所述的方法,其特征在于,所述响应代码执行指令,将所述聚合逻辑代码从所述第一容器移至第二容器,包括:响应代码执行指令,从所述第一容器中提取所述聚合逻辑代码;再次提取所述聚合逻辑代码的摘要信息;判断再次提取的摘要信息与存储前提取的摘要信息是否一致;若是,则将所述聚合逻辑代码从所述第一容器移至第二容器;若否,则丢弃从所述第一容器中提取的所述聚合逻辑代码。7.根据权利要求1至6中任一项所述的方法,其特征在于,所述数据聚合框架包括:聚合模块,以及位于所述聚合模块前的前置模块或者位于所述聚合模块后的后置模块,在接收
聚合逻辑代码之前,所述方法还包括:接收功能扩展信息;从所述功能扩展信息中提取数据处理方式和数据处理时机;根据所述数据处理时机从所述前置模块、所述聚合模块和所述后置模块中确定出目标模块;将所述数据处理方式添加到所述目标模块中。8.根据权利要求7所述的方法,其特征在于,所述数据处理方式为认证和聚合,所述目标模块为前置模块和聚合模块,在将所述数据处理方式添加到所述目标模块中之后,所述方法还包括:接收多条待聚合数据,所述多条待聚合数据来自不同的数据源;在所述前置模块中对所述多条待聚合数据进行认证;当认证通过时,在所述聚合模块中对认证通过的待聚合数据进行聚合。9.根据权利要求7所述的方法,其特征在于,所述数据处理方式为mock数据判断和聚合,所述目标模块为聚合模块,在将所述数据处理方式添加到所述目标模块中之后,所述方法还包括:接收所述前置模块输出的前置处理数据;基于mock数据展示需求,在所述聚合模块中判断所述前置处理数据是否为mock数据;若是,则在所述聚合模块中对所述前置处理数据进行聚合;若否,则丢弃所述前置处理数据,继续接收所述前置模块输出的前置处理数据。10.根据权利要求7所述的方法,其特征在于,所述数据处理方式为排序、去重、推送、采集处理日志中的一个或多个,所述目标模块为后置模块,在将所述数据处理方式添加到所述目标模块中之后,所述方法还包括:接收所述聚合模块输出的聚合数据;在所述后置模块中对所述聚合数据进行排序、去重、推送、采集所述聚合模块的处理日志中的一个或多个。11.一种数据聚合装置,其特征在于,所述装置包括:接收模块,用于接收聚合逻辑代码,所述聚合逻辑代码基于数据聚合需求编写,与数据聚合工具所使用的代码语言不同;转译模块,用于通过解释器将所述聚合逻辑代码转译为与所述数据聚合工具所使用的代码语言一致的转译聚合代码;注入聚合模块,用于将所述转译聚合代码注入所述数据聚合工具中的数据聚合框架内,以使注入所述转译聚合代码的数据聚合工具运行后能够按照所述数据聚合需求进行数据聚合。12.一种电子设备,其特征在于,所述电子设备包括:处理器、存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如权利要求1至10中任一项所述的方法。13.一种计算机可读存储介质,其特征在于,所述存储介质包括:存储的程序;其中,在所述程序运行时控制所述存储介质所在设备执行如权利要求1至10中任一项所述的方法。

技术总结
本申请提供一种数据聚合方法、装置、电子设备及存储介质,数据聚合方法包括:接收聚合逻辑代码,聚合逻辑代码基于数据聚合需求编写,与数据聚合工具所使用的代码语言不同;通过解释器将聚合逻辑代码转译为与数据聚合工具所使用的代码语言一致的转译聚合代码;将转译聚合代码注入数据聚合工具中的数据聚合框架内,以使注入转译聚合代码的数据聚合工具运行后能够按照数据聚合需求进行数据聚合。这样,就可以不限于使用数据聚合工具所使用的代码语言,更多的人员都能够参与到数据聚合平台中数据聚合需求的开发,使得大量的数据聚合需求在短时间内就能够完成开发,提高数据聚合平台针对大量数据聚合需求进行数据聚合的效率。台针对大量数据聚合需求进行数据聚合的效率。台针对大量数据聚合需求进行数据聚合的效率。


技术研发人员:刘旭 左文建
受保护的技术使用者:奇安信科技集团股份有限公司
技术研发日:2023.04.19
技术公布日:2023/7/25
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐