一种数据处理方法、装置以及相关设备和介质与流程

文档序号:18009807发布日期:2019-06-25 23:52阅读:157来源:国知局
一种数据处理方法、装置以及相关设备和介质与流程

本申请涉及计算机技术领域,尤其涉及一种数据处理方法、相关装置、设备和计算机存储介质。



背景技术:

在证券投资市场中,投资组合是由投资人或者金融机构所持有的股票、债券、金融衍生产品等组成的集合。即,投资者把资金按照一定比例分别投资于不同种类的有价证券或同一种类有价证券的多个品种上,这种分散的投资方式就是投资组合,通过投资组合可以分散风险。

在证券投资业务中,有必要对投资组合进行评价,从而为投资者提供投资参考,例如,评估投资组合的收益、风险等等,而在评价投资组合时常常需要计算投资组合的指标,也成为投资组合指标,通过该投资组合指标的大小进行评价,就能够得到准确地投资参考信息。

而投资组合指标的计算链路非常复杂,一个投资组合指标的计算可能会依赖多个其他指标,或者可能会依赖多个基础数据。不同的投资组合指标常常会依赖多个相同的基础数据,也常常会依赖多个相同的其他指标;但是,传统解决方案是,针对每个投资组合指标独立处理,每个投资组合指标都是基于自上而下的顺序,当该指标依赖某个基础数据则直接读取该基础数据以投入运算,当该指标依赖其他指标时,则即刻计算其他指标以投入运算,就这样按照顺序最终计算出指标。

由于传统解决方案在计算不同的投资组合指标时,都是基于自上而下的顺序独立运算,这就会导致,当计算依赖相同基础数据的不同指标时,会重复读取他们所依赖的相同基础数据,而当计算依赖相同其他指标的不同指标时,就会重复计算他们所依赖的相同指标,而这种依赖相同基础数据或者依赖相同指标的投资组合指标非常多,因此,采用传统解决方案计算投资组合指标,其计算效率不高,且极大浪费计算资源。



技术实现要素:

本申请提供了一种数据处理方法,其通过查找指标依赖图的方式确定目标指标依赖的具有优先级等级的参考指标,基于查找结果生成相应的计算任务,然后按照优先级顺序依次并发执行任务列表中的任务,针对同一优先级的相同相同计算任务仅执行一次,复用其计算结果,避免了重复计算导致的资源浪费,提高了计算效率。对应地,本申请还提供了一种数据处理装置、服务器以及计算机可读存储介质。

有鉴于此,本申请第一方面提供了一种数据处理方法,所述方法包括:

接收终端发送的指标获取请求,所述指标获取请求中包括目标指标规格,所述目标指标规格包括目标指标的指标标识、指标所面向的对象的对象标识和指标参数;

根据所述目标指标规格从指标依赖图中查找所述目标指标所依赖的具有优先级等级的参考指标;其中,所述指标依赖图是根据各指标的指标定义中的需求关系串联各指标生成的;

指标定义中若无依赖关系,则直接针对目标指标生成计算任务,添加至所述任务列表;

指标定义中若有依赖关系,则去依赖图中查找,并针对所述参考指标生成计算任务,添加至所述任务列表;

按照优先级降序顺序依次并发执行所述任务列表中的同一优先级的计算任务,针对同一优先级的相同计算任务则仅执行一个计算任务复用其计算结果;

根据执行所述任务列表中的计算任务得到的计算结果,确定所述目标指标的指标结果;

向终端发送所述目标指标的指标结果。

本申请第二方面提供一种数据处理装置,所述装置包括:

接收模块,用于接收终端发送的指标获取请求,所述指标获取请求中包括目标指标规格,所述目标指标规格包括目标指标的指标标识、指标所面向的对象的对象标识和指标参数;

查找模块,用于根据所述目标指标规格从指标依赖图中查找所述目标指标所依赖的具有优先级等级的参考指标;其中,所述指标依赖图是根据各指标的指标定义中的需求关系串联各指标生成的;

第一添加模块,用于指标定义中若无依赖关系,则直接针对目标指标生成计算任务,添加至所述任务列表;

第二添加模块,用于指标定义中若有依赖关系,则去依赖图中查找,并针对所述参考指标生成计算任务,添加至所述任务列表;

