一种与数据库类型无关的数据查询方法、装置及存储介质与流程

文档序号:18258105发布日期:2019-07-24 10:27阅读:191来源:国知局
本发明涉及数据库处理
技术领域
:,特别是一种与数据库类型无关的数据查询方法、装置及存储介质。
背景技术
::随着数据库技术的蓬勃发展,现有数据库类型种类繁多。在企业内部随着业务发展阶段的不同,同批数据在不同阶段会采用不同数据库存储检索,或同类型数据在不同地域或者不同部门间采用不同数据库存储检索。同样的数据,在不同的数据库系统中,需要使用相应数据库的查询语言修改业务中所有相关的查询语句。目前企业可能使用类似于Hibernate的ORM框架,来减少关系型数据库系统变动的成本。Hibernate的OGM框架支持的NoSql的类型还较少。Hibernate的方案现阶段对NoSql支持性差,HibernateOGM支持的NoSql类型少,无法使用于生产环境而且无法对外提供接口以及进行权限管理。因此,现有技术中数据库的统一查询是一个难点,且在配置多个数据库的相关信息时工作量极大,后期修改难度大,不便于使用,更不能提供统一的权限管理。技术实现要素:本发明针对上述现有技术中的缺陷,提出了如下技术方案。一种与数据库类型无关的数据查询方法,该方法包括:接收步骤,接收输入的查询请求,所述查询请求至少包括数据资源目录标识resourceId;解析步骤,根据所述数据资源目录标识resourceId对配置信息进行解析得到数据库表标识tableId和数据库类型dbType;分发步骤,根据数据库类型dbType将所述查询请求分发到相应的数据库查询服务;生成步骤,所述查询服务根据所述查询请求中的查询参数params封装生成dbType对应的数据库的查询语句;返回步骤,使用所述查询语句在dbType对应的数据库中进行查询并返回查询结果。更进一步地,所述查询请求中还包括权限参数,在接收到所述查询请求后,对所述权限参数进行判断,当用户具有查询权限时继续进行操作,当用户不具有查询权限时,中断查询操作并向用户发送提示消息。更进一步地,所述配置信息包括数据资源目录与数据库表的对应关系和数据库与数据库表的对应关系。更进一步地,所述数据资源目录与数据库表的对应关系包括数据资源目录信息和数据库表信息,所述数据库与数据库表的对应关系中包括数据库信息和数据库表信息,数据资源目录信息包括数据资源目录标识resourceId、数据资源代码resourceCode和数据资源来源dataSource;所述数据库信息包括数据库链接信息、数据库类型dbType和数据库标识bigdataResourceId;所述数据库表信息包括表名tableName、数据库标识bigdataResourceId、表附属信息tableJson和数据库表标识tableId,通过数据库标识bigdataResourceId建立数据库与数据库表的对应关系,通过数据资源目录标识resourceId与数据库表标识tableId建立数据资源目录与数据库表的对应关系。更进一步地,所述数据资源目录包括多个数据资源目录数据项,所述数据资源目录数据项包括数据项标准编码itemCode、数据项标准名称itemName、数据表实际存储字段名storeCloumn和所属数据资源目录标识resourceId,通过所述数据资源目录标识resourceId建立数据资源目录与多个数据资源目录数据项的关联关系。更进一步地,在生成dbType对应的数据库的查询语句时先通过数据资源目录标识resourceId和数据项标准编码itemCode确定数据表实际存储字段名storeCloumn,然后基于所述数据库表标识tableId、数据表实际存储字段名storeCloumn以及所述查询参数params生成dbType对应的数据库的查询语句。本发明还提出了一种与数据库类型无关的数据查询装置,该装置包括:接收单元,用于接收输入的查询请求,所述查询请求至少包括数据资源目录标识resourceId;解析单元,用于根据所述数据资源目录标识resourceId对配置信息进行解析得到数据库表标识tableId和数据库类型dbType;分发单元,用于根据数据库类型dbType将所述查询请求分发到相应的数据库查询服务;生成单元,用于所述查询服务根据所述查询请求中的查询参数params封装生成dbType对应的数据库的查询语句;返回单元,用于使用所述查询语句在dbType对应的数据库中进行查询并返回查询结果。更进一步地,所述查询请求中还包括权限参数,在接收到所述查询请求后,对所述权限参数进行判断,当用户具有查询权限时继续进行操作,当用户不具有查询权限时,中断查询操作并向用户发送提示消息。更进一步地,所述配置信息包括数据资源目录与数据库表的对应关系和数据库与数据库表的对应关系。更进一步地,所述数据资源目录与数据库表的对应关系包括数据资源目录信息和数据库表信息,所述数据库与数据库表的对应关系中包括数据库信息和数据库表信息,数据资源目录信息包括数据资源目录标识resourceId、数据资源代码resourceCode和数据资源来源dataSource;所述数据库信息包括数据库链接信息、数据库类型dbType和数据库标识bigdataResourceId;所述数据库表信息包括表名tableName、数据库标识bigdataResourceId、表附属信息tableJson和数据库表标识tableId,通过数据库标识bigdataResourceId建立数据库与数据库表的对应关系,通过数据资源目录标识resourceId与数据库表标识tableId建立数据资源目录与数据库表的对应关系。更进一步地,所述数据资源目录包括多个数据资源目录数据项,所述数据资源目录数据项包括数据项标准编码itemCode、数据项标准名称itemName、数据表实际存储字段名storeCloumn和所属数据资源目录标识resourceId,通过所述数据资源目录标识resourceId建立数据资源目录与多个数据资源目录数据项的关联关系。更进一步地,在生成dbType对应的数据库的查询语句时先通过数据资源目录标识resourceId和数据项标准编码itemCode确定数据表实际存储字段名storeCloumn,然后基于所述数据库表标识tableId、数据表实际存储字段名storeCloumn以及所述查询参数params生成dbType对应的数据库的查询语句。本发明还提出了一种计算机可读存储介质,所述存储介质上存储有计算机程序代码,当所述计算机程序代码被计算机执行时执行上述之任一的方法。本发明的技术效果为:本发明通过定义了数据资源目录、数据资源目录数据项、数据库、数据表之间的关系,从而提供多种数据库的统一查询接口,通过该统一查询接口接收查询请求,并将其基于配置信息进行解析后分发到相应的数据库查询服务,查询服务根据查询请求中的查询参数等对应的数据库的查询语句在对应的数据库中进行查询并返回查询结果。从而可以屏蔽不同数据库实现之间的差异,检索数据。使得数据库系统的切换无需修改代码,即通过配置信息的修改可实现随意切换底层数据库系统,使用功能更强的数据库系统,并在查询请求中加入了权限控制,提高了数据库查询的安全性,提高了用户体验。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显。图1是根据本发明的实施例的一种与数据库类型无关的数据查询方法的流程图。图2是根据本发明的实施例的一种与数据库类型无关的数据查询装置的结构图。具体实施方式下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。图1示出了本发明的一种与数据库类型无关的数据查询方法,该方法包括:接收步骤S101,接收输入的查询请求,所述查询请求至少包括数据资源目录标识resourceId。解析步骤S102,根据所述数据资源目录标识resourceId对配置信息进行解析得到数据库表标识tableId和数据库类型dbType。分发步骤S103,根据数据库类型dbType将所述查询请求分发到相应的数据库查询服务。生成步骤S104,所述查询服务根据所述查询请求中的查询参数params封装生成dbType对应的数据库的查询语句。返回步骤S105,使用所述查询语句在dbType对应的数据库中进行查询并返回查询结果。在一个实施例中,接收步骤S101接收查询请求,查询请求至少一个查询参数,查询请求中的参数如表1所示。表1如一个查询请求的格式为(resourceId,M,)表示在资源目标标识为resourceId的数据资源目录中查询,权限为M,表示全部权限,查询参数字段为空表示返回前10条记录。查询请求中的params来自表2。表2表2中的各参数可用于定制各种查询条件,方便用户的操作。表2中的where的可选参数如表3所示,可用于定制更为复杂的查询条件。表3表2中的order的可选参数如表4所示,用于定义排序方式,也用于定制更为复杂的查询条件。表4表2中的page的可选参数如表5所示,用于定义显示模式,也用于定制更为复杂的查询条件。表5在一个实施例中,通过表1-5中的参数可以定义多种查询请求,满足用户的需求,所述查询请求中还包括权限参数,在接收到所述查询请求后,对所述权限参数进行判断,当用户具有查询权限时继续进行操作,当用户不具有查询权限时,中断查询操作并向用户发送提示消息,提示消息可以是警告或文字提示,提示用户没有数据库的查询权限。在解析步骤S102中所使用的配置信息包括数据资源目录与数据库表的对应关系和数据库与数据库表的对应关系。所述数据资源目录与数据库表的对应关系包括数据资源目录信息和数据库表信息,所述数据库与数据库表的对应关系中包括数据库信息和数据库表信息,数据资源目录信息包括数据资源目录标识resourceId、数据资源代码resourceCode和数据资源来源dataSource;所述数据库信息包括数据库链接信息、数据库类型dbType和数据库标识bigdataResourceId;所述数据库表信息包括表名tableName、数据库标识bigdataResourceId、表附属信息tableJson和数据库表标识tableId,通过数据库标识bigdataResourceId建立数据库与数据库表的对应关系,通过数据资源目录标识resourceId与数据库表标识tableId建立数据资源目录与数据库表的对应关系。在一个实施例中,定义数据库信息,主要包括:数据库链接信息(connSetting,地址、端口、数据库、模式、用户名、密码、数据库连接池大小等),数据库所属类别(dbType,例如:01:mongo,02:mysql,03:solr等等),生成数据库配置唯一编码(bigdataResourceId)。定义数据库表信息,主要包括:表名(tableName),数据库编码(步骤1中的bigdataResourceId),表附属信息(tableJson,可配置分表信息),生成数据库表配置唯一编码(tableId),这样数据库表就能和数据库关联起来。在一个实施例中,所述数据资源目录包括多个数据资源目录数据项,所述数据资源目录数据项包括数据项标准编码itemCode、数据项标准名称itemName、数据表实际存储字段名storeCloumn和所属数据资源目录标识resourceId,通过所述数据资源目录标识resourceId建立数据资源目录与多个数据资源目录数据项的关联关系。例如,定义数据资源目录数据项信息,主要包括:数据项标准编码(itemCode),数据项标准名称(itemName),数据表实际存储字段名(storeCloumn),所属数据资源目录编码(resourceId)。例如:身份证对外统一暴露标准编码itemCode为A000001,标准名称itemName为idCard,而实际数据库存储时A表实际字段可能为idCard,B表实际字段为id_card,这样通过配置即可对外提供统一编码,屏蔽不同数据库表字段名的差异。通过上述关系,就构建了数据资源目录、数据资源目录数据项、数据库、数据表之间的关系,这样就可以进行使用统一的数据接口进行多种数据库的查询操作,这是本申请的重要发明点之一。在一个实施例中,生成步骤S104在生成dbType对应的数据库的查询语句时先通过数据资源目录标识resourceId和数据项标准编码itemCode确定数据表实际存储字段名storeCloumn,然后基于所述数据库表标识tableId、数据表实际存储字段名storeCloumn以及所述查询参数params生成dbType对应的数据库的查询语句。在一个实施例中,返回步骤S105,使用所述查询语句在dbType对应的数据库中进行查询并返回查询结果。查询结果返回的参数及含义如表6所示。表6表6中的result参数选自表7中的参数。表7表6中的data参数选自表8中的参数。表8本方法通过定义了数据资源目录、数据资源目录数据项、数据库、数据表之间的关系,从而提供多种数据库的统一查询接口(例如,可以封装为Rest接口),通过该统一查询接口接收查询请求,并将其基于配置信息进行解析后分发到相应的数据库查询服务,查询服务根据查询请求中的查询参数等对应的数据库的查询语句在对应的数据库中进行查询并返回查询结果。从而可以屏蔽不同数据库实现之间的差异,检索数据。使得数据库系统的切换无需修改代码,即通过配置信息的修改可实现随意切换底层数据库系统,使用功能更强的数据库系统,并在查询请求中加入了权限控制,提高了数据库查询的安全性,提高了用户体验。本发明的方法可以用于云平台、大型数据库系统、企业数据库系统、分布式数据库系统等等,提供跨数据库系统的数据查询服务。进一步参考图2,作为对上述图1所示方法的实现,本申请提供了一种与数据库类型无关的数据查询装置的一个实施例,该装置实施例与图1所示的方法实施例相对应,该装置具体可以包含于各种电子设备中。图2示出了本发明的一种与数据库类型无关的数据查询装置,该装置包括:接收单元201,用于接收输入的查询请求,所述查询请求至少包括数据资源目录标识resourceId。解析单元202,用于根据所述数据资源目录标识resourceId对配置信息进行解析得到数据库表标识tableId和数据库类型dbType。分发单元203,用于根据数据库类型dbType将所述查询请求分发到相应的数据库查询服务。生成单元204,用于所述查询服务根据所述查询请求中的查询参数params封装生成dbType对应的数据库的查询语句。返回单元205,用于使用所述查询语句在dbType对应的数据库中进行查询并返回查询结果。在一个实施例中,接收单元201用于接收查询请求,查询请求至少一个查询参数,查询请求中的参数如上述表1所示。如一个查询请求的格式为(resourceId,M,)表示在资源目标标识为resourceId的数据资源目录中查询,权限为M,表示全部权限,查询参数字段为空表示返回前10条记录。查询请求中的params来自上述表2。上述表2中的各参数可用于定制各种查询条件,方便用户的操作。上述表2中的where的可选参数如上述表3所示,可用于定制更为复杂的查询条件。上述表2中的order的可选参数如上述表4所示,用于定义排序方式,也用于定制更为复杂的查询条件。上述上述表2中的page的可选参数如上述表5所示,用于定义显示模式,也用于定制更为复杂的查询条件。在一个实施例中,通过上述表1-5中的参数可以定义多种查询请求,满足用户的需求,所述查询请求中还包括权限参数,在接收到所述查询请求后,对所述权限参数进行判断,当用户具有查询权限时继续进行操作,当用户不具有查询权限时,中断查询操作并向用户发送提示消息,提示消息可以是警告或文字提示,提示用户没有数据库的查询权限。在解析单元202中所使用的配置信息包括数据资源目录与数据库表的对应关系和数据库与数据库表的对应关系。所述数据资源目录与数据库表的对应关系包括数据资源目录信息和数据库表信息,所述数据库与数据库表的对应关系中包括数据库信息和数据库表信息,数据资源目录信息包括数据资源目录标识resourceId、数据资源代码resourceCode和数据资源来源dataSource;所述数据库信息包括数据库链接信息、数据库类型dbType和数据库标识bigdataResourceId;所述数据库表信息包括表名tableName、数据库标识bigdataResourceId、表附属信息tableJson和数据库表标识tableId,通过数据库标识bigdataResourceId建立数据库与数据库表的对应关系,通过数据资源目录标识resourceId与数据库表标识tableId建立数据资源目录与数据库表的对应关系。在一个实施例中,定义数据库信息,主要包括:数据库链接信息(connSetting,地址、端口、数据库、模式、用户名、密码、数据库连接池大小等),数据库所属类别(dbType,例如:01:mongo,02:mysql,03:solr等等),生成数据库配置唯一编码(bigdataResourceId)。定义数据库表信息,主要包括:表名(tableName),数据库编码(步骤1中的bigdataResourceId),表附属信息(tableJson,可配置分表信息),生成数据库表配置唯一编码(tableId),这样数据库表就能和数据库关联起来。在一个实施例中,所述数据资源目录包括多个数据资源目录数据项,所述数据资源目录数据项包括数据项标准编码itemCode、数据项标准名称itemName、数据表实际存储字段名storeCloumn和所属数据资源目录标识resourceId,通过所述数据资源目录标识resourceId建立数据资源目录与多个数据资源目录数据项的关联关系。例如,定义数据资源目录数据项信息,主要包括:数据项标准编码(itemCode),数据项标准名称(itemName),数据表实际存储字段名(storeCloumn),所属数据资源目录编码(resourceId)。例如:身份证对外统一暴露标准编码itemCode为A000001,标准名称itemName为idCard,而实际数据库存储时A表实际字段可能为idCard,B表实际字段为id_card,这样通过配置即可对外提供统一编码,屏蔽不同数据库表字段名的差异。通过上述关系,就构建了数据资源目录、数据资源目录数据项、数据库、数据表之间的关系,这样就可以进行使用统一的数据接口进行多种数据库的查询操作,这是本申请的重要发明点之一。在一个实施例中,生成单元204在生成dbType对应的数据库的查询语句时先通过数据资源目录标识resourceId和数据项标准编码itemCode确定数据表实际存储字段名storeCloumn,然后基于所述数据库表标识tableId、数据表实际存储字段名storeCloumn以及所述查询参数params生成dbType对应的数据库的查询语句。在一个实施例中,返回单元205,使用所述查询语句在dbType对应的数据库中进行查询并返回查询结果。查询结果返回的参数及含义如上述表6所示。上述表6中的result参数选自上述表7中的参数。上述上述表6中的data参数选自上述表8中的参数。本装置通过定义了数据资源目录、数据资源目录数据项、数据库、数据表之间的关系,从而提供多种数据库的统一查询接口(例如,可以封装为Rest接口),通过该统一查询接口接收查询请求,并将其基于配置信息进行解析后分发到相应的数据库查询服务,查询服务根据查询请求中的查询参数等对应的数据库的查询语句在对应的数据库中进行查询并返回查询结果。从而可以屏蔽不同数据库实现之间的差异,检索数据。使得数据库系统的切换无需修改代码,即通过配置信息的修改可实现随意切换底层数据库系统,使用功能更强的数据库系统,并在查询请求中加入了权限控制,提高了数据库查询的安全性,提高了用户体验。本发明的装置可以用于云平台、大型数据库系统、企业数据库系统、分布式数据库系统等等,提供跨数据库系统的数据查询服务。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。最后所应说明的是:以上实施例仅以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1