跨域的数据查询方法及装置与流程

文档序号:20838869发布日期:2020-05-22 17:14阅读:157来源:国知局
本文涉及数据处理领域,尤其涉及一种跨域的数据查询方法及装置。
背景技术
::相关技术中,跨域数据交换是指将分散建设的若干应用信息系统进行整合,通过计算机网络构建的信息交换平台,将若干个应用子系统进行信息/数据的传输及共享,提高信息资源的利用率,成为进行信息化建设的基本目标,以保证分布异构系统之间互联互通,建立中心数据库,完成数据的抽取、集中、加载、展现,构造统一的数据处理和交换。在相关技术中,采用基于api的跨域数据交换技术,在基于api的跨域交换技术中,不同系统将自身的数据封装成api接口,然后对外暴露api服务,使用者调用api服务即可访问到该系统的数据。基于json的跨域数据交换技术是基于api的跨域数据交换的一种常用实现方式。在基于json的跨域数据交换技术中,在进行跨域数据交换之前,如图1所示,使用方(系统a)需要封装好请求数据,然后对数据进行json序列化,配置好请求地址以及其他的一些参数,将序列化后的json数据发送到目标服务(系统b),目标服务给出响应并返回数据,使用方反序列化返回数据,获取所需数据。在上述相关技术中,使用api等技术通过网络调用以实现数据的交换。系统将数据存储在数据库或数据仓库中,然后使用编程语言编写程序,程序功能主要为接受一些参数后生成查询结构化查询语言(sql)语句,发送查询sql语句给数据库,数据库返回数据。因此,相关技术中的数据交换不是直接去访问数据库获取数据,而是封装程序再通过程序访问数据库,数据使用者和数据库之间增加了一层程序,一方面需要额外的开发工作和对接工作,另一方面增加了系统的复杂度。技术实现要素:为克服相关技术中存在的问题,本文提供一种跨域的数据查询方案。根据本文的第一方面,提供一种跨域的数据查询方法,包括:对输入的结构化查询语言sql语句进行分析,生成查询执行计划,其中,所述查询执行计划中记录了执行所述sql语句所需要的操作;根据所述查询执行计划,生成多个子查询任务,其中,每个所述子查询任务中记录了该子查询任务所需要处理的数据源信息以及该子查询任务处理的字段,其中,所述数据源信息包括数据源的数据目录,所述数据目录记录了描述本地存储的数据库和数据表的各个库表元数据的链接地址,各个所述元数据与其描述的数据库和数据表对应;根据各个所述子查询任务记录的所述数据目录,将各个子查询任务分别发送给与该子查询任务记录的数据目录对应的数据系统;接收各个所述数据系统在执行该数据系统接收到的所述子查询任务之后获得到的数据结果;将接收到的所有所述数据结果进行合并,得到查询结果。可选地,对输入的结构化查询语言sql语句进行分析,生成查询执行计划,包括:对输入的所述sql语句进行词法分析和语法解析,获取与所述sql语句对应的关键信息,其中,所述关键信息包括:所述sql语句所查询的字段列表、查询条件、所述sql语句所查询的数据源的数据目录;根据对所述sql语句进行词法分析和语法解析的结果,生成抽象语法树,其中,所述抽象语法树中包括多个标记对象token;遍历所述抽象语法树,记录所述抽象语法树上的不同token节点的属性,以将所述token节点转换成查询块;根据所述查询块,生成与所述查询块对应的所述查询执行计划。可选地,根据所述查询块,生成与所述查询块对应的所述查询执行计划,包括:将所述查询块转换成逻辑查询计划,以确定执行所述sql语句的逻辑操作;对所述逻辑查询计划进行分析,将所述逻辑查询计划转成物理查询计划,以得到获取所述查询结果的路径;对所述物理查询计划进行优化,以选择出获取所述查询结果的最优路径,得到所述查询执行计划。可选地,在将所述查询块转换成逻辑查询计划之后,对所述逻辑查询计划进行分析之前,所述方法还包括:根据所述sql语句所查询的数据源之间的关联关系,重写所述逻辑查询计划。可选地,在将接收到的所有所述数据结果进行合并,得到查询结果之后,所述方法还包括:将所述查询结果返回给查询者。根据本文的另一个方面,提供了一种跨域的数据查询装置,包括:查询计划分析模块,用于对输入的sql语句进行分析,生成查询执行计划,其中,所述查询执行计划中记录了执行所述sql语句所需要的操作;查询计划划分模块,用于根据所述查询执行计划,生成多个子查询任务,其中,每个所述子查询任务中记录了该子查询任务所需要处理的数据源信息以及该子查询任务处理的字段,其中,所述数据源信息包括数据源的数据目录,所述数据目录记录了用于描述本地存储的数据库和数据表的各个库表元数据的链接地址,各个所述库表元数据与其描述的数据库和数据表对应;查询任务分发模块,用于根据各个所述子查询任务记录的所述数据目录,将各个子查询任务分别发送给与该子查询任务记录的数据目录对应的数据系统;查询结果接收模块,用于接收各个所述数据系统在执行该数据系统接收到的所述子查询任务之后获得到的数据结果;查询结果合并模块,用于将接收到的所有所述数据结果进行合并,得到查询结果。可选地,所述查询计划分析模块包括:语法解析单元,用于对输入的所述sql语句进行词法分析和语法解析,获取与所述sql语句对应的关键信息,并根据对所述sql语句进行词法分析和语法解析的结果,生成抽象语法树,其中,所述关键信息包括:所述sql语句所查询的字段列表、查询条件、所述sql语句所查询的数据源的数据目录,所述抽象语法树中包括多个标记对象token;语义分析单元,用于遍历所述抽象语法树,记录所述抽象语法树上的不同token节点的属性,以将所述token节点转换成查询块;查询计划生成单元,用于根据所述查询块,生成与所述查询块对应的所述查询执行计划。可选地,所述查询计划生成单元包括:逻辑计划生成子单元,用于将所述查询块转换成逻辑查询计划,以确定执行所述sql语句的逻辑操作;物理计划生成子单元,用于对所述逻辑查询计划进行分析,将所述逻辑查询计划转成物理查询计划,以得到获取所述查询结果的路径;计划优化子单元,用于对所述物理查询计划进行优化,以选择出获取所述查询结果的最优路径,得到所述查询执行计划。可选地,所述物理计划生成子单元还用于在将所述查询块转换成逻辑查询计划之后,根据所述sql语句所查询的数据源之间的关联关系,重写所述逻辑查询计划。可选地,还包括:查询结果返回模块,用于在所述查询结果合并模块得到查询结果之后,将所述查询结果返回给查询者。本文的另一个方面,提供了一种计算机可读存储介质,该计算机程序被执行时实现上述跨域的数据查询方法的步骤。本文的另一个方面,提供了一种计算机设备,包括处理器、存储器和存储于所述存储器上的计算机程序,处理器执行计算机程序时实现上述跨域的数据查询方法的步骤。本文通过使用sql驱动跨域的数据查询方案,可以避免格外的程序开发工作和对接工作,降低系统的复杂度。并且由于数据库原生支持sql,因此,使用sql驱动数据查询,比较贴近数据库,且可以使得数据交换过程的方式达到统一。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本文。附图说明构成本文的一部分的附图用来提供对本文的进一步理解,本文的示意性实施例及其说明用于解释本文,并不构成对本文的不当限定。在附图中:图1是根据相关技术的一种跨域数据交换系统的示意图;图2是根据一示例性实施例示出的一种跨域的数据查询方法的流程图;图3是根据一示例性实施例示出的一种数据库存储结构示意图;图4是根据一示例性实施例示出的一种跨域的数据查询方法的执行示意图;图5是根据一示例性实施例示出的一种跨域的数据查询装置的框图;图6是根据一示例性实施例示出的一种计算机设备的框图。具体实施方式为使本文实施例的目的、技术方案和优点更加清楚,下面将结合本文实施例中的附图,对本文实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本文一部分实施例,而不是全部的实施例。基于本文中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文保护的范围。需要说明的是,在不冲突的情况下,本文中的实施例及实施例中的特征可以相互任意组合。sql语言简洁易用表现力强大,是操作数据库实现数据交换的最佳方式。因此,为了避免格外的程序开发工作和对接工作,降低系统的复杂度,本文实施例提供了一种通过sql驱动的跨域的数据查询方法。图2是根据一示例性实施例示出的一种跨域的数据查询方法的流程图,如图2所示,该跨域的数据查询方法主要包括以下步骤s201至步骤s205,下面分别对各个步骤进行描述。如图2所示,在步骤s201中,对输入的sql语句进行分析,生成查询执行计划,其中,查询执行计划中记录了执行该sql语句所需要的操作。在该实施例中,为了方便地检索、定位数据的位置,在执行步骤s201之前,将数据库汇集接入,生成数据目录。在具体应用中,用户使用业务系统后将产生业务数据,产生的业务数据存储在业务系统的数据库中,具体可以建立不同的库以存储不同业务的数据。在本实施例中,为了通过sql驱动数据交换,可以将数据库的库表元数据(即库和表的描述信息)公开出来,从而使得使用者能够是否有自己可用的数据。在本实施例,库表元数据,并不是库表中存储的真实数据,而是用来描述库表中数据的数据,因此不会对数据库造成安全方面影响。例如,如果库表中数据为用户的姓名、性别、年龄和籍贯等个人数据,则该库表的库表元数据可以为“个人信息”。在具体应用中,数据库的库表元数据的提取可以通过自动化的方式进行,在使用时,只需要配置好数据库连接方式,通过访问数据库的库表元数据,即可获取数据库的库表元数据。为了方便检索、定位数据的位置,如图3所示,可以将数据库的库表元数据进行汇集之后形成数据目录,在数据目录中记录本地存储的数据库的各个库表元数据。在具体应用中,数据使用者在需要跨域进行数据的检索和定位时,可以编写相应的sql语句,输入到当前使用的系统中,系统对输入的sql语句进行分析,获取到该sql语句对应的查询执行计划。在该查询执行计划中,可以记录执行该sql语句所需要的操作。在本实施例的一个可选实施方式中,步骤s201可以包括以下步骤2011-2014。步骤2011,对输入的sql语句进行词法分析和语法解析,获取与该sql语句对应的关键信息,其中,关键信息包括但不限于:该sql语句所查询的字段列表、查询条件、该sql语句所查询的数据源的数据目录。步骤2012,根据上述对sql语句进行词法分析和语法解析的结果,生成抽象语法树,其中,抽象语法树中包括多个标记对象(token)。在具体应用中,可以利用现有的sql语法解析器按照sql语法对sql语句进行词法分析和语法解析,识别出sql语句中各个部分,然后以抽象语法树ast的形式输出。例如,可以使用antlr实现sql的词法和语法解析。使用antlr实现sql的词法和语法解析只需要编写一个语法文件,定义词法和语法替换规则即可,由antlr完成词法分析、语法分析、语义分析、中间代码生成的过程。步骤2013,遍历抽象语法树,记录抽象语法树上的不同token节点的属性,以将token节点转换成查询块。在具体应用中,在步骤2013中,遍历ast,抽象出查询的基本组成单元queryblock(查询块),这是一个递归的过程,根据解析出来的token映射为相应queryblock。具体地,将token映射为相应的queryblock可以包括以下过程:tok_query=>创建qb对象,循环递归子节点tok_from=>将库名、表名语法部分保存到qb对象的相应属性中tok_select=>将查询字段列表语法部分保存到qb对象的相应属性中tok_where=>将查询条件语法部分保存到qb对象的相应属性中步骤2014,根据查询块(queryblock),生成与查询块对应的查询执行计划。在步骤2014中,生成查询执行计划的过程,即为遍历步骤2013生成的qb和qb对象的保存语法的属性,生成执行操作树,再遍历执行操作树,翻译为查询执行计划。由于已经具体到操作级别,因此,由operatortree的根节点向下深度优先遍历,转化为查的执行计划。遍历queryblock,翻译为执行操作树operatortree,可以包括以下过程:tablescan=>读取数据selectoperator=>选取操作groupbyoperator=>分组聚合在具体应用中,如果输入的sql语句涉及多个异构的数据表,则在本实施例的一个可选实施方式中,步骤2014可以包括下面的步骤1-3。步骤1,将查询块转换成逻辑查询计划,以确定执行sql语句的逻辑操作;步骤2,对逻辑查询计划进行分析,将逻辑查询计划转成物理查询计划,以得到获取查询结果的路径;步骤3,对物理查询计划进行优化,以选择出获取查询结果的最优路径,得到查询执行计划。采用上述可选实施例,可以在涉及多个异构的数据表,先将查询块转换成逻辑查询计划,确定执行输入的sql语句所需的逻辑操作,然后再转成物理查询计划,并进行优化,可以减少查询所需要的时间,提高效率。在上述可选实施方式中,在步骤1中,在将所述查询块转换成逻辑查询计划之后,还根据sql语句所查询的数据源之间的关联关系,重写逻辑查询计划,以对逻辑查询计划进行优化。如图2所示,在步骤s202中,根据查询执行计划,生成多个子查询任务,其中,每个子查询任务中记录了该子查询任务所需要处理的数据源信息以及该子查询任务处理的字段,其中,数据源信息包括数据源的数据目录,数据目录记录了描述本地存储的数据库和数据表的各个库表元数据的链接地址,各个元数据与其描述的数据库和数据表对应。步骤s203中,根据各个子查询任务记录的数据目录,将各个子查询任务分别发送给与该子查询任务记录的数据目录对应的数据系统。在步骤s204中,接收各个数据系统在执行该数据系统接收到的子查询任务之后获得到的数据结果。在具体应用中,接收到子查询任务的数据系统在接收到子查询任务之后,根据该数据系统的数据目录,可以定位到需要检索的库表元数据,通过库表元数据链接到数据库进行查询。在步骤s205中,将接收到的所有数据结果进行合并,得到查询结果。在本实施例的一个可选实施方式中,在将接收到的所有数据结果进行合并,得到查询结果之后,还将所述查询结果返回给查询者。图4是根据一示例性实施例示出的一种上述跨域的数据查询方法的执行示意图,如图4所示,在该实施例中,每个业务数据系统中包括:查询计划分析器(queryplanner)、协调任务分发器(querycoordinator)、查询执行器(queryworker)和数据库(db)组成,用户输入sql查询语句并发送到当前业务数据系统的查询计划分析器(步骤401),查询计划分析器对sql查询语句进行分析,得到查询执行计划,并将查询执行计划分析为多个子任务(步骤402),协调任务分发器将子任务分发到相应的业务数据系统的查询执行器(步骤403),查询执行器上执行接收到的子任务(步骤404),查询数据库(步骤405),进行数据获取。查询执行器在执行过程中不断向协调任务分发器汇报当前运行状态。查询执行器每一个查询执行器执行完任务后,在步骤406将结果返回给协调任务分发器,协调任务分发器收集子任务结果进行汇集处理,将多个子任务的执行结果汇总,转换成整个查询结果,返回给查询者(步骤407)。采用本实施例提供的跨域的数据查询方法,通过使用sql驱动跨域的数据查询方案,可以避免格外的程序开发工作和对接工作,降低系统的复杂度。并且由于数据库原生支持sql,因此,使用sql驱动数据查询,比较贴近数据库,且可以使得数据交换过程的方式达到统一。本文实施例还提供了一种跨域的数据查询装置,该装置可以用于实现上述的跨域的数据查询方法。图5是根据一示例性实施例示出的一种跨域的数据查询装置500的结构示意图,如图5所示,该装置可以包括:查询计划分析模块501、查询计划划分模块502、查询任务分发模块503、查询结果接收模块504和查询结果合并模块505。为了避免重复描述,下面只对该装置的各个功能模块进行描述,其它相关事宜可以参见上述关于一种跨域的数据查询方法中的描述,在此不再赘述。查询计划分析模块501,用于对输入的结构化查询语言sql语句进行分析,生成查询执行计划,其中,所述查询执行计划中记录了执行所述sql语句所需要的操作;查询计划划分模块502,用于根据所述查询执行计划,生成多个子查询任务,其中,每个所述子查询任务中记录了该子查询任务所需要处理的数据源信息以及该子查询任务处理的字段,其中,所述数据源信息包括数据源的数据目录,所述数据目录记录了用于描述本地存储的数据库和数据表的各个库表元数据的链接地址,各个所述库表元数据与其描述的数据库和数据表对应;查询任务分发模块503,用于根据各个所述子查询任务记录的所述数据目录,将各个子查询任务分别发送给与该子查询任务记录的数据目录对应的数据系统;查询结果接收模块504,用于接收各个所述数据系统在执行该数据系统接收到的所述子查询任务之后获得到的数据结果;查询结果合并模块505,用于将接收到的所有所述数据结果进行合并,得到查询结果。采用上述装置,通过使用sql驱动跨域的数据查询方案,可以避免格外的程序开发工作和对接工作,降低系统的复杂度。并且由于数据库原生支持sql,因此,使用sql驱动数据查询,比较贴近数据库,且可以使得数据交换过程的方式达到统一在本实施例的一个可选实施方式中,查询计划分析模块501可以包括:语法解析单元,用于对输入的所述sql语句进行词法分析和语法解析,获取与所述sql语句对应的关键信息,并根据对所述sql语句进行词法分析和语法解析的结果,生成抽象语法树,其中,所述关键信息包括:所述sql语句所查询的字段列表、查询条件、所述sql语句所查询的数据源的数据目录,所述抽象语法树中包括多个标记对象token;语义分析单元,用于遍历所述抽象语法树,记录所述抽象语法树上的不同token节点的属性,以将所述token节点转换成查询块;查询计划生成单元,用于根据所述查询块,生成与所述查询块对应的所述查询执行计划。在上述可选实施例中,可选的,所述查询计划生成单元可以包括:逻辑计划生成子单元,用于将所述查询块转换成逻辑查询计划,以确定执行所述sql语句的逻辑操作;物理计划生成子单元,用于对所述逻辑查询计划进行分析,将所述逻辑查询计划转成物理查询计划,以得到获取所述查询结果的路径;计划优化子单元,用于对所述物理查询计划进行优化,以选择出获取所述查询结果的最优路径,得到所述查询执行计划。可选的,在上述可选实施方式中,所述物理计划生成子单元还用于在将所述查询块转换成逻辑查询计划之后,根据所述sql语句所查询的数据源之间的关联关系,重写所述逻辑查询计划。在本实施例的一个可选实施例中,该装置还可以包括:查询结果返回模块,用于在所述查询结果合并模块得到查询结果之后,将所述查询结果返回给查询者。需要说明的是,上述实施例中所描述的各个功能模块为该装置的功能模块,在具体应用中可以将多个功能模块的功能集成在一个模块上实现,也可以将一个功能模块的功能分成多个模块实现,具体本实施例中并不作限定。例如,在具体应用中,查询计划分析模块501和查询计划划分模块502可以由图4中的查询计划分析器实现,查询任务分发模块503、查询结果接收模块504和查询结果合并模块505可由图4中的任务协商分发器实现。图6是根据一示例性实施例示出的一种用于跨域的数据查询方法的计算机设备600的框图。例如,计算机设备600可以被提供为一服务器。参照图6,计算机设备600包括处理器601,处理器的个数可以根据需要设置为一个或者多个。计算机设备600还包括存储器602,用于存储可由处理器601的执行的指令,例如应用程序。存储器的个数可以根据需要设置一个或者多个。其存储的应用程序可以为一个或者多个。处理器601被配置为执行指令,以执行上述方法。本领域技术人员应明白,本文的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本文可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本文可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质,包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质等。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。本文是参照根据本文实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。尽管已描述了本文的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本文范围的所有变更和修改。显然,本领域的技术人员可以对本文进行各种改动和变型而不脱离本文的精神和范围。这样,倘若本文的这些修改和变型属于本文权利要求及其等同技术的范围之内,则本文的意图也包含这些改动和变型在内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1