查询数据库数据的方法、装置、设备和存储介质与流程

文档序号:20917926发布日期:2020-05-29 13:46阅读:194来源:国知局
本发明涉及一种大数据
技术领域
:,尤其涉及查询数据库数据的方法、装置、设备和存储介质。
背景技术
::随着数据价值的增加以及存储成本的下降,越来越多的企业将数据作为资产进行长期保存。由于不同的查询场景和使用规范,数据被存储到不同的系统中被使用,比如传统的关系型数据库、分布式的数据库、流式数据存储以及时序数据存储。不同数据存储组件对应不同的查询方式,以满足上层业务系统的需求。现有的数据采集方案中,数据被存储到不同的系统,不同的系统对应不同的查询方式,例如:数据仓库工具hive可以利用sql进行访问,hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类结构化查询语言(structuredquerylanguage,sql)查询功能;hbase可利用java语言进行访问,hbase是一个开源的非关系型分布式数据库,实现的编程语言为java。当服务器需要对不同数据库进行查询时,则需要开发不同的查询方式,利用不同查询语句进行查询,若有数据源查询的情况下,需要通过不同的中间表进行操作,数据传输量较大,执行指令冗杂,数据查询效率十分低下。技术实现要素:本发明提供了一种查询数据库数据的方法、装置、设备和存储介质,用于解决在查询数据库数据时,查询方式不同的问题,提高了数据查询效率。本发明实施例的第一方面提供一种查询数据库数据的方法,包括:通过查询接口获取访问目标数据源的目标操作指令,所述查询接口为客户端查询不同类型数据源的统一接口,所述目标操作指令为结构化查询语言sql描述的指令;根据所述目标操作指令,获取所述目标数据源的目标语法标识,所述目标语法标识用于指示所述目标数据源的指令语法;根据预置数据仓库工具hive和所述目标语法标识,将所述目标操作指令转化成目标钩子handle;根据所述目标handle,查询对应的所述目标数据源中的目标数据;反馈查询结果,所述查询结果用于指示是否查询到所述目标数据。可选的,在本申请实施例第一方面的第一种实现方式中,读取所述目标操作指令的目标语言规则;将所述目标语言规则转化为语法树;生成所述目标语言规则的解析器;基于所述语法树以及所述解析器,将所述目标操作指令进行解析,获取所述目标数据源的所述目标语法标识,所述目标语法标识用于指示所述目标数据源的指令语法。可选的,在本发明实施例第一方面的第二种实现方式中,在所述预置数据仓库工具中读取所述目标语法标识的语法规则;解析所述语法规则,得到抽象语法树;将所述抽象语法树进行转换,得到查询块;将所述查询块进行翻译,得到执行操作树;利用所述执行操作树,将所述目标操作指令进行重新编译,得到所述目标handle。可选的,在本发明实施例第一方面的第三种实现方式中,获取所述目标handle的执行日志,并在所述执行日志中生成告警信息。可选的,在本发明实施例第一方面的第四种实现方式中,获取所述目标handle的执行日志,并提取目标关键词,所述目标关键词为所述目标handle执行过程中的敏感词,所述执行日志中设置有预置日志敏感表;判断所述目标关键词是否与所述预置日志敏感表相匹配;若所述目标关键词与所述预置日志敏感表相匹配,则在所述执行日志中生成告警信息。可选的,在本发明实施例第一方面的第五种实现方式中,若未查询到所述目标数据且生成了所述告警信息,则通过所述查询接口反馈所述告警信息,所述告警信息用于指示未查询到所述目标数据;若查询到所述目标数据,则通过所述查询接口反馈所述目标数据。可选的,本发明实施例第一方面的第六种实现方式中,添加审计日志,所述审计日志为查询数据过程中的注释。本发明的第二方面提供了一种查询数据库数据的装置,包括:第一获取模块,用于通过查询接口获取访问目标数据源的目标操作指令,所述查询接口为客户端查询不同类型数据源的统一接口,所述目标操作指令为结构化查询语言sql描述的指令;第二获取模块,用于根据所述目标操作指令,获取所述目标数据源的目标语法标识,所述目标语法标识用于指示所述目标数据源的指令语法;转化模块,用于根据预置数据仓库工具hive和所述目标语法标识,将所述目标操作指令转化成目标钩子handle;查询模块,用于根据所述目标handle,查询对应的所述目标数据源中的目标数据;反馈模块,用于反馈查询结果,所述查询结果用于指示是否查询到所述目标数据。可选的,在本申请实施例第二方面的第一种实现方式中,第二获取模块具体用于:读取所述目标操作指令的目标语言规则;将所述目标语言规则转化为语法树;生成所述目标语言规则的解析器;基于所述语法树以及所述解析器,将所述目标操作指令进行解析,获取所述目标数据源的所述目标语法标识,所述目标语法标识用于指示所述目标数据源的指令语法。可选的,在本申请实施例第二方面的第二种实现方式中,转化模块具体用于:在所述预置数据仓库工具中读取所述目标语法标识的语法规则;解析所述语法规则,得到抽象语法树;将所述抽象语法树进行转换,得到查询块;将所述查询块进行翻译,得到执行操作树;利用所述执行操作树,将所述目标操作指令进行重新编译,得到所述目标handle。可选的,在本申请实施例第二方面的第三种实现方式中,查询数据库数据的装置还包括:生成模块,用于获取所述目标handle的执行日志,并在所述执行日志中生成告警信息。可选的,在本申请实施例第二方面的第四种实现方式中,生成模块具体用于:获取所述目标handle的执行日志,并提取目标关键词,所述目标关键词为所述目标handle执行过程中的敏感词,所述执行日志中设置有预置日志敏感表;判断所述目标关键词是否与所述预置日志敏感表相匹配;若所述目标关键词与所述预置日志敏感表相匹配,则在所述执行日志中生成告警信息。可选的,在本申请实施例第二方面的第五种实现方式中,反馈模块具体用于:若未查询到所述目标数据且生成了所述告警信息,则通过所述查询接口反馈所述告警信息,所述告警信息用于指示未查询到所述目标数据;若查询到所述目标数据,则通过所述查询接口反馈所述目标数据。可选的,在本申请实施例第二方面的第六种实现方式中,查询数据库数据的装置还包括:添加模块,用于添加审计日志,所述审计日志为查询数据过程中的注释。本发明第三方面提供了一种查询数据库数据的设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互联;所述至少一个处理器调用所述存储器中的所述指令,以使得所述查询数据库数据的设备执行上述第一方面所述的方法。本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。从以上技术方案可以看出,本发明实施例具有以下优点:本发明实施例,通过利用hive将各数据库匹配的查询指令转化成目标handle,通过结构化查询语言一种数据查询方式查询不同数据源的数据,避免中间表的产生,减少数据传输量以及传输时间,提高数据查询的效率。附图说明图1为本发明实施例中查询数据库数据的方法的一个实施例示意图;图2为本发明实施例中查询数据库数据的方法的另一个实施例示意图;图3为本发明实施例中查询数据库数据的装置的一个实施例示意图;图4为本发明实施例中查询数据库数据的装置的另一个实施例示意图;图5为本发明实施例中查询数据库数据的设备的一个实施例示意图。具体实施方式本发明提供了一种查询数据库数据的方法、装置、设备和存储介质,用于解决在查询数据库数据时,查询方式不同的问题,提高了数据查询效率。为了使本
技术领域
:的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。为便于理解,下面对本发明实施例中的具体流程进行描述,请参阅图1,本发明实施例查询数据库数据的方法一个实施例包括:101、通过查询接口获取访问目标数据源的目标操作指令,查询接口为客户端查询不同类型数据源的统一接口,目标操作指令为结构化查询语言sql描述的指令。服务器通过查询接口获取访问目标数据源的目标操作指令,查询接口为客户端查询不同类型数据源的统一接口,目标操作指令为结构化查询语言sql描述的指令。在大数据处理系统中,因为数据的类型繁多,数据量冗杂,因此将不同类型的数据储存在不同的数据库中,为客户端进行数据的查询以及调用提供了极大的便利,但客户端访问不同的数据库需要不同的查询接口。例如:druid利用rest接口进行数据查询,druid是一个高效的数据查询系统,主要解决的是对于大量的基于时序的数据进行聚合查询;hbase利用javaapi接口进行数据查询,hbase是一个开源的非关系型分布式数据库,实现的编程语言为java。因此,服务器获取对不同类型数据源的操作指令,便于数据的查询,这里并不对目标数据源的类型做限定,以便进行多种数据源中的数据查询。客户端访问数据库的统一查询接口为预置数据仓库工具hive的查询接口,因为不同类型数据库的访问接口并不相同,所以将查询接口进行统一。hive的查询接口主要有三个:命令行界面(command-lineinterface,cli)、客户端client和网络产品界面(websiteuserinterface,wui)。其中最常用的是cli,服务器在启动cli时候,会同时启动一个hive副本。client是hive的客户端,服务器在启动client模式的时候,客户端连接至hiveserver所在节点,并且在该节点启动hiveserver。wui是通过浏览器访问hive对数据进行访问。本发明实施例中,并不对hive的查询接口进行限定。需要说明的是,本发明实施例中的预置数据仓库工具是hive,hive是一种底层封装了hadoop的数据仓库处理工具,利用类sql的语言实现数据查询,其中所有hive的数据都存储在hadoop兼容的文件系统中。hive在加载数据过程中不会对数据进行任何的修改,只是将数据移动到分布式文件系(hadoopdistributedfilesystem,hdfs)中hive设定的目录下。hive中包含解释器、编译器、优化器,可以完成查询语句从词法分析、语法分析、编译以及优化。hive的特性支持解析其他不同数据库的查询指令,故在本发明中以hive为基础进行数据的查询。进一步说明的是,由于sql被广泛的应用在数据仓库中,因此服务器将sql语言作为目标操作指令。sql分为数据操作语言和数据定义语言两部分,sql是用于执行查询的语法,同时sql也包含用于更新、插入和删除记录的语法,足以满足查询程序的编译。以下是sql常用的编译语句:例如,利用sql创建数据库:hive>createdatabasefinancials;hive>createdatabaseifnotexistsfinancials;利用sql查询表里的数据:hive>select*fromstudent;102、根据目标操作指令,获取目标数据源的目标语法标识,目标语法标识用于指示目标数据源的指令语法。服务器根据目标操作指令,获取目标数据源的目标语法标识,目标语法标识用于指示目标数据源的指令语法。具体的,服务器读取目标操作指令的目标语言规则;服务器将目标语言规则转化为语法树;服务器生成目标语言规则的解析器;服务器基于语法树以及解析器,将目标操作指令进行解析,获取目标数据源的目标语法标识,目标语法标识用于指示目标数据源的指令语法。客户端在进行访问不同类型的数据库时,需要不同的访问语言,这里服务器将目标操作指令进行转化翻译,获取到目标数据源的目标语法标识,目标语法标识是用于指示目标数据源的指令语法,服务器可以利用转化后的目标操作指令进行相应数据库的访问。服务器在进行提取目标数据源的目标语法标识时,需要将目标操作指令进行解析,通过解析目标操作指令,服务器获取到目标数据源对应的目标语法标识。进一步说明的是,因为hive的查询语言为sql语言,所以这里服务器获取的是sql的语言规则。以访问hbase数据库为例:java是用于指示hbase数据库的指令语法,因此服务器根据sql语言描述访问hbase的目标操作指令,获得需要转化成java的目标语法标识。在这个过程中:服务器读取sql的目标语言规则;服务器将sql的目标语言规则转化为语法树;服务器生成sql的目标语言规则的解析器,服务器利用语法树以及解析器,解析目标操作指令;服务器从解析后的目标操作指令中,提取hbase的目标语法标识,这里的目标语法标识即为java的标识。103、根据预置数据仓库工具hive和目标语法标识,将目标操作指令转化成目标钩子handle。服务器根据预置数据仓库工具hive和目标语法标识,将目标操作指令转化成目标钩子handle。服务器利用预置的hive以及提取的目标语法标识,将访问目标数据源的目标操作指令转化成目标handle。具体的,服务器在预置数据仓库工具中读取目标语法标识的语法规则;服务器解析语法规则,得到抽象语法树;服务器将抽象语法树进行转换,得到查询块;服务器将查询块进行翻译,得到执行操作树;服务器利用执行操作树,将目标操作指令进行重新编译,得到目标handle。进一步说明的是,服务器提取到目标语法标识之后,为了进行数据查询,服务器需要将目标操作指令转化为目标数据源的查询指令,即将目标操作指令转化为目标handle。104、根据目标handle,查询对应的目标数据源中的目标数据。服务器根据目标handle,在目标handle对应的目标数据源中进行目标数据的查询。hive中所有的数据都存储在hdfs中,没有专门的数据存储格式,例如,支持text格式、sequencefile格式以及parquetfile格式。其中,hive包含以下数据模型:数据库(database,db)在hdfs中表现为${hive.metastore.warehouse.dir}目录下一个文件夹;内部表(table)在hdfs中表现所属db目录下一个文件夹;外部表(externaltable)与table类似,其数据存放位置可以在任意指定路径;分区(partition)在hdfs中表现为table目录下的子目录;桶(bucket)在hdfs中表现为同一个表目录下根据散列hash之后的多个文件。进一步理解的是,这里的数据源可以抽象成hive的externaltable,服务器利用目标handle对这张externaltable进行查询,即能够执行访问数据库的指令。105、反馈查询结果,查询结果用于指示是否查询到目标数据。服务器反馈查询结果,查询结果用于指示是否查询到目标数据。服务器根据是否查询到目标数据反馈查询结果,若查询到目标数据,则服务器反馈的查询结果为目标数据。本发明实施例,通过利用hive将各数据库匹配的查询指令转化成目标handle,通过结构化查询语言一种数据查询方式查询不同数据源的数据,避免中间表的产生,减少数据传输量以及传输时间,提高数据查询的效率。请参阅图2,本发明实施例查询数据库数据的方法另一个实施例包括:201、通过查询接口获取访问目标数据源的目标操作指令,查询接口为客户端查询不同类型数据源的统一接口,目标操作指令为结构化查询语言sql描述的指令。服务器通过查询接口获取访问目标数据源的目标操作指令,查询接口为客户端查询不同类型数据源的统一接口,目标操作指令为结构化查询语言sql描述的指令。在大数据处理系统中,因为数据的类型繁多,数据量冗杂,因此将不同类型的数据储存在不同的数据库中,为客户端进行数据的查询以及调用提供了极大的便利,但客户端访问不同的数据库需要不同的查询接口。例如:druid利用rest接口进行数据查询,druid是一个高效的数据查询系统,主要解决的是对于大量的基于时序的数据进行聚合查询;hbase利用javaapi接口进行数据查询,hbase是一个开源的非关系型分布式数据库,实现的编程语言为java。因此,服务器获取对不同类型数据源的操作指令,便于数据的查询,这里并不对目标数据源的类型做限定,以便进行多种数据源中的数据查询。客户端访问数据库的统一查询接口为预置数据仓库工具hive的查询接口,因为不同类型数据库的访问接口并不相同,所以将查询接口进行统一。hive的查询接口主要有三个:命令行界面(command-lineinterface,cli)、客户端client和网络产品界面(websiteuserinterface,wui)。其中最常用的是cli,服务器在启动cli时候,会同时启动一个hive副本。client是hive的客户端,服务器在启动client模式的时候,客户端连接至hiveserver所在节点,并且在该节点启动hiveserver。wui是通过浏览器访问hive对数据进行访问。本发明实施例中,并不对hive的查询接口进行限定。需要说明的是,本发明实施例中的预置数据仓库工具是hive,hive是一种底层封装了hadoop的数据仓库处理工具,利用类sql的语言实现数据查询,其中所有hive的数据都存储在hadoop兼容的文件系统中。hive在加载数据过程中不会对数据进行任何的修改,只是将数据移动到分布式文件系(hadoopdistributedfilesystem,hdfs)中hive设定的目录下。hive中包含解释器、编译器、优化器,可以完成查询语句从词法分析、语法分析、编译以及优化。hive的特性支持解析其他不同数据库的查询指令,故在本发明中以hive为基础进行数据的查询。进一步说明的是,由于sql被广泛的应用在数据仓库中,因此服务器将sql语言作为目标操作指令。sql分为数据操作语言和数据定义语言两部分,sql是用于执行查询的语法,同时sql也包含用于更新、插入和删除记录的语法,足以满足查询程序的编译。以下是sql常用的编译语句:例如,利用sql创建数据库:hive>createdatabasefinancials;hive>createdatabaseifnotexistsfinancials;利用sql查询表里的数据:hive>select*fromstudent;202、根据目标操作指令,获取目标数据源的目标语法标识,目标语法标识用于指示目标数据源的指令语法。服务器根据目标操作指令,获取目标数据源的目标语法标识,目标语法标识用于指示目标数据源的指令语法。具体的,服务器读取目标操作指令的目标语言规则;服务器将目标语言规则转化为语法树;服务器生成目标语言规则的解析器;服务器基于语法树以及解析器,将目标操作指令进行解析,获取目标数据源的目标语法标识,目标语法标识用于指示目标数据源的指令语法。客户端在进行访问不同类型的数据库时,需要不同的访问语言,这里服务器将目标操作指令进行转化翻译,获取到目标数据源的目标语法标识,目标语法标识是用于指示目标数据源的指令语法,服务器可以利用转化后的目标操作指令进行相应数据库的访问。服务器在进行提取目标数据源的目标语法标识时,需要将目标操作指令进行解析,通过解析目标操作指令,服务器获取到目标数据源对应的目标语法标识。进一步说明的是,因为hive的查询语言为sql语言,所以这里服务器获取的是sql的语言规则。以访问hbase数据库为例:java是用于指示hbase数据库的指令语法,因此服务器根据sql语言描述访问hbase的目标操作指令,获得需要转化成java的目标语法标识。在这个过程中:服务器读取sql的目标语言规则;服务器将sql的目标语言规则转化为语法树;服务器生成sql的目标语言规则的解析器,服务器利用语法树以及解析器,解析目标操作指令;服务器从解析后的目标操作指令中,提取hbase的目标语法标识,这里的目标语法标识即为java。203、在预置数据仓库工具中读取目标语法标识的语法规则。服务器在预置数据仓库工具中读取目标语法标识的语法规则。服务器获取到目标数据源的目标语法标识后,在预置数据仓库工具中读取该目标语法标识的语法规则。语言规则分为词法规则和语法规则,词法规则定义了将代码字符串序列转换成标记序列的方式;语法规则定义将标记序列转换成语法树的方式。一般情况下,词法规则的规则名以大写字母命名,而语法规则的规则名以小写字母开始。例如,以访问hbase数据库为例:服务器待获取到hbase的目标语法标识java后,在hive中读取java的语法规则。204、解析语法规则,得到抽象语法树。服务器解析语法规则,得到抽象语法树。服务器经过词法和语法解析后,如果需要对表达式做进一步的处理,服务器利用抽象语法树语法,在语法分析的同时将输入语句转换成语法树,后续再遍历语法树时完成进一步的处理。205、将抽象语法树进行转换,得到查询块。服务器将抽象语法树进行转换,得到查询块。服务器遍历抽象语法树,将抽象语法树转化为查询块。查询块是一条指令中最基本的组成单元,即为一个子查询,其包括三个部分:输入源、计算过程以及输出。服务器在转化的过程中生成目标语言规则的解析器,解析器提供两种机制来遍历生成的语法树:listener和visitor,当服务器利用listener模式遍历语法树时,服务器内部在遍历语法树的节点过程中,会遇到不同的节点,因此服务器会调用提供listener的不同方法;而服务器利用visitor模式时,服务器需要手动指定访问特定类型的节点。服务器采用这两种机制遍历抽象语法树。206、将查询块进行翻译,得到执行操作树。服务器将查询块进行翻译,得到执行操作树。服务器遍历查询块,将子查询进行递归调用,得到执行操作树。服务器通过转化的语法树以及生成的解析器,将查询块翻译成利用目标语法标识的语法规则编译的指令,在此过程中,服务器利用listener或visitor访问抽象语法树。207、利用执行操作树,将目标操作指令进行重新编译,得到目标handle。服务器利用执行操作树,将目标操作指令进行重新编译,得到目标handle。服务器遍历执行操作树,将目标操作指令重新编译,编译好的指令即为目标handle,目标handle即为访问目标数据源的指令。例如,以服务器访问hbase中数据为例,服务器利用sql描述对hbase数据库执行访问的操作,在hive中,服务器读取访问hbase的java的语法规则;服务器利用解释器解析语法规则,并将语法规则转化为抽象语法树;服务器利用逻辑计划生成器(包括优化器)将抽象语法树转换为查询块;服务器将查询块进行翻译,得到执行操作树;服务器利用执行操作树,将目标操作指令重新编译,得到java编译的访问hbase的指令,java编译的指令即为目标handle。208、根据目标handle,查询对应的目标数据源中的目标数据。服务器根据目标handle,在目标handle对应的目标数据源中进行目标数据的查询。hive中所有的数据都存储在hdfs中,没有专门的数据存储格式,例如,支持text格式、sequencefile格式以及parquetfile格式。其中,hive包含以下数据模型:数据库(database,db)在hdfs中表现为${hive.metastore.warehouse.dir}目录下一个文件夹;内部表(table)在hdfs中表现所属db目录下一个文件夹;外部表(externaltable)与table类似,其数据存放位置可以在任意指定路径;分区(partition)在hdfs中表现为table目录下的子目录;桶(bucket)在hdfs中表现为同一个表目录下根据散列hash之后的多个文件。进一步理解的是,这里的数据源可以抽象成hive的externaltable,服务器利用目标handle对这张externaltable进行查询,即能够执行访问数据库的指令。209、获取目标handle的执行日志,并在执行日志中生成告警信息。服务器获取目标handle的执行日志,并在执行日志中生成告警信息。具体的,服务器获取目标handle的执行日志,并提取目标关键词,目标关键词为目标handle执行过程中的敏感词,在执行日志中设置有预置日志敏感表;服务器判断目标关键词是否与预置日志敏感表相匹配;若目标关键词与预置日志敏感表相匹配,则服务器在执行日志中生成告警信息。可以理解的是,服务器提取目标关键词,这里的目标关键词为handle执行查询过程中生成的敏感词,这里的目标关键词是在服务器执行查询任务中生成的。当服务器正常的执行查询任务且并未出现错误时,目标关键词与预置日志敏感表不匹配,则未在执行日志中生成告警信息。待判断目标关键词与预置日志敏感表是否相匹配后,可以得知执行日志中是否生成告警信息,若执行日志中生成告警信息,说明在查询任务执行的过程中存在错误。服务器设置的预置日志敏感表为handle执行查询过程中出现的异常信息,异常信息导致服务器不能继续执行查询任务。预置日志敏感表的设置,使得服务器及时的发现执行中的错误或不合规的操作,并及时反馈告警信息,保证服务器数据传输的准确与安全。210、反馈查询结果,查询结果用于指示是否查询到目标数据。服务器反馈查询结果,查询结果用于指示是否查询到目标数据。服务器判断是否查询到了目标数据,若未查询到目标数据且生成了告警信息,则服务器通过查询接口反馈告警信息,告警信息用于指示未查询到目标数据;若查询到目标数据,则服务器通过查询接口反馈目标数据。服务器若执行日志中生成告警信息,则直接通过查询接口反馈告警信息;若执行日志中未生成告警信息,说明在查询任务执行的过程中并没有出现错误,服务器直接通过查询接口反馈查询的目标数据。这样的操作使得服务器在方便监控、查询以及审计执行日志的情况下,进一步保障了良好的运行环境。在执行查询任务的过程中,服务器还可以添加审计日志,审计日志为查询数据过程中的注释。需要说明的是,服务器可以添加审计日志,审计日志是在服务器执行查询任务过程中的注释。服务器在执行查询任务的过程中进行审计日志的添加,方便用户对执行过程中信息的审查。本发明实施例,通过利用hive将各数据库匹配的查询指令转化成目标handle,通过结构化查询语言一种数据查询方式查询不同数据源的数据,避免中间表的产生,减少数据传输量以及传输时间,提高数据查询的效率。上面对本发明实施例中查询数据库数据的方法进行了描述,下面对本发明实施例中查询数据库数据的装置进行描述,请参阅图3,本发明实施例中的查询数据库数据的装置包括:请参阅图3,本发明实施例中查询数据库数据的装置的一个实施例,包括:第一获取模块301,用于通过查询接口获取访问目标数据源的目标操作指令,所述查询接口为客户端查询不同类型数据源的统一接口,所述目标操作指令为结构化查询语言sql描述的指令;第二获取模块302,用于根据所述目标操作指令,获取所述目标数据源的目标语法标识,所述目标语法标识用于指示所述目标数据源的指令语法;转化模块303,用于根据预置数据仓库工具hive和所述目标语法标识,将所述目标操作指令转化成目标钩子handle;查询模块304,用于根据所述目标handle,查询对应的所述目标数据源中的目标数据;反馈模块305,用于反馈查询结果,所述查询结果用于指示是否查询到所述目标数据。本发明实施例中,第一获取模块301通过查询接口获取访问目标数据源的目标操作指令,所述查询接口为客户端查询不同类型数据源的统一接口,所述目标操作指令为结构化查询语言sql描述的指令;第二获取模块302根据所述目标操作指令,获取所述目标数据源的目标语法标识,所述目标语法标识用于指示所述目标数据源的指令语法;转化模块303根据预置数据仓库工具hive和所述目标语法标识,将所述目标操作指令转化成目标钩子handle;查询模块304根据所述目标handle,查询对应的所述目标数据源中的目标数据;反馈模块305反馈查询结果,所述查询结果用于指示是否查询到所述目标数据。本发明实施例,通过利用hive将各数据库匹配的查询指令转化成目标handle,通过结构化查询语言一种数据查询方式查询不同数据源的数据,避免中间表的产生,减少数据传输量以及传输时间,提高数据查询的效率。请参阅图4,本发明实施例中查询数据库数据的装置的另一个实施例,包括:第一获取模块301,用于通过查询接口获取访问目标数据源的目标操作指令,所述查询接口为客户端查询不同类型数据源的统一接口,所述目标操作指令为结构化查询语言sql描述的指令;第二获取模块302,用于根据所述目标操作指令,获取所述目标数据源的目标语法标识,所述目标语法标识用于指示所述目标数据源的指令语法;转化模块303,用于根据预置数据仓库工具hive和所述目标语法标识,将所述目标操作指令转化成目标钩子handle;查询模块304,用于根据所述目标handle,查询对应的所述目标数据源中的目标数据;反馈模块305,用于反馈查询结果,所述查询结果用于指示是否查询到所述目标数据。可选的,第二获取模块302具体用于:读取所述目标操作指令的目标语言规则;将所述目标语言规则转化为语法树;生成所述目标语言规则的解析器;基于所述语法树以及所述解析器,将所述目标操作指令进行解析,获取所述目标数据源的所述目标语法标识,所述目标语法标识用于指示所述目标数据源的指令语法。可选的,转化模块303具体用于:在所述预置数据仓库工具中读取所述目标语法标识的语法规则;解析所述语法规则,得到抽象语法树;将所述抽象语法树进行转换,得到查询块;将所述查询块进行翻译,得到执行操作树;利用所述执行操作树,将所述目标操作指令进行重新编译,得到所述目标handle。可选的,查询数据库数据的装置还包括:生成模块306,用于获取所述目标handle的执行日志,并在所述执行日志中生成告警信息。可选的,生成模块306具体用于:获取所述目标handle的执行日志,并提取目标关键词,所述目标关键词为所述目标handle执行过程中的敏感词,所述执行日志中设置有预置日志敏感表;判断所述目标关键词是否与所述预置日志敏感表相匹配;若所述目标关键词与所述预置日志敏感表相匹配,则在所述执行日志中生成告警信息。可选的,反馈模块305具体用于:若未查询到所述目标数据且生成了所述告警信息,则通过所述查询接口反馈所述告警信息,所述告警信息用于指示未查询到所述目标数据;若查询到所述目标数据,则通过所述查询接口反馈所述目标数据。可选的,查询数据库数据的装置还包括:添加模块307,用于添加审计日志,所述审计日志为查询数据过程中的注释。本发明实施例中,第一获取模块301通过查询接口获取访问目标数据源的目标操作指令,所述查询接口为客户端查询不同类型数据源的统一接口,所述目标操作指令为结构化查询语言sql描述的指令;第二获取模块302根据所述目标操作指令,获取所述目标数据源的目标语法标识,所述目标语法标识用于指示所述目标数据源的指令语法;转化模块303根据预置数据仓库工具hive和所述目标语法标识,将所述目标操作指令转化成目标钩子handle;查询模块304根据所述目标handle,查询对应的所述目标数据源中的目标数据;生成模块306,用于获取所述目标handle的执行日志,并在所述执行日志中生成告警信息;反馈模块305反馈查询结果,所述查询结果用于指示是否查询到所述目标数据;添加模块307,用于添加审计日志,所述审计日志为查询数据过程中的注释。本发明实施例,通过利用hive将各数据库匹配的查询指令转化成目标handle,通过结构化查询语言一种数据查询方式查询不同数据源的数据,避免中间表的产生,减少数据传输量以及传输时间,提高数据查询的效率。上面图3至图4从模块化功能实体的角度对本发明实施例中的查询数据库数据装置进行详细描述,下面从硬件处理的角度对本发明实施例中查询数据库数据设备进行详细描述。图5是本发明实施例提供的一种查询数据库数据设备的结构示意图,该查询数据库数据的设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)501(例如,一个或一个以上处理器)和存储器509,一个或一个以上存储应用程序507或数据506的存储介质508(例如一个或一个以上海量存储设备)。其中,存储器509和存储介质508可以是短暂存储或持久存储。存储在存储介质508的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对查询数据库数据设备中的一系列指令操作。更进一步地,处理器501可以设置为与存储介质508通信,在查询数据库数据的设备500上执行存储介质508中的一系列指令操作。查询数据库数据的设备500还可以包括一个或一个以上电源502,一个或一个以上有线或无线网络接口503,一个或一个以上输入输出接口504,和/或,一个或一个以上操作系统505,例如windowsserve,macosx,unix,linux,freebsd等等。本领域技术人员可以理解,图5中示出的查询数据库数据的设备结构并不构成对查询数据库数据的设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。下面结合图5对查询数据库数据的设备的各个构成部件进行具体的介绍:处理器501是查询数据库数据的设备的控制中心,可以按照查询数据库数据的方法进行处理。处理器501利用各种接口和线路连接整个查询数据库数据的设备的各个部分,通过运行或执行存储在存储器509,解决在查询数据库数据时,查询方式不同的问题,提高了数据查询效率。存储介质508和存储器509都是存储数据的载体,本发明实施例中,存储介质508可以是指储存容量较小,但速度快的内存储器,而存储器509可以是储存容量大,但储存速度慢的外存储器。存储器509可用于存储软件程序以及模块,处理器501通过运行存储在存储器509的软件程序以及模块,从而执行查询数据库数据的设备500的各种功能应用以及数据处理。存储器509可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据查询数据库数据设备的使用所创建的数据等。此外,存储器509可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。在本发明实施例中提供的查询数据库数据的程序和接收到的数据流存储在存储器中,当需要使用时,处理器501从存储器509中调用。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、双绞线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,光盘)、或者半导体介质(例如固态硬盘(solidstatedisk,ssd))等。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。以上,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1