任务执行模块,用于按照优先级降序顺序依次并发执行所述任务列表中的同一优先级的计算任务,针对同一优先级的相同计算任务则仅执行一个计算任务复用其计算结果;

确定模块,用于根据执行所述任务列表中的计算任务得到的计算结果,确定所述目标指标的指标结果;

发送模块,用于向终端发送所述目标指标的指标结果。

本申请第三方面提供一种服务器,所述服务器包括处理器以及存储器:

所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;

所述处理器用于根据所述程序代码中的指令,执行如上述第一方面所述的数据处理方法的步骤。

本申请第四方面提供一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行上述第一方面所述的数据处理方法。

本申请第五方面提供一种包括指令的计算机程序产品,当其在计算机上运行时,使得所述计算机执行上述第一方面所述的数据处理方法。

从以上技术方案可以看出,本申请实施例具有以下优点:

本申请实施例中提供了一种数据处理方法,该方法是基于指标依赖图实现的,指标依赖图是根据各指标的指标定义中的需求关系串联各指标生成的,具体地,接收终端发送的指标获取请求,该指标获取请求中包括目标指标规格,其中,目标指标规格具体包括目标指标的指标标识、指标所面向的对象的对象标识和指标参数,根据目标指标规格可以从指标依赖图中查找所述目标指标所依赖的具有优先级等级的参考指标,若指标定义中无依赖关系,则表明目标指标不依赖其他指标,则针对所述目标指标生成计算任务,若指标定义中存在依赖关系,则表明目标指标依赖其他具有优先级等级的参考指标,并在依赖图中查找,针对所述参考指标生成计算任务,在将上述任务添加至任务列表后按照优先级降序顺序依次并发执行任务列表中同一优先级的计算任务,针对同一优先级的相同计算任务仅执行一个计算任务,复用其计算结果,根据执行任务列表中的计算任务所得的计算结果可以确定目标指标的指标结果,然后向终端发送该目标指标的指标结果。

该方法一方面基于计算任务的优先级实现了自下而上的指标计算,当依赖有相同的参考指标时,复用其计算结果,避免重复计算导致资源浪费,提高了计算效率,同时在执行计算任务时,基于优先级并发执行,而不是基于整个任务列表并发执行,细化了并发粒度;另一方面,指标所面向的对象可以是组合对象也可以是持仓对象,当目标指标为持仓级指标时,可以仅根据持仓对象的相关数据进行指标计算,无需计算组合对象中所有持仓对象的指标,实现了按需计算,进一步节省了计算资源。此外,指标通过分层级实现,使得计算逻辑简单易懂,提高了开发效率。

附图说明

图1为本申请实施例中一种数据处理方法的场景架构图;

图2为本申请实施例中一种数据处理方法的流程图;

图3为本申请实施例中一种指标依赖图的示意图;

图4为本申请实施例中一种数据处理方法的交互图;

图5为本申请实施例中一种数据处理方法的应用场景示意图;

图6为本申请实施例中一种数据处理装置的结构示意图;

图7为本申请实施例中一种服务器的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为了使得便于理解本申请的技术方案,首先对本申请涉及的专业技术名词进行解释。

组合对象是指用户持有的不同产品形成的组合。当用户持有产品的品类超过两种时,可以形成多种产品组合。以证券投资业务为例,用户持有股票、基金以及债券等三种投资产品,则组合对象可以包括上述三种投资产品之间的任意组合或者每种产品内部不同品类的任意组合。针对每一组合对象,均具有唯一的组合对象标识,该组合对象标识可以采用序列号、流水号或者特征代码表示。

指标是用于对组合对象或者组合对象的组成部分进行评估衡量的参数。针对任意一个组合对象或者组合对象的组成部分,可以从不同维度进行评估衡量。仍以证券投资业务为例,组合对象包括用户持有的不同投资产品形成的组合,组合对象的组成部分包括该组合对象中的任意一个投资产品,也称作持仓对象。针对组合对象的指标可以包括该组合对象的单位净值变动、单位净值变动幅度等,针对持仓对象的指标可以包括持仓当日盈亏等等。针对每一指标,均具有对应的指标标识,指标标识可以采用特定的符号、数字等字符或者字符组合表示。

