基于数据项分析的动态数据封装方法、客户端和服务端与流程

文档序号:18191359发布日期:2019-07-17 05:36阅读:261来源:国知局
本发明实施例涉及计算机数据封装
技术领域
:,更具体地,涉及一种基于数据项分析的动态数据封装方法、客户端和服务端。
背景技术
::目前很多大型企业如通信、金融等行业的企业都已经规划建设大数据平台,构建企业内部的大数据运营体系,以便整合企业内各部门、各下属机构和各业务板块的数据资源,为企业的经营分析和数据可视化应用提供更全面的数据服务。在这些企业级大数据运营体系中,大部分仍然采用直接开放大数据平台访问连接的方式,让数据应用访问大数据平台的数据资源。但是这种方式存在较大的安全隐患,管控难度比较大,制约了数据应用开发厂商的引入。有些企业则在最近几年开始尝试在大数据平台之上搭建数据开放服务平台,通过数据封装,将数据访问的业务逻辑固化在服务接口openapi中,采用java等编程语言开发实现,供数据应用调用,实现数据应用与大数据平台的解耦,以便引入更多的应用开发厂商,促进应用多样化发展,同时满足数据管控和数据安全的需要。这种数据共享方案的运营过程包括如下几个部分:1.分析数据应用需求,提炼数据服务openapi定义,安排开发实现、发布到数据共享平台;2.定期分析数据共享平台中的openapi调用情况,清理无用openapi;3.数据应用开发者无法找到适用的openapi,则提数据访问需求,由数据共享平台管理者分析评估,安排开发实现,针对新需求提供适用的openapi。然而,基于上述数据共享方案的现有技术的缺点也是明显的,包括:第一、openapi通用性较差,会产生大量定制需求。现有技术方案的openapi通过人工方式对数据资源、数据访问需求进行综合分析、设计和开发实现,设计时需要考虑openapi尽量通用,适用更多的应用场景。由于openapi开发人员的经验和能力限制,以及数据应用的五花八门、不断创新,导致数据共享平台所提供openapi很难完全满足数据应用的数据访问需求,数据应用开发者往往在数据应用开发过程中提出大量定制的数据访问需求。第二、数据访问定制需求响应缓慢、不灵活。现有技术方案的定制openapi实现过程是一个传统的软件需求响应过程,经过人工的需求分析、设计和开发实现,发布新的openapi,以满足数据应用的新增数据访问需求。这个过程涉及多个环节的交互,数据应用开发者从提出需求到获得需要的openapi,往往需要等待几周的时间。如果在这个过程中出现需求变更,或者需求理解偏差,则需要对已开发实现的业务逻辑进行修改,导致更长的等待时间。这些因素往往成为数据应用开发进度失控的风险之一。第三、具有较高的运维成本。现有技术方案在openapi中实现数据查询分析的业务逻辑,因此这些openapi很难做到完全通用,经常有数据应用开发者提出的定制openapi需求。因此,大数据运营体系的管理者需要配置openapi开发团队,团队成员除了需要深入理解接入数据共享平台的所有数据资源外,还需要了解业务需求、开发实现数据查询分析逻辑,从而在这方面消耗大量的运维成本。技术实现要素:本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的基于数据项分析的动态数据封装方法、客户端和服务端。根据本发明实施例的一个方面,提供一种基于数据项分析的动态数据封装方法,包括:基于给定的数据项目录和/或逻辑模型目录,获取用户选择的数据项和/或逻辑模型,并根据用户选择的数据项和/或逻辑模型生成查询数据项集和关系代数操作树,从而获得用户的数据查询请求;根据所述数据查询请求生成查询逻辑lsql,并发送至服务端以获取数据查询结果集;其中,所述查询数据项集包括用户选择的数据项和/或逻辑模型;所述关系代数操作树,用于描述所述数据项集中的数据项之间的查询逻辑。根据本发明实施例的另一个方面,还提供一种基于数据项分析的动态数据封装方法,包括:根据接收到的查询逻辑lsql进行词法和语法分析,获取数据查询请求;基于物理模型-数据项-逻辑模型的三层映射关系,根据所述数据查询请求选取数据项与物理模型的映射关系从而生成psql;利用所述psql从数据源中获取查询结果集并返回给客户端;其中,所述物理模型-数据项-逻辑模型的三层映射关系,用于实现从数据查询请求到数据源的查询过程的数据转换。根据本发明实施例的另一个方面,还提供一种客户端,包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行本发明实施例基于数据项分析的动态数据封装方法客户端方法及其任一可选实施例的方法。根据本发明的另一个方面,还提供一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行本发明实施例基于数据项分析的动态数据封装方法客户端方法及其所有可选实施例的方法。根据本发明实施例的另一个方面,还提供一种服务端,包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行本发明实施例基于数据项分析的动态数据封装方法服务端方法及其任一可选实施例的方法。根据本发明的另一个方面,还提供一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行本发明实施例基于数据项分析的动态数据封装方法服务端方法及其所有可选实施例的方法。本发明实施例提出一种基于数据项分析的动态数据封装方法,在客户端用户可以根据业务查询需要,灵活组合数据项进行数据查询;在服务端构建物理模型-数据项-逻辑模型的三层映射关系,根据数据项和查询逻辑进行分析,实现了从数据查询请求到数据源的自动查询,避免了传统数据封装方法通过开发大量openapi实现各种数据查询逻辑所带来的数据查询需求响应效率问题,降低数据封装装置运行维护成本的同时,更好地满足用户的数据查询需求。附图说明图1为本发明实施例基于数据项分析的动态数据封装方法的应用框架示意图;图2为本发明实施例基于数据项分析的动态数据封装方法客户端方法流程示意图;图3为本发明实施例数据项集示意图;图4为本发明实施例关系代数操作树的查询逻辑示意图;图5为本发明实施例关系代数操作树的结构示意图;图6为本发明实施例数据查询请求的过程示意图;图7为本发明实施例基于数据项分析的动态数据封装方法服务端方法流程示意图;图8为本发明实施例psql转换示意图;图9为本发明实施例物理模型-数据项-逻辑模型的三层映射关系示意图;图10为本发明实施例物理模型-数据项-逻辑模型的三层映射关系的构建过程示意图;图11为本发明实施例物理模型的资源目录结构示意图;图12为本发明实施例数据缓存的组织结构示意图;图13为本发明实施例基于数据项分析的动态数据封装方法的数据查询过程示意图;图14为本发明实施例一种客户端的设备框架示意图;图15为本发明实施例一种服务端的设备框架示意图。具体实施方式下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。本发明实施例针对现有技术方案大数据运营体系的前述问题,提供一种根据数据查询的数据项(又称数据元素、数据元)进行自动分析,动态生成数据查询逻辑的数据封装解决方案。本发明实施例所述方案基于关联规则算法、频繁路径挖掘算法和聚类算法,构建动态数据封装引擎,分析数据项-物理模型映射关系以及用户的数据访问日志,实现动态数据封装机制,同时自动生成和发布常用的逻辑模型,满足用户灵活多变的数据查询分析需求。本发明实施例所述方案可有效解决采用固定的openapi进行数据封装所带来的定制需求响应缓慢、运营成本高等问题。图1为本发明实施例基于数据项分析的动态数据封装方法的应用框架示意图。如图1所示的应用框架中,本发明实施例所述基于数据项分析的动态数据封装方法提供动态数据封装引擎,对下是与物理模型相连接的大数据平台,也即数据源,包括物理库表、hive数据表或者hbase数据表等;对上是数据应用,每个数据应用通过数据项或者逻辑模型的灵活组合来访问数据。数据封装引擎通过分析这些物理模型的数据结构,对模型字段进行识别、归并,生成数据项。每个数据项与一到多个物理模型字段存在映射关系,在数据查询时,需要根据具体的查询条件选择合适的映射关系组装数据查询逻辑。本发明实施例所述数据项是构成物理模型字段的数据单元。例如,a、b两个物理模型都有手机号码字段,那么可以定义一个统一的“手机号码”数据项,该数据项的定义内容包括数据项命名、数据类型、取值范围等,包括数据模型a和b在内的所有包括手机号码字段的物理模型,都必须引用该数据项作为手机号码字段的定义。本发明实施例所述数据项为字段级粒度,由于数据项属于细粒度的数据单元,虽然有利于灵活组装,但是数量比较大,查找不是很方便。因此,数据封装装置通过分析数据查询日志,识别用户常用的数据项查询组合,将这些数据项自动组装成逻辑模型,以方便用户在数据查询时进行整体引用,从而提升数据封装装置的易用性。以下分别从客户端和服务端的角度来描述本发明实施例所述基于数据项分析的动态数据封装方法。图2为本发明实施例一种基于数据项分析的动态数据封装方法客户端方法流程示意图,如图2所示,本发明实施例提供一种基于数据项分析的动态数据封装方法,其执行主体为客户端,包括:s100,基于给定的数据项目录和/或逻辑模型目录,获取用户选择的数据项和/或逻辑模型,并根据用户选择的数据项和/或逻辑模型生成查询数据项集和关系代数操作树,从而获得用户的数据查询请求;为了帮助数据访问用户方便地查找到需要的数据项,本发明实施例提供数据项目录和/或逻辑模型目录的供用户选择;根据数据项目录和/或逻辑模型目录可以检索与用户查询需求相关的数据项和逻辑模型,并可进一步提供这些数据项和逻辑模型的详细介绍信息,以便用户深入了解这些数据项和逻辑模型的业务含义和数据特征,并选择合适的数据项和逻辑模型进行数据查询。本发明实施例所述给定的数据项目录和/或逻辑模型目录,可以仅给定数据项目录,或仅给定逻辑模型目录,或同时给定数据项目录和逻辑模型目录。当仅给定数据项目录时,可以将逻辑模型中的数据项直接显示在数据项目录中;当仅给定逻辑模型目录时,可以将单独的数据项封装成一个简单的逻辑模型从而显示在逻辑模型目录中;同时给定数据项目录和逻辑模型目录时,即按照各自的逻辑显示目录。所述用户选择的数据项和/或逻辑模型,可以是全部选择数据项,也可以全部选择逻辑模型,也可以同时选择数据项和逻辑模型。数据查询请求也可以通过数据查询的前端界面选择拖拽数据项进行简单的配置生成。基于上述任意一种目录和用户的任意选择,本发明实施例根据用户的选择生成查询数据项集和关系代数操作树,进而生成数据查询请求。换言之,数据查询请求由数据项集i和关系代数操作树t两部分构成。其中数据项集i包括了关系代数操作树中涉及的所有数据项和数据模型,关系代数操作树描述了这些数据项之间的查询逻辑。数据项集i中的数据项可能来自一到多个逻辑模型,也可能不属于任何逻辑模型。图3为本发明实施例数据项集示意图,如图3所示,数据项集包括数据项和/或逻辑模型,而逻辑模型由数据项组成,因此数据项集最终由数据项组成。所述查询数据项集是指用户当前进行数据查询的数据项集,查询数据项集包括用户当前选择的数据项和/或逻辑模型。关系代数操作树所描述的数据项之间的查询逻辑为:关系代数操作树t在逻辑上由一到多个数据查询单元组成,每个数据查询单元包括输入数据对象、数据查询逻辑和输出数据对象三个部分。图4为本发明实施例关系代数操作树的查询逻辑示意图,如图4所示的关系代数操作树由数据查询单元01、数据查询单元02及前二者对应的输入数据对象和查询结果集组成。图5为本发明实施例关系代数操作树的结构示意图,如图5所示,每个数据查询单元由投影、连接、选择、分组、排序、交并差等关系代数操作组成。其中投影操作和交并差操作属于数据查询单元的核心操作,每个数据查询单元只有一个投影操作或者交并差操作,其他操作都是依附在某个投影操作下面,如连接、选择、分组、排序等,用于控制投影操作的数据范围和投影结果组织方式。图5中的“数据对象”,可以是常量,也可以是本发明实施例所述数据项,也可以是本发明实施例所述物理模型。图5中的“处理逻辑”是指关系代数操作的逻辑,包括投影、连接、选择、分组、排序和交并差中的任意一种或多种。下面分别对投影、连接、选择、分组、排序、交并差等关系代数操作进行说明:投影是指从关系中挑选若干属性组成的新的关系。这是从列的角度进行运算。经过投影运算可以得到一个新关系,其关系所包含的属性个数往往比原关系少,或者属性的排列顺序不同。如果新关系中包含重复元组,则要删除重复元组。联接有两种:θ联接和f联接(θ是算术比较符,f是公式)。θ联接是从关系r和s的笛卡尔积中选取属性值满足某一θ操作的元组。如果θ是等号“=”,该联接操作称为“等值联接”。f联接操作是从关系r和s的笛卡尔积中选取属性值满足某一公式f的元组。选择是从关系中找出满足给定条件的所有元组称为选择。其中的条件是以逻辑表达式给出的,该逻辑表达式的值为真的元组被选取。这是从行的角度进行的运算,即水平方向抽取元组。经过选择运算得到的结果可以形成新的关系,其关系模式不变,但其中元组的数目小于或等于原来的关系中的元组的个数,它是原关系的一个子集。分组是指根据关系中的某些属性进行分组,对应为一些属性进行分组聚合运算。排序是对关系中所有元组基于某些属性进行升序或者降序排列。交是指关系r和s的交是由属于r又属于s的元组构成的集合,记为r∩s。并是指两个关系r和s的元组合并在一起构成的集合,记为r∪s。r和s的差是由属于r但不属于s的元组构成的集合,记为r-s。交并差运算要求r和s定义在相同的关系模式上。s101,根据所述数据查询请求生成查询逻辑lsql,并发送至服务端以获取数据查询结果集。根据步骤s100生成数据查询请求后,本发明实施例根据所述数据查询请求中的数据项和查询逻辑即关系代数操作树生成查询逻辑lsql,通过查询逻辑lsql向服务端请求数据。本发明实施例所述lsql为logicalstructuredquerylanguage,逻辑结构化查询语言;本发明实施例还使用到的psql为physicalstructuredquerylanguage,物理结构化查询语言;本发明实施例还使用到的ast为abstractsyntaxtree,抽象语法树。图6为本发明实施例数据查询请求的过程示意图,主要过程包括:用户提交数据查询请求,数据封装引擎接收处理后,返回数据查询的结果集。在数据源不变的情况下,每个确定的数据查询请求对应一个确定的数据查询结果集,也就说,多次提交相同的数据查询请求,每次返回的数据查询结果集是一致的。但是,对同一个数据查询请求的多次提交,数据封装装置可能采用不同的映射关系和处理逻辑。这取决于数据封装装置内部的最优映射关系的选择,所述最优映射关系的选择根据psql评估优化结果确定。本发明实施例提出一种基于数据项分析的动态数据封装方法,在客户端用户可以根据业务查询需要,根据数据项灵活组合数据查询请求进行数据查询,通过数据查询lsql向服务端请求数据;数据封装引擎的后端即服务端对数据查询lsql进行分析,按照查询逻辑返回查询结果集,可有效解决采用固定的openapi进行数据封装所带来的定制需求响应缓慢、运营成本高等问题。具体的,数据查询请求可以通过数据查询的前端界面选择拖拽数据项进行简单的配置生成,由数据项集i和关系代数操作树t两部分构成。其中数据项集i包括了关系代数操作树中涉及的所有数据项和数据模型,关系代数操作树描述了这些数据项之间的查询逻辑。具体的,由于数据查询请求由查询数据项、关系代数操作树两部分组成,因此,编辑数据查询请求也包括了这两部分内容。其中的查询数据项是在第一步的基础上进一步选择确认,而关系代数操作树则通过引导界面进行配置。本发明实施例根据用户编辑的结果生成逻辑查询lsql,并提交数据共享服务引擎执行。具体的,lsql通过数据查询请求自动拼装,或者由用户手工编写。lsql以数据项和逻辑模型作为操作对象,不能直接提交到物理数据库执行,必须首先对lsql进行词法、语法分析,生成抽象语法树ast,并在ast中加入数据访问权限控制的约束条件,为后续的psql转换处理做准备。由于lsql的操作对象是数据项和逻辑模型,无法直接提交数据库执行。因此,必须将lsql转换为以物理库表为操作对象的psql。在一个可选的实施例中,步骤s100中,所述基于给定的数据项和/或逻辑模型目录,获取用户选择的数据项和/或逻辑模型,还包括:基于用户已经选择的数据项和/或逻辑模型,与所有频繁数据项集进行第一匹配,若匹配上一个或多个频繁数据项集,则推荐用户在所述一个或多个频繁数据项集中进行选择,并获取用户从所述一个或多个频繁数据项集中选择的数据项和/或逻辑模型。本发明实施例数据封装引擎对数据查询历史进行挖掘分析,提炼频繁数据项集,并实现数据项的关联推荐、数据缓存管理等功能,提升数据封装装置的易用性、并发性和响应速度。对于客户端,主要是利用服务端提炼的频繁数据项集实现数据项的关联推荐。例如,某些查询数据项集如果在一段时间的历史数据查询请求中频繁出现,则这些查询数据项集构成一个频繁数据项集fa{a1,a2,…},其中的集合成员a1、a2、…属于出现频率比较高的数据项集。在选择数据项和逻辑模型时,数据封装装置根据频繁数据项集进行关联推荐,将已经选中的数据项与所有频繁数据项集进行匹配,推荐用户在匹配中的数据项集合中选择相关数据项,提升数据项选择的效率。基于上述实施例,所述将用户已经选择的数据项与所有频繁数据项集进行第一匹配,若匹配上一个或多个频繁数据项集,则推荐用户在所述一个或多个频繁数据项集中进行选择,进一步包括:基于每个频繁数据项集,计算匹配度其中,a为用户已经选择的数据项,且a为{a1,a2,a3,…};tai为频繁数据项集,且tai为{ta1,ta2,…,tai,…,tan};uai=a∩tai,i=1…n,num()表示取集合中的成员数量;若匹配度p大于预设阈值,则确认数据项a与频繁数据项集tai匹配上;预设阈值可根据实际应用的需要而确定,本发明实施例对此不作限定,优选的,预设阈值为0.3。显示所述频繁数据项集tai中的数据项和/或逻辑模型,提示用户从所述频繁数据项集tai中进行选择,由此实现关联推荐。本发明实施例的上述过程可描述为:假设已选中的数据项a1,a2,a3,…,构成数据项集a{a1,a2,a3,…}。集合ta{ta1,ta2,…,tai,…,tan}是频繁数据项集tai的集合(i=1…n),由数据封装装置后台分析程序根据数据查询日志进行分析获得。已选数据项集a与频繁数据项集tai的交集为uai:uai=a∩tai。集合uai中包含的成员数量为num(uai)。已选数据项集a与频繁数据项集tai的匹配度为:当p>=α(一般取α=0.3)时,a与tai匹配上,在数据项和数据模型选择界面上显示数据项集tai中的数据项,提示用户从中选择。本发明实施例在客户端为用户提供灵活的数据项组合的数据查询请求,同时提供关联推荐功能,方便用户选择,提高易用性和响应速度。以上为客户端方法描述,以下对服务端方法进行描述。图7为本发明实施例基于数据项分析的动态数据封装方法服务端方法流程示意图,如图7所示,本发明实施例还提供一种基于数据项分析的动态数据封装方法,其执行主体为服务端,包括:s200,根据接收到的查询逻辑lsql进行词法和语法分析,获取数据查询请求;本发明实施例中所述查询逻辑lsql是客户端根据用户选择的数据项和逻辑模型生成的数据查询请求,进一步生成的查询逻辑lsql。由于lsql以数据项和逻辑模型作为操作对象,不能直接提交到物理数据库执行,必须首先对lsql进行词法分析和语法分析,获取数据查询请求,然后转换成数据库可执行的查询逻辑。具体的,本发明实施将lsql转成psql。s201,基于物理模型-数据项-逻辑模型的三层映射关系,根据所述数据查询请求选取数据项与物理模型的映射关系从而生成psql;其中,所述物理模型-数据项-逻辑模型的三层映射关系,用于实现从数据查询请求到数据源的查询过程的数据转换。由于lsql的操作对象是数据项和逻辑模型,无法直接提交数据库执行。因此,必须将lsql转换为以物理库表为操作对象的psql。本发明实施例进行lqsl到psql的转换在物理模型-数据项-逻辑模型的三层映射关系的基础上进行。数据封装引擎的前端数据查询请求操作、后端数据封装服务都建立在物理模型-数据项-逻辑模型的三层映射关系的基础上。物理模型-数据项-逻辑模型的三层映射关系是一个动态数据封装结构,通过数据项进行构建;其中数据项又称为数据元或数据元素,是动态数据封装结构的核心对象,数据项用于搭建数据查询请求与物理数据源之间沟通的桥梁,使得基于数据项灵活组合的数据查询请求可以转换为数据库可执行的物理查询sql,实现更灵活的数据封装服务。s202,利用所述psql从数据源中获取查询结果集并返回给客户端。如前所述,本发明实施例所述数据源为大数据平台,包括物理库表、hive数据表或者hbase数据表等。服务端将客户端的查询逻辑lsql转换为psql在大数据平台中进行查询获取查询结果并发送给客户端。本发明实施例提出一种基于数据项分析的动态数据封装方法,在服务端构建物理模型-数据项-逻辑模型的三层映射关系,根据客户端的数据查询请求,进行数据项和查询逻辑分析,实现了通用的数据查询自动查询,避免了传统数据封装方法通过开发大量openapi实现各种数据查询逻辑所带来的数据查询需求响应效率问题,降低数据封装装置运行维护成本的同时,更好地满足用户的数据查询需求。词法分析是计算机科学中将字符序列转换为单词(token)序列的过程。词法分析阶段是编译过程的第一个阶段且是必要阶段,是编译的基础。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析程序实现这个任务。词法分析的核心任务是扫描、识别单词且对识别出的单词给出定性、定长的处理;实现词法分析程序的常用途径:自动生成,手工生成。语法分析是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等.语法分析程序判断源程序在结构上是否正确.源程序的结构由上下文无关文法描述.语法分析程序可以用yacc(yetanothercompilercompiler)等工具自动生成。完成语法分析任务的程序称为语法分析器,或语法分析程序。按照源语言的语法规则,从词法分析的结果中识别出相应的语法范畴,同时进行语法检查。所以,本发明实施例首先对对lsql进行词法、语法分析,生成抽象语法树ast,并在ast中加入数据访问权限控制的约束条件,为后续的psql转换处理做准备。在一个可选的实施例中,步骤s201,所述根据接收到的查询逻辑lsql获取数据查询请求,根据物理模型-数据项-逻辑模型的三层映射关系选取数据项与物理模型的映射关系从而生成psql,进一步包括:根据所述数据查询请求的查询数据项集中的数据项和逻辑模型生成抽象语法树ast;根据所述数据查询请求的关系代数操作树,选取对应的物理模型,得到数据项与物理模型的映射关系;基于所述数据项与物理模型的映射关系,将所述抽象语法树ast中的数据项和逻辑模型替换为物理模型字段,获得psql。本发明实施例首先根据数据查询请求的数据项和逻辑模型生成抽象语法树ast,进一步,可在ast中加入数据访问权限控制的约束条件,为后续的psql转换处理做准备。图8为本发明实施例psql转换示意图,本发明实施例中psql的转换过程包括三部分:第一步、映射关系选择:根据查询数据项集中各数据项、逻辑模型的映射关系,查找对应的物理模型。由于数据项和逻辑模型往往存在多个映射关系,映射到多个物理模型及其字段,因此需要根据数据查询请求逻辑选择合适的映射关系。选择的结果是一到多个适用的映射关系,由后续环节在替换过程中进行对比评估和优化。第二步、数据项和逻辑模型替换:根据第一步的映射关系选择,将lsql的抽象语法树中各数据项和逻辑模型替换为物理模型字段,替换后形成初步的psql。第三步、psql评估优化:对于同一条lsql,选择不同的映射关系组合会生成不同的psql。至于哪一种组合生成的psql是最优的,需要进行评估和对比分析,才能确定最终的psql。因此,psql评估优化需要与第二步更换映射关系组合进行数据项和逻辑模型替换,通过循环评估优化,生成最优的psql。基于第三步的描述,本发明实施例所述选取对应的物理模型,得到数据项与物理模型的映射关系,进一步包括:选取一个或多个物理模型,得到数据项与物理模型的一个或多个映射关系;相应的,基于所述数据项与物理模型的映射关系,将所述抽象语法树ast中的数据项和逻辑模型替换为物理模型字段,获取psql,进一步包括:基于数据项与物理模型的一个或多个映射关系,依次根据每个数据项与物理模型的映射关系将所述抽象语法树ast中的数据项和逻辑模型替换为物理模型字段,生成一个或多个psql,获取所述一个或多个psql中最优的psql。具体的,在数据源不变的情况下,每个确定的数据查询请求对应一个确定的数据查询结果集,也就说,多次提交相同的数据查询请求,每次返回的数据查询结果集是一致的。但是,对同一个数据查询请求的多次提交,本发明实施例可能采用不同的映射关系和处理逻辑。这取决于本发明实施例的系统内部的最优映射关系的选择。该最优映射关系的选择根据psql评估优化结果确定以上描述了服务端对接收到的客户端的查询逻辑lsql进行分析、psql转换及从数据源中获取查询结果集并返回给客户端的过程。如前所述,据封装引擎的前端数据查询请求操作、后端数据封装服务都建立在物理模型-数据项-逻辑模型的三层映射关系的基础上。图9为本发明实施例物理模型-数据项-逻辑模型的三层映射关系示意图,是动态数据封装结构,该动态数据封装结构采用元数据描述,保存在数据封装引擎的元数据库中。因此,整个动态数据封装过程也就是这些元数据的维护更新过程,这个过程划分为三个步骤,如图10所示,包括物理模型导入、数据项分析和逻辑模型自动生成。在一个可选的实施例中,所述物理模型-数据项-逻辑模型的三层映射关系通过以下方法得到:物理模型导入:将数据源中的数据导入一个或多个物理模型,具体是,从接入服务端的数据封装引擎的物理数据库中自动导入物理模型元数据;数据项分析:根据所述一个或多个物理模型提炼数据项获得对应的一个或多个数据项集,具体是,从物理模型的字段中识别并提炼数据项,根据数据项获取数据项集;逻辑模型自动生成:根据数据项与物理模型的映射关系生成逻辑模型,从而建立物理模型-数据项-逻辑模型的三层映射关系,具体是,对数据项和物理模型之间的映射关系进行分析,根据分析的结果生成逻辑模型。在物理模型导入时,本发明实施例将物理数据库配置接入数据封装装置后,首先需要通过物理模型的自动导入功能,将指定范围的物理模型元数据导入数据封装装置中。导入的数据库对象类型包括schema、tablecolumn和view。导入后形成如下结构的数据资源目录如图11所示。由于数据库中对view采用select语句定义,无法直接导入view的模型结构,需要对select语句进行词法、语法和语义分析,根据view投影的源表模型结构定义,自动生成view的模型结构。在物理模型导入过程中,对元数据库中已经存在的物理模型进行自动匹配,实现物理模型的增量变更导入。实现物理模型导入及增量变更导入的具体方法包括:将所述数据源中schema、tablecolumn和view类型的数据导入一个或多个物理模型中;若物理模型元数据库中不存在同名table和view,则在物理模型元数据库中新增对应table和view;若物理模型元数据库中存在同名table,则对table的column进行名称和数据类型比较后,在物理模型元数据库中新增不存在的column,修改不一致的column;若物理模型元数据中存在同名view,则对view的sql解析结果进行投影、连接、选择等关系代数操作比较,如果比较结果不一致,则修改数据封装装置元数据库中的view。在数据项分析时,本发明实施例通过分析物理数据源,对每个物理模型的字段进行数据挖掘分析,识别和归并相同字段,提炼数据项,生成数据项目录。具体如下:在一个可选的实施例中,所述根据所述一个或多个物理模型提炼数据项获得对应的一个或多个数据项集,进一步包括:对于任意一个物理模型,将物理模型的每个字段生成对应的初始数据项,形成初始数据项集;基于初始数据项集的任意两个数据项,识别所述两个数据项的相似度;所述任意两个数据项包括以下任意一种:任意两个初始数据项;任意两个新数据项;任意一个初始数据和一个新数据项;若识别为相同的数据项,则将所述两个数据项合并为一个新数据项,并利用所述一个新数据项替换所述两个数据项,以更新所述初始数据项集;基于更新的初始数据项集对任意两个数据项进行识别,直至没有相同的数据项时,获得与所述物理模型对应的数据项集。在一个具体实施例中,数据项的提炼、生成处理过程如下:1.对物理模型的每个字段生成对应的数据项a,形成初始数据项集a{a1,a2,a3,…};2.对a中的数据项a1,a2,a3,…进行两两比较,如果其中两个数据项a1和a2识别为相同数据项,则将a1和a2合并;3.继续对a中的数据项进行第2步处理,直到a中找不到任何两个数据项可以识别为相同数据项。4.这时数据项集a就是最终生成的数据项集。基于上述实施例,所述基于初始数据项集的任意两个数据项,识别所述两个数据项的相似度,进一步包括:获取所述两个数据项的每个数据项的特征向量,所述特征向量包括如下特征中的一种或多种:字段名称、字段描述、字段数据类型、字段取值范围、字段数据和字段关联关系;所述特征向量可定义为:v(data_item)=(feature1,w1;feature2,w2;…);利用下式计算所述两个数据项的特征向量余弦值,获得所述两个数据项的相似度:其中,1)ai、aj是数据项集a{a1,a2,a3,…}的两个任意数据项;2)公式原理:多维空间两点与所设定的点形成夹角的余弦值,也就是基于初始数据项集对任意两个数据项ai、aj进行识别;3)sim(ai,aj)=cos(θ)表示求这两个数据项(或向量)ai、aj夹角的余弦值,余弦值的范围是-1到1,-1表示完全相反,1表示完全相同,0表示正交性(90度),余弦值越接近1代表两个向量ai、aj相似度越高;4)θ表示任意两个向量ai、aj的夹角;5)任意一个向量ai一共有n个特征值,wk表示一个向量的第k个特征。所述识别为相同的数据项,具体为:两个数据项之间的夹角越接近于小于预设夹角,余弦相似度大于或等于预设余弦值。根据上述描述,当向量ai、aj之间的夹角越接近于0度,两者越相似,余弦相似度越接近1。即余弦相似度越接近1,两个向量相似度越高,反之夹角越大,余弦相似度越小。因此本实施例所述预设夹角接近于0度,所述预设余弦值接近于1。在逻辑模型自动生成时,本发明实施例依据数据项与物流模型的映射关系分析生成,具体如下:在一个可选的实施例中,所述根据数据项与物理模型的映射关系生成逻辑模型,进一步包括:根据数据项与物理模型的映射关系,确定每个物理模型指向的数据项集a{a1,a2,a3,…},其中a1,a2,a3,…是数据项;根据所述一个或多个数据项集,获得数据项集的集合ta{a1,a2,a3,…};对于集合ta中的任意两个数据项集ai和aj,执行an=ai∩aj:若an=ai,或者an=aj,或者则将数据项集ai合并到数据项集aj;若count(an)/count(ai)>=β,而且count(an)/count(aj)>=β,则将ai和aj合并;利用合并后的数据项集更新集合ta;若集合ta中不存在满足上述条件的数据项集,则根据集合ta中的每个数据项集生成对应的逻辑模型。具体的,本发明实施例所述合并与所述合并到具有区别,举例来说:ai合并到aj:表示ai的范围没超过aj;ai和aj合并:表示合并后的集合大于或等于ai和aj的任何一个。以上描述了物理模型-数据项-逻辑模型的三层映射关系的构建封装过程。在描述本发明实施例客户端方法时提到,客户端为用户提供数据项目录和/或逻辑模型目录,同时提供关联推荐功能,其中关联推荐功能通过频繁数据项集实现。频繁数据项集为客户端提供关联推荐的数据,它本身是通过服务端创建,并且与频繁数据项集相关的还有数据缓存。在一个可选的实施例中,所述根据接收到的查询逻辑lsql进行词法和语法分析,获取数据查询请求之后,生成psql之前还包括:将所述数据查询请求中的查询数据项集与所有频繁数据项集进行第二匹配;若所述数据查询请求中的查询数据项集与一繁数据项集相同,则将所述数据查询请求中的关系代数树与所述一频繁数据项集的关系代数树进行第三匹配;若所述数据查询请求中的关系代数树与所述一频繁数据项集的关系代数树相同,则定位到数据缓存中的数据查询结果集并返回给客户端;相应的,所述利用所述psql从数据源中获取查询结果集并返回给客户端之后还包括:若所述数据查询请求中的查询数据项集为频繁数据项集,则在获取数据查询结果集后,将所述数据查询请求中的关系代数树与所述数据查询结果集存储到所述数据缓存中。本发明实施例中,数据封装装置接收数据查询请求后,优选从数据缓存中查找对应数据结果集,在查找不到的情况下才进行物理库的数据访问。如果数据查询请求的查询数据项集属于频繁数据项集,但是对应的数据查询结果集还没有加载到数据缓存,则数据封装装置在处理该数据查询请求的同时,自动将结果集加载到数据缓存。本发明实施例为了提升数据查询并发能力和响应速度,将频繁数据项集的数据查询结果保存在数据缓存中。在处理新的数据查询请求,如果在数据缓存中找到对应的结果集,则直接将数据缓存的结果集返回给用户,避免了后端的数据库访问操作,实现快速响应。数据缓存围绕频繁数据项集进行组织,数据封装装置主要根据查询数据项集进行数据缓存的匹配。前面已经说明,每个数据查询请求对应一个确定的数据查询结果集,而数据查询请求由查询数据项集合关系代数操作树两部分组成。因此,多个数据查询请求可能具有相同的查询数据项集和不同的关系代数操作树,从而对应不同的数据查询结果集。如果这些查询数据项集属于频繁数据项集,那么对应的数据查询结果集要么在数据缓存中,要么将要加入数据缓存。图12为本发明实施例数据缓存的组织结构示意图,服务端的数据缓存包括频繁数据项集、关系代数操作树和数据查询结果集。数据缓存的查找匹配过程如下:将数据查询请求的查询数据项集与频繁数据项集中的查询数据项集进行匹配,查找是否存在相同的数据项集。如果找到相同的数据项集,则将数据查询请求的关系代数操作树与频繁数据项集中对应查询数据项集的关系代数操作树进行匹配,查找是否存在相同的关系代数操作树。如果能找到,则可以定位到数据缓存中对应的数据查询结果集。由于关系代数操作树的结构相对复杂,匹配耗时较长,所以经过第一步的数据项集匹配,缩小关系代数操作树的查找范围,可以大幅提升数据封装装置的运行效率。由于针对特定的数据查询需求,往往具有比较固定的数据项组合。如果某些数据查询操作特别频繁,则对应的数据项组合频繁出现,形成频繁数据项集。用户选择数据项时,数据封装装置将这些数据项与频繁数据项集进行匹配,推荐用户在匹配中的数据项集中选择数据项,实现关联推荐功能。在用户每次提交数据查询请求,以及对这些请求的响应处理和结果集返回时,服务端都会记录详细的数据查询日志,通过分析这些日志内容更新频繁数据项集。频繁数据项集主要用于编辑数据查询请求时进行数据项的据关联推荐,或者处理数据查询请求时进行数据缓存更新。在一个可选的实施例中,服务端通过如下方法更新所述频繁数据项集:定期扫描指定日期的数据查询日志,获取每个数据查询请求的查询数据项集,形成查询数据项集汇总表;基于所述查询数据项集汇总表,根据日期段统计每个数据查询请求的查询数据项集的次数;将数据缓存中的频繁数据项集的成员更新为次数最多的前n个数据项集,n为正整数;相应的,根据接收到的数据查询请求以及所述数据查询请求对应的数据查询结果集,记录数据查询日志。以上描述了频繁数据项集与数据缓存。本发明实施例所述基于数据项分析的动态数据封装方法服务端方法,主要描述了服务端对接收到的客户端的查询逻辑lsql进行分析、psql转换及从数据源中获取查询结果集并返回给客户端的过程,物理模型-数据项-逻辑模型的三层映射关系的构建封装过程,以及频繁数据项集与数据缓存。在一个具体实施例中,结合客户端方法与服务端方法,本发明实施例基于数据项分析的动态数据封装方法的数据查询过程如图13所示,包括:数据项与逻辑模型的选择、编辑数据查询请求、服务端缓存匹配、服务端缓存匹配、lsql分析、psql生成和执行以及缓存加载与结果返回;其中,数据项与逻辑模型的选择和编辑数据查询请求为客户端操作,其他为服务端操作。与现有数据封装方式相比,本发明实施例不需要针对每一个特定的数据访问逻辑实现对应的openapi。数据应用开发人员通过数据封装装置的数据访问服务界面查找需要的数据项或者逻辑模型,通过对这些数据项和逻辑模型进行选择、组合、设置关联和查询条件,提交数据查询请求。数据封装装置接收数据查询请求后,根据逻辑模型-数据项-物理模型的映射关系,自动生成物理数据的查询sql,提交到数据库执行,并返回执行结果集。综合以上所述,本发明实施例的关键技术包括:(1)基于数据项灵活组合数据查询请求:提供数据项和逻辑模型的检索、关联推荐等功能,支持用户方便地根据业务主题的需要选择相关的数据项和逻辑模型、配置关系代数操作树,生成数据查询请求。(2)通过数据查询请求的查询数据项集分析,生成频繁数据项集,为数据查询时进行关联推荐和数据缓存管理提供支持。一方面基于频繁数据项集实现数据项选择时推测用户数据查询的业务主题,据此进行关联推荐,提升数据封装装置的易用性;另一方面通过频繁数据项集进行数据缓存更新,建立查询数据项集-关系代数操作树-数据查询结果集的数据缓存组织结构,实现快速的数据缓存匹配,提升数据封装装置的运行效率。(3)构建物理模型-数据项-逻辑模型的三层映射关系组织结构,用于实现数据查询请求到物理数据库查询的自动转换处理。实现三层映射关系组织结构的数据项和逻辑模型自动生成,降低数据封装装置的维护成本。最后,本发明实施例具有如下有益效果:(1)本发明提出的数据封装装置采用基于数据项的动态数据封装技术,用户可以根据业务查询需要,灵活组合数据项进行数据查询,避免了传统数据封装方法通过开发大量openapi实现各种数据查询逻辑所带来的数据查询需求响应效率问题,降低数据封装装置运行维护成本的同时,更好地满足用户的数据查询需求;(2)本发明根据数据项的选择推测用户的数据查询主题,并据此进行数据项关联推荐,在提供灵活查询功能的同时确保数据封装装置的易用性;(3)本发明通过频繁数据项集构建数据缓存,数据缓存的装载更有针对性,降低内存要求的同时提升了数据查询的缓存命中率,确保数据封装装置具有较好的并发能力和响应速度。图14示出了本发明实施例一种客户端的设备框架示意图。参照图14,所述客户端,包括:处理器(processor)1401、存储器(memory)1402和总线1403;其中,所述处理器1401和存储器1402通过所述总线1403完成相互间的通信;所述处理器1401用于调用所述存储器1402中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:基于给定的数据项目录和/或逻辑模型目录,获取用户选择的数据项和/或逻辑模型,并根据用户选择的数据项和/或逻辑模型生成查询数据项集和关系代数操作树,从而获得用户的数据查询请求;根据所述数据查询请求生成查询逻辑lsql,并发送至服务端以获取数据查询结果集;其中,所述查询数据项集包括用户选择的数据项和/或逻辑模型;所述关系代数操作树,用于描述所述数据项集中的数据项之间的查询逻辑。本发明另一实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:基于给定的数据项目录和/或逻辑模型目录,获取用户选择的数据项和/或逻辑模型,并根据用户选择的数据项和/或逻辑模型生成查询数据项集和关系代数操作树,从而获得用户的数据查询请求;根据所述数据查询请求生成查询逻辑lsql,并发送至服务端以获取数据查询结果集;其中,所述查询数据项集包括用户选择的数据项和/或逻辑模型;所述关系代数操作树,用于描述所述数据项集中的数据项之间的查询逻辑。本发明另一实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:基于给定的数据项目录和/或逻辑模型目录,获取用户选择的数据项和/或逻辑模型,并根据用户选择的数据项和/或逻辑模型生成查询数据项集和关系代数操作树,从而获得用户的数据查询请求;根据所述数据查询请求生成查询逻辑lsql,并发送至服务端以获取数据查询结果集;其中,所述查询数据项集包括用户选择的数据项和/或逻辑模型;所述关系代数操作树,用于描述所述数据项集中的数据项之间的查询逻辑。图15示出了本发明实施例一种服务端的设备框架示意图。参照图15,所述服务端,包括:处理器(processor)1501、存储器(memory)1502和总线1503;其中,所述处理器1501和存储器1502通过所述总线1503完成相互间的通信;所述处理器1501用于调用所述存储器1502中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:根据接收到的查询逻辑lsql进行词法和语法分析,获取数据查询请求;基于物理模型-数据项-逻辑模型的三层映射关系,根据所述数据查询请求选取数据项与物理模型的映射关系从而生成psql;利用所述psql从数据源中获取查询结果集并返回给客户端;其中,所述物理模型-数据项-逻辑模型的三层映射关系,用于实现从数据查询请求到数据源的查询过程的数据转换。本发明另一实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:根据接收到的查询逻辑lsql进行词法和语法分析,获取数据查询请求;基于物理模型-数据项-逻辑模型的三层映射关系,根据所述数据查询请求选取数据项与物理模型的映射关系从而生成psql;利用所述psql从数据源中获取查询结果集并返回给客户端;其中,所述物理模型-数据项-逻辑模型的三层映射关系,用于实现从数据查询请求到数据源的查询过程的数据转换。本发明另一实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:根据接收到的查询逻辑lsql进行词法和语法分析,获取数据查询请求;基于物理模型-数据项-逻辑模型的三层映射关系,根据所述数据查询请求选取数据项与物理模型的映射关系从而生成psql;利用所述psql从数据源中获取查询结果集并返回给客户端;其中,所述物理模型-数据项-逻辑模型的三层映射关系,用于实现从数据查询请求到数据源的查询过程的数据转换。本领域普通技术人员可以理解:实现上述设备实施例或方法实施例仅仅是示意性的,其中所述处理器和所述存储器可以是物理上分离的部件也可以不是物理上分离的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1