针对现有技术中计算依赖相同基础数据的不同指标时会重复计算所依赖的相同指标导致计算效率不高、计算资源浪费的技术问题,本申请提供了一种数据处理方法,该方法是基于指标依赖图实现的,其中,指标依赖图是根据各指标的指标定义中的需求关系串联各指标生成的。

当接收到终端发送的携带有目标指标规格的指标获取请求后,根据目标指标规格中目标指标的指标标识、指标所面向的对象的对象标识和指标参数和指标参数,从指标依赖图中查找所述目标指标所依赖的具有优先级等级的参考指标,若指标定义中无依赖关系,则针对所述目标指标生成计算任务,若指标定义中存在依赖关系,则去依赖图中查找,针对所述参考指标生成计算任务,然后将上述计算任务添加至所述任务列表,按照优先级降序顺序依次并发执行所述任务列表中的同一优先级的计算任务,针对同一优先级的相同计算任务则仅执行一个计算任务复用其计算结果,根据执行所述任务列表中的计算任务得到的计算结果,确定所述目标指标的指标结果,再向所述终端发送所述目标指标的指标结果。

在该方法中,通过计算任务的优先级实现了自下而上的指标计算,当依赖有相同的参考指标时,复用其计算结果,避免重复计算导致资源浪费,提高了计算效率,同时在执行计算任务时,基于优先级并发执行,而不是基于整个任务列表并发执行,细化了并发粒度;另一方面,指标所面向的对象可以是组合对象也可以是持仓对象,当目标指标为持仓级指标时,可以仅根据持仓对象的相关数据进行指标计算,无需计算组合对象中所有持仓对象的指标,实现了按需计算,进一步节省了计算资源。此外,指标通过分层级实现,使得计算逻辑简单易懂,提高了开发效率。

可以理解,本申请提供的数据处理方法可以应用于服务器,服务器是提供指标计算服务的计算设备。在实际应用时,该数据处理方法以应用程序的形式存储于服务器,服务器通过执行该应用程序实现本申请的数据处理方法。需要说明的是,应用程序可以是服务器中独立的应用程序,也可以是集成于其他应用程序上的应用程序,如功能模块、插件等。

为了使得本申请的技术方案更加清楚、易于理解,下面将结合具体场景对本申请提供的数据处理方法进行介绍。

参见图1所示的数据处理方法的场景架构图,该场景中包括终端10和服务器20,用户通过终端10向服务器20发送指标获取请求,该指标获取请求中包括目标指标规格,所述目标指标规格包括目标指标的指标标识、指标所面向对象的对象标识和指标参数,服务器20根据目标指标规格从指标依赖图中查找所述目标指标所依赖的具有优先级等级的参考指标,若指标定义中无依赖关系,则针对所述目标指标生成计算任务,添加至任务列表,若指标定义中存在依赖关系,则去依赖图中查找,针对所述参考指标生成计算任务,添加至所述任务列表,然后服务器20按照优先级降序顺序依次并发执行所述任务列表中的同一优先级的计算任务,针对同一优先级的相同计算任务则仅执行一个计算任务复用其计算结果,根据执行所述任务列表中的计算任务得到的计算结果,确定所述目标指标的指标结果,向所述终端10发送所述目标指标的指标结果。

接下来,将从服务器的角度对本申请实施例提供的数据处理方法进行介绍。参见图2所示的数据处理方法的流程图,该方法包括:

s201:接收终端发送的指标获取请求。

用户在进行决策时可以获取相应的指标作为参考数据。在具体实现时,用户可以通过终端触发指标获取操作,终端响应于用户触发的上述操作生成指标获取请求,并向服务器发送该指标获取请求。所述指标获取请求中包括目标指标规格,所述目标指标规格包括目标指标的指标标识、指标所面向的对象的对象标识和指标参数,如此,服务器在接收到指标获取请求后,可以确定出用户意图获取的指标以及该指标所面向的对象。

其中,指标标识是指唯一标识指标的字符,指标标识可以是数字、字母或汉字中的任意一种或多种的组合。指标所面向的对象是指该指标所对应的对象,在实际应用时,指标所面向的对象可以是组合对象,也可以是持仓对象,每一对象均具有唯一的对象标识,与指标标识类似,对象标识可以通过数字、字母或汉字中的任意一种或多种的组合进行表征。指标参数具体是指指标本身所需参数,例如,指标参数可以是指标对应的时间等。

以目标指标规格为今日单位净值为例,目标指标的指标标识为单位净值,指标所面向的对象为某一持仓对象,该持仓对象具体为股票,则指标所面向的对象的对象标识为该股票的股票代码,指标参数为今日,服务器在接收到携带有该目标指标规格的指标获取请求后,可以确定用户意图获取该股票代码对应的股票在今日的单位净值。

s202:根据所述目标指标规格从指标依赖图中查找所述目标指标所依赖的具有优先级等级的参考指标。

其中,所述指标依赖图是根据各指标的指标定义中的需求关系串联各指标生成的。指标依赖图可以预先构建,具体地,在用户投资组合初始化时,服务器根据历史指标获取请求所对应的指标规格以及各指标的指标定义中的需求关系,将具有指标规格的各指标进行关联以生成指标依赖图。

对于任一指标,若该指标存在依赖指标,其中,依赖指标即参考指标,并且存在另一指标具有相同的依赖指标,则服务器可以直接利用该另一指标的指标依赖图构建该指标的指标依赖图,无需重新构建完整的指标依赖图,提高了指标依赖图的构建效率。

具体可以参见图3,单位净值变动指标的计算依赖于单位净值,具体包括单位净值的今日规格和昨日规格,而单位净值指标的计算又依赖于市值和总份额,具体地,单位净值的今日规格基于市值的今日规格和总份额的今日规格确定,单位净值的昨日规格基于市值的昨日规格和总份额的昨日规格确定,依此类推,单位净值变动的指标依赖图即构建完成。

而单位净值变动幅度指标计算所依赖的指标与单位净值变动指标所依赖的指标相同,如此,服务器可以直接在单位净值变动指标对应的指标依赖图上增加单位净值变动幅度指标,并将其与单位净值今日规格和单位净值昨日规格关联,从而完成单位净值变动幅度指标对应的指标依赖图的构建。

基于此,在根据所述目标指标规格从指标依赖图中查找所述目标指标所依赖的具有优先级等级的参考指标之前,服务器还可以判断所述指标依赖图中是否具有具有该目标指标规格的目标指标,若否,则将所述目标指标添加至所述指标依赖图中,从而实现指标依赖图的更新。

在完成依赖图的构建或更新后,服务器可以通过逐级查找的方式查找目标指标所依赖的具有优先级等级的参考指标。具体地,目标指标规格中的指标标识所标识的指标即为目标指标。服务器根据目标指标的指标依赖图确定目标指标的直接依赖指标,其中,直接依赖指标可以理解为经过一次计算即可确定目标指标的指标,然后针对每个直接依赖指标,分别根据指标依赖图确定该直接依赖指标对应的直接依赖指标作为目标指标的间接依赖指标,直至不具有直接依赖指标,基于直接依赖指标和间接依赖指标确定参考指标。所述参考指标是指在计算目标指标时所需要的指标,服务器可以将目标指标的所有依赖指标作为参考指标,其中,所有依赖指标包括所有直接依赖指标和间接依赖指标。

需要说明的是,在实际应用中,服务器从指标依赖图中查找所述目标指标所依赖的具有优先级等级的参考指标,包括两种查找结果,一种为查找失败,表明当前目标指标不具有参考指标,此时服务器执行s203,一种为查找成功,则表明当前目标指标具有参考指标,此时服务器执行s204。

s203:针对所述目标指标生成计算任务,添加至任务列表。

s204:针对所述参考指标生成计算任务,添加至所述任务列表。

在本实施例中,当目标指标不具有参考指标时,则表明目标指标并不依赖于其他指标,服务器可以直接针对该目标指标生成计算任务,并添加至任务列表,以便通过执行该计算任务计算该目标指标,当目标指标具有参考指标时,则表明目标指标依赖于参考指标,并且参考指标具有优先级等级,服务器可以针对参考指标生成计算任务,并添加至任务列表,以便后续通过执行该计算任务计算参考指标,进而计算目标指标。

s205:按照优先级降序顺序依次并发执行所述任务列表中的同一优先级的计算任务,针对同一优先级的相同计算任务则仅执行一个计算任务复用其计算结果。

在具体实现时,任务列表中的计算任务是具有优先级的,计算任务的优先级与参考指标的优先级一致,若某一指标的优先级高于另一指标的优先级,则针对该指标生成的计算任务的优先级高于针对另一指标生成的计算任务的优先级。基于此,服务器可以按照优先级降序顺序依次执行任务列表中的计算任务,针对同一优先级的计算任务并发执行,若同一优先级中存在相同的计算任务,则仅执行一个计算任务,复用其计算结果,避免重复计算导致计算资源浪费。

为了便于理解,下面以目标指标规格为某支股票的单位净值变动为例进行说明。具体地,服务器查找图3所示的指标依赖图,确定单位净值变动指标依赖的参考指标包括单位净值指标,具体包括单位净值的今日规格和单位净值的昨日规格,基于此,服务器针对单位净值指标生成相应的计算任务,该计算任务具体用于计算单位净值的今日规格和单位净值的昨日规格;而单位净值指标又依赖于市值与总份额,因此,单位净值指标的计算进入停滞,针对市值和总份额分别生成相应的计算任务,其优先级高于针对单位净值生成的计算任务的优先级,因此,服务器先执行针对市值和总份额生成的计算任务,分别计算市值今日规格、总份额今日规格和市值昨日规格、总份额昨日规格,然后再执行针对单位净值生成的计算任务,分别计算单位净值今日规格和单位净值昨日规格,如此,服务器可以基于单位净值今日规格和单位净值昨日规格确定单位净值变动。

在实际应用时,若用户还想要查看单位净值变动幅度,则服务器查询图3所示的指标依赖图,确定单位净值变动幅度指标依赖的参考指标与单位净值变动指标依赖的参考指标相同,可以直接复用单位净值的参考指标的计算结果,根据单位净值变动幅度的算法进行计算,无需重复计算参考指标。

s206:根据执行所述任务列表中的计算任务得到的计算结果,确定所述目标指标的指标结果。

具体地,服务器可以通过以下两种方式确定目标指标的指标结果。一种实现方式为,将针对目标指标生成的计算任务对应的计算结果确定为目标指标的指标结果,另一种实现方式为,利用针对参考指标生成的计算任务对应的计算结果,根据目标指标的算法计算得到目标指标的指标结果。服务器可以根据任务列表中计算任务的具体情况,选择其中一种实现方式确定目标指标的指标结果。

s207:向所述终端发送所述目标指标的指标结果。

在具体实现时,确定目标指标的指标结果后,服务器响应于终端发送的指标获取请求,将终端发送目标指标的指标结果,以便为用户投资决策提供帮助。

由上可知,本申请实施例提供了一种数据处理方法,该方法是基于指标依赖图实现的,指标依赖图是根据各指标的指标定义中的需求关系串联各指标生成的,具体地,接收终端发送的指标获取请求,该指标获取请求中包括目标指标规格,其中,目标指标规格具体包括目标指标的指标标识、指标所面向的对象的对象标识和指标参数,根据目标指标规格可以从指标依赖图中查找所述目标指标所依赖的具有优先级等级的参考指标,若指标定义中无依赖关系,则表明目标指标不依赖其他指标,则针对所述目标指标生成计算任务,若指标定义中存在依赖关系,则表明目标指标依赖其他具有优先级等级的参考指标,去依赖图中查找,并针对所述参考指标生成计算任务,在将上述任务添加至任务列表后按照优先级降序顺序依次并发执行任务列表中同一优先级的计算任务,针对同一优先级的相同计算任务仅执行一个计算任务,复用其计算结果,根据执行任务列表中的计算任务所得的计算结果可以确定目标指标的指标结果,然后向终端发送该目标指标的指标结果。

该方法一方面基于计算任务的优先级实现了自下而上的指标计算,当依赖有相同的参考指标时,复用其计算结果,避免重复计算导致资源浪费,提高了计算效率,同时在执行计算任务时,基于优先级并发执行,而不是基于整个任务列表并发执行,细化了并发粒度;另一方面,指标所面向的对象可以是组合对象也可以是持仓对象,当目标指标为持仓级指标时,可以仅根据持仓对象的相关数据进行指标计算,无需计算组合对象中所有持仓对象的指标,实现了按需计算,进一步节省了计算资源。此外,指标通过分层级实现,使得计算逻辑简单易懂,提高了开发效率。

可以理解,服务器在执行所述任务列表中的计算任务时需要获取与该计算任务相关的数据。基于此,服务器可以预先加载组合对象数据至内存中,在执行计算任务时,从所述内存中读取所述计算任务所需要的数据。如此,针对依赖有相同参考指标的目标指标,均可以从内存中读取计算任务所需的数据,无需从数据源重复提取数据,一方面提高了数据提取效率,另一方面减少了数据源接口资源占用,提高了接口性能。

考虑到有些指标计算频率较高,在实际应用时,为了减少计算,服务器还可以对计算结果进行保存,以便在后续计算该指标时,直接查找相应的计算结果,无需重新计算。在一些可能的实现方式中,服务器在执行计算任务得到的计算结果时,将所述计算任务对应的计算结果缓存在指标结果共享表中,则在执行某一计算任务时,先查看所述指标结果共享表中是否存在对应的计算结果,若是,则直接读取计算结果,若否,则再执行所述某一计算任务。

在本实施例中,服务器不仅可以通过层级匹配的方式实现对象过滤,还可以基于功能实现对象过滤。例如,针对某个持仓层指标分品种计算,仅计算股票品种而忽略其他品种。对于满足过滤条件的指标,其可以继续在计算链路上运行,由服务器执行对应的计算任务,对于不满足过滤条件的指标,则可以跳出计算链路,如此,可以节省计算资源,提高计算性能。

接下来,将从交互的角度对本申请实施例提供的数据处理方法进行介绍。参见图4所示的数据处理方法的交互示意图,服务器首先加载数据源,接着对指标进行层级对象匹配,具体地,服务器根据指标获取请求中指标面向对象的对象标识,匹配出对象标识所标识的目标对象,然后判断目标对象是否符合计算场景,其中,判断是否符合计算场景和层级对象匹配的作用类似,其作用均为过滤对象,假设目标对象为持仓层对象,判断是否符合计算场景可以是判断该持仓层对象是否属于股票品种,基于此,可以实现对象层级过滤和对象功能过滤。

然后,服务器执行分布式并发计算,基于指标是否需求依赖指标分别采用不同的处理方式,具体地,若不需求依赖指标,则直接生成针对该指标的计算任务,并添加至任务列表,若需求依赖指标,则对其依赖指标进行层级对象匹配、计算场景判断,针对符合场景的依赖指标,基于构建的针对依赖指标的指标依赖图确定该依赖指标是否需求依赖指标,若是,则针对依赖指标需求的依赖指标执行层级对象匹配、计算场景判断、查找指标依赖图的步骤,直至依赖指标不再需求依赖指标为止,如此,服务器可以基于确定出的所有依赖指标,生成具有优先级的计算任务,添加至任务列表,服务器按照优先级降序顺序依次并发执行任务列表中同一优先级的计算任务,针对同一优先级的相同计算任务仅执行一个计算任务,复用其计算结果。在执行计算任务时,服务器按需加载数据至内存,加载完毕后,执行计算任务。

具体地,服务器首先执行高优先级的计算任务,得到中间结果,然后复用中间结果计算低优先级的计算任务,对于同一优先级的任务,采用分布式并发计算,如此,实现了指标分级计算。在计算得到参考指标对应的指标结果后,可以基于该结果确定当前指标对应的指标结果。

可以理解,本申请实施例提供的数据处理方法是采用自下而上的方式计算指标的,针对数据的获取,服务器抽象出持仓对象和组合对象来持久化数据,并且对于具有依赖关系的指标,使用指标依赖图保留中间结果,以便后续计算其他指标时,可以服用该中间结果,节省计算资源,在进行并发计算时,是针对同优先级的计算任务并发计算,而不是针对整个任务列表,因而具有更精细的并发粒度,更高的计算效率。

为了使得本申请的技术方案更加清楚、易于理解,下面将结合具体应用场景,对本申请实施例提供的数据处理方法进行介绍。参见图5所示的数据处理方法的应用场景示意图,该场景中包括终端510和服务器520。

当用户想要查看自己持有的所有组合对象的单位净值变动时,通过终端510向服务器520发送指标获取请求,该指标获取请求中携带目标指标规格,目标指标规格具体包括用户持有的所有组合对象的组合对象标识、单位净值变动指标对应的指标标识以及指标参数(今日),服务器520进行层级对象匹配,确定该指标为组合层的指标,因此,服务器520首先过滤掉组合对象下所有持仓对象,保留组合对象,并将组合对象作为目标对象。

当用户有更精确的需求时,则终端510发送的指标获取请求中还包括属性标识,服务器520可以基于属性标识对目标对象进行功能过滤。例如,用户想要查看2018年之后所创建的组合对象的单位净值变动时,则指标获取请请中还包括创建时间属性对应的属性标识,该属性标识对应的属性值具体为大于或等于2018,则服务器520基于该属性标识对应的属性值,将目标对象中创建时间小于2018的对象过滤,保留大于或等于2018的对象。

接着,服务器520基于指标依赖图确定单位净值变动指标依赖于特定规格的单位净值指标,单位净值指标依赖于特定规格的市值指标和总份额指标,其中,单位净值指标、市值指标、总份额指标即为单位净值变动指标所依赖的参考指标,上述参考指标具有优先级,具体地,市值指标与总份额指标优先级相同,并且高于单位净值指标的优先级。基于此,服务器520针对单位净值指标、市值指标和总份额指标分别生成对应的计算任务。由于单位净值变动指标依赖于单位净值指标,单位净值变动指标的计算进入停滞状态,单位净值指标又依赖市值指标与总份额指标,单位净值指标的计算也进入了停滞,直到市值指标与总份额指标计算完毕,再恢复单位净值指标的计算,当单位净值指标计算完毕,再恢复单位净值变动指标计算。

在该场景中,若用户还有查看单位净值的变动幅度的需求时,其同样依赖单位净值指标,而单位净值指标的依赖关系已然存在与指标依赖图中,服务器520读取到依赖指标对应的计算结果,即复用该计算结果,并根据单位净值变动幅度的算法计算单位净值变动幅度指标对应的指标结果。

以上为本申请实施例提供的一种数据处理方法的一些具体实现方式,基于此,本申请实施例还提供了一种数据处理装置,接下来,将从功能模块化的角度对本申请实施例提供的上述装置进行介绍。

参见图6所示的数据处理装置的结构示意图,所述装置600包括:

接收模块610,用于接收终端发送的指标获取请求,所述指标获取请求中包括目标指标规格,所述目标指标规格包括目标指标的指标标识、指标所面向的对象的对象标识和指标参数;;

查找模块620,用于根据所述目标指标规格从指标依赖图中查找所述目标指标所依赖的具有优先级等级的参考指标;其中,所述指标依赖图是根据各指标的指标定义中的需求关系串联各指标生成的;

第一添加模块630,用于若指标定义中无依赖关系,则针对所述目标指标生成计算任务,添加至任务列表;

第二添加模块640,用于若指标定义中存在依赖关系,则去依赖图中查找,并针对所述参考指标生成计算任务,添加至所述任务列表;

任务执行模块650,用于按照优先级降序顺序依次并发执行所述任务列表中的同一优先级的计算任务,针对同一优先级的相同计算任务则仅执行一个计算任务复用其计算结果;

确定模块660,用于根据执行所述任务列表中的计算任务得到的计算结果,确定所述目标指标的指标结果;

发送模块670,用于向所述终端发送所述目标指标的指标结果。

可选的,所述装置还包括:

数据加载模块,用于加载组合对象数据至内存中,以供所述任务执行模块在执行计算任务时,从所述内存中读取所述计算任务所需要的数据。

可选的,所述装置还包括:

指标依赖图构建模块,用于在用户投资组合初始化时,根据历史指标获取请求所对应的指标规格以及各指标的指标定义中的需求关系,将具有指标规格的各指标进行关联以生成指标依赖图。

可选的,所述装置还包括:

指标依赖图更新模块,用于判断所述指标依赖图中是否具有具有该目标指标规格的目标指标,若否,则将所述目标指标添加至所述指标依赖图中。

可选的,所述装置还包括:

缓存模块,用于在执行计算任务得到的计算结果时,将所述计算任务对应的计算结果缓存在指标结果共享表中;

则所述任务执行模块还用于在执行某一计算任务时,先查看所述指标结果共享表中是否存在对应的计算结果;若是,则直接读取计算结果;若否,则再执行所述某一计算任务。

由上可知,本申请实施例还提供了一种数据处理装置,该装置是基于指标依赖图实现的,指标依赖图是根据各指标的指标定义中的需求关系串联各指标生成的,具体地,接收终端发送的指标获取请求,该指标获取请求中包括目标指标规格,其中,目标指标规格具体包括目标指标的指标标识、指标所面向的对象的对象标识和指标参数,根据目标指标规格可以从指标依赖图中查找所述目标指标所依赖的具有优先级等级的参考指标,若查找失败,则表明目标指标不依赖其他指标,则针对所述目标指标生成计算任务,若查找成功,则表明目标指标依赖其他具有优先级等级的参考指标,针对所述参考指标生成计算任务,在将上述任务添加至任务列表后按照优先级降序顺序依次并发执行任务列表中同一优先级的计算任务,针对同一优先级的相同计算任务仅执行一个计算任务,复用其计算结果,根据执行任务列表中的计算任务所得的计算结果可以确定目标指标的指标结果,然后向终端发送该目标指标的指标结果。

该装置基于计算任务的优先级实现了自下而上的指标计算,当依赖有相同的参考指标时,复用其计算结果,避免重复计算导致资源浪费,提高了计算效率,同时在执行计算任务时,基于优先级并发执行,而不是基于整个任务列表并发执行,细化了并发粒度;另一方面,指标所面向的对象可以是组合对象也可以是持仓对象,当目标指标为持仓级指标时,可以仅根据持仓对象的相关数据进行指标计算,无需计算组合对象中所有持仓对象的指标,实现了按需计算,进一步节省了计算资源。此外,指标通过分层级实现,使得计算逻辑简单易懂,提高了开发效率。

上述实施例从功能模块化的角度对数据处理装置进行了介绍,本申请实施例还提供了相应的设备,下面从硬件实体化的角度对本申请实施例提供的设备进行介绍。

图7是本申请实施例提供的一种服务器结构示意图,该服务器700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,cpu)722(例如,一个或一个以上处理器)和存储器732,一个或一个以上存储应用程序742或数据744的存储介质730(例如一个或一个以上海量存储设备)。其中,存储器732和存储介质730可以是短暂存储或持久存储。存储在存储介质730的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器722可以设置为与存储介质730通信,在服务器700上执行存储介质730中的一系列指令操作。

服务器700还可以包括一个或一个以上电源726,一个或一个以上有线或无线网络接口750,一个或一个以上输入输出接口758,和/或,一个或一个以上操作系统741,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

上述实施例中由服务器所执行的步骤可以基于该图7所示的服务器结构。

其中,cpu722用于执行如下步骤:

接收终端发送的指标获取请求,所述指标获取请求中包括目标指标规格,所述目标指标规格包括目标指标的指标标识、指标所面向的对象的对象标识和指标参数;

根据所述目标指标规格从指标依赖图中查找所述目标指标所依赖的具有优先级等级的参考指标;其中,所述指标依赖图是根据各指标的指标定义中的需求关系串联各指标生成的;

若指标定义中无依赖关系,则针对所述目标指标生成计算任务,添加至任务列表;

若指标中存在依赖关系,则去依赖图中查找,并针对所述参考指标生成计算任务,添加至所述任务列表;

按照优先级降序顺序依次并发执行所述任务列表中的同一优先级的计算任务,针对同一优先级的相同计算任务则仅执行一个计算任务复用其计算结果;

根据执行所述任务列表中的计算任务得到的计算结果,确定所述目标指标的指标结果;

向所述终端发送所述目标指标的指标结果。

可选的,所述cpu722还用于执行本申请实施例提供的数据处理方法的任意一种实现方式的步骤。

本申请实施例还提供一种计算机可读存储介质,用于存储程序代码,该程序代码用于执行前述各个实施例所述的一种数据处理方法中的任意一种实施方式。

本申请实施例还提供一种包括指令的计算机程序产品,当其在计算机上运行时,使得计算机执行前述各个实施例所述的一种数据处理方法中的任意一种实施方式。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文全称:read-onlymemory,英文缩写:rom)、随机存取存储器(英文全称:randomaccessmemory,英文缩写:ram)、磁碟或者光盘等各种可以存储程序代码的介质。

应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1