CN115729951A - 数据查询方法、系统、设备及计算机可读存储介质 - Google Patents
数据查询方法、系统、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN115729951A CN115729951A CN202211503327.1A CN202211503327A CN115729951A CN 115729951 A CN115729951 A CN 115729951A CN 202211503327 A CN202211503327 A CN 202211503327A CN 115729951 A CN115729951 A CN 115729951A
- Authority
- CN
- China
- Prior art keywords
- database
- key information
- partition
- query
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000005192 partition Methods 0.000 claims abstract description 184
- 230000004044 response Effects 0.000 claims abstract description 11
- 239000002131 composite material Substances 0.000 claims description 56
- 230000015654 memory Effects 0.000 claims description 21
- 238000013507 mapping Methods 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 11
- 238000005520 cutting process Methods 0.000 abstract description 6
- 238000005516 engineering process Methods 0.000 abstract description 4
- 230000008520 organization Effects 0.000 description 16
- 150000001875 compounds Chemical class 0.000 description 14
- 238000010586 diagram Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013329 compounding Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及数据库技术领域,具体涉及一种数据查询方法、系统、设备及计算机可读存储介质。该方法包括:服务端应用响应于客户端发来的数据查询请求,确定数据查询请求对应请求的第一实体,其中第一实体用于存储第一数据库表的第一相关信息,至少包括第一数据库表的第一主键信息与分区键信息;服务端应用生成包括第一主键信息和分区键信息的第一查询语句;数据库在第一数据库表中对应于第一查询语句中的分区键信息的目标分区下查询包含该主键信息的第一目标数据。本申请能够有效利用数据库的分区剪裁能力,自动生成带有分区键信息的数据查询语句进行分区查询,有利于提高数据查询效率以及服务端对客户端请求的响应速率,有利于提高用户体验。
Description
技术领域
本发明涉及数据库技术领域,具体涉及一种数据查询方法、系统、设备及计算机可读存储介质。
背景技术
针对具有海量数据记录的数据库表,Oracle提供了表分区(Table Partition)技术。该技术可以使数据库支持更大的数据量,并能提升系统性能。在表分区技术中有一个很重要的功能性概念叫分区剪裁,即在结构化查询语言(Structured Query Language,SQL)的Where条件中包括分区键字段的情况下,基于Oracle管理的数据库(简称Oracle数据库)可以仅在相应数据库表中该分区键字段对应的分区下进行数据查询。如此,可以极大的提升数据库的查询/检索性能。因此,在开发业务服务系统时,开发人员为系统的数据查询服务编写的数据查询语句,例如采用上述SQL编写的SQL语句,通常都会遵循上述分区剪裁功能对应的编程规范,在相应语句中加入分区键字段。
然而,当数据库采用Java持久层API(Java Persistence API,JPA)框架或者对象关系映射框架(Hibernate)等框架时,所有的语句都是由工具程序自动生成的,CRUD操作对应的SQL语句都是使用主键字段或者外键字段作为Where条件的,不会包含数据库表的分区键,这样就不能充分使用数据库的分区剪裁能力,数据库会遍历所有分区进行查询操作,有较大的性能损耗。
发明内容
本申请提供了一种数据查询方法、系统、设备及计算机可读存储介质,其中的方法能够利用具有分区剪裁能力的Oracle数据库等的数据库表的字段关联特点,确定各数据库表中的分区键字段,并将该分区键字段自动添加到数据查询SQL语句中,作为Where条件进行数据查询,从而提高数据查询效率,并且能充分发挥Oracle数据库等的分区功能,有利于保障数据查询效率稳定,服务端也因此可以提高对客户端的响应速率,因而有利于提高用户体验。
第一方面,本申请提供了一种数据查询方法,应用于业务服务系统的服务端,服务端包括至少一个服务端应用和至少一个数据库,并且,该方法包括:
服务端应用响应于客户端发来的数据查询请求,确定数据查询请求对应请求的第一实体,其中第一实体用于存储数据库中第一数据库表的第一相关信息,第一相关信息至少包括第一数据库表的第一主键信息与分区键信息,分区键信息为数据库在第一数据库表中确定的标识字段相关信息,标识字段为第一数据库表以及第一数据库表的从表所具有的共同字段;服务端应用生成向数据库发送的第一查询语句,其中第一查询语句中的查询条件包括第一主键信息和分区键信息;数据库基于接收到的第一查询语句,在第一数据库表中对应于分区键信息的目标分区下查询包含主键信息的第一目标数据;服务端应用接收数据库反馈的第一目标数据,并将第一目标数据作为数据查询结果返回给客户端。
例如,上述第一数据库表例如可以是Oracle数据库中的一个主表,例如可以是员工表等。相应地,第一实体例如可以是对应于员工表定义的JPA实体,即“员工类”实体,该“员工类”实体的主键信息例如可以是员工表的主键信息(即上述第一主键信息)与分区键信息(例如机构ID)的复合信息。如此,服务端在响应客户端发来的数据查询请求时,服务端应用可以调用已定义的第一实体,并利用该第一实体的主键信息自动生成具有数据库表主键信息和分区键信息的主键查询语句,例如SQL语句,在相应数据库的分区中查询相关的目标数据。如此,服务端则可以自主利用Oracle数据库等的分区剪裁能力,无需借助于开发人员编写的具有分区键作为Where条件的SQL语句进行分区查询,有利于提高服务端对客户端的响应速率,提高用户体验。
在上述第一方面的一种可能的实现中,上述方法进一步包括:服务端应用响应于客户端发来的数据查询请求,确定数据查询请求对应请求的第二实体,其中,第二实体用于存储数据库中的第二数据库表的第二相关信息,其中,第二数据库表中的外键信息与第一数据库表的第一主键信息相同,并且,第二实体的主键信息与第一实体的主键信息不同但二者包括至少部分相同的分区键信息,第二相关信息至少包括外键信息和分区键信息;并且,服务端应用生成向数据库发送的第二查询语句,其中第二查询语句中的查询条件包括外键信息和分区键信息;数据库基于接收到的第二查询语句,在第二数据库表中对应于该分区键信息的目标分区下查询包含该外键信息的第二目标数据;服务端应用接收数据库反馈的第二目标数据,并基于第一目标数据和第二目标数据确定向客户端返回的数据查询结果。
例如,上述第二数据库表例如可以是Oracle数据库中的一个从表,例如可以是员工表的从表:考勤信息表等。相应地,第二实体例如可以是对应于考勤信息表定义的JPA实体,即“考勤信息类”实体,该“考勤信息类”实体的主键信息例如可以是考勤信息表的外键信息与分区键信息(例如机构ID)的复合信息。如此,服务端在响应客户端发来的数据查询请求时,服务端应用可以在调用上述第一实体,进而在员工表中查询到相应分区下的相关数据记录时,基于已定义的第二实体的主键信息自动生成能够关联到考勤信息表的外键查询语句,例如SQL语句,从而在相应数据库的分区中可以进一步查询到外键关联的数据库表中的相关目标数据。相应地,服务端向客户端反馈的数据查询结果例如可以是上述查询到的第一目标数据和第二目标数据的组合。
如此,服务端则可以在查询客户端请求的数据时,自动生成带有分区键的Where条件,无需借助于开发人员在SQL语句中编写带有分区键的Where条件来进行分区查询,有利于减少开发人员的工作量。并且,服务端还可以在查询外键关联数据时,所生成的查询条件也能自动带上分区键作为Where条件,有利于提高数据查询效率,进而提高服务端对客户端的响应速率,提高用户体验。
在上述第一方面的一种可能的实现中,第二相关信息还包括第二数据库表的第二主键信息,并且,上述方法包括:服务端应用生成向数据库发送的第三查询语句,其中第三查询语句中的查询条件包括第二主键信息和分区键信息;数据库基于接收到的第三查询语句,在第二数据库表中对应于分区键信息的目标分区下查询包括第二主键信息的第三目标数据,其中,第三目标数据与第二目标数据相同或不同;服务端应用接收数据库反馈的第三目标数据,并基于第一目标数据、第二目标数据和第三目标数据确定向客户端返回的数据查询结果。
即服务端也可以响应客户端发来的对考勤信息表等从表的数据查询请求,此时服务端也可以响应于客户端发来的数据查询请求,生成包括考勤信息表主键以及所在数据库确定的分区键字段信息的主键查询语句。这一主键查询语句也可以实现在考勤信息表所属的分区内查询该考勤信息表中相关数据的目的。相应地,服务端向客户端反馈的数据查询结果例如可以是上述查询到的第一目标数据、第二目标数据和第三目标数据的组合。
可以理解,服务端响应于客户端发来的数据查询请求,可以自动生成带有分区键信息的主键查询语句或者外键关联查询语句,对应查询到的目标数据应与该数据查询请求所请求的数据相对应。如果查询条件相同,查询到的目标数据可以相同;如果查询条件不同,查询到的目标数据可以不同。
在上述第一方面的一种可能的实现中,查询条件为SQL语句中的Where条件,第一查询语句、第二查询语句以及第三查询语句为SQL语句。
在上述第一方面的一种可能的实现中,服务端应用生成向数据库发送的第一查询语句,包括:获取第一实体的第三主键信息,其中第三主键信息为第一主键信息与分区键信息的复合信息;将作为第三主键信息作为查询条件,生成第一查询语句。
在上述第一方面的一种可能的实现中,服务端应用生成向数据库发送的第二查询语句,包括:获取第二实体的第四主键信息,其中第四主键信息为外键信息与分区键信息的复合信息;将作为第四主键信息作为查询条件,生成第二查询语句。
在上述第一方面的一种可能的实现中,数据库基于接收到的第一查询语句,在第一数据库表中对应于分区键信息的目标分区下查询包括主键信息的第一目标数据,包括:基于第一查询语句的查询条件中的分区键信息,确定待查询的第一数据库表中对应的目标分区的访问路径;基于访问路径访问第一数据库表中的目标分区;基于第一查询语句的查询条件中的主键信息,在第一数据库表中的目标分区下查找主键信息中的主键值对应记录的第一目标数据。
在上述第一方面的一种可能的实现中,数据库为Oracle数据库,服务端应用为基于JPA框架或Hibernate框架开发的应用程序。
在上述第一方面的一种可能的实现中,第一实体由服务端应用采用对象关系映射(O/R Mapping)工具定义,O/R Mapping工具由JPA框架或Hibernate框架提供,并且,服务端应用定义第一实体的过程,包括:获取数据库确定的作为分区键的标识字段;将第一数据库表的第一主键与分区键组合成复合主键,并将复合主键定义为映射至第一数据库表的第一实体的主键。
第二方面,本申请实施例提供了一种业务服务系统,包括客户端和服务端,服务端包括至少一个服务端应用和至少一个数据库,其中,服务端应用,用于接收并响应客户端发来的数据查询请求,并用于根据数据查询请求确定数据查询请求对应请求的第一实体,其中第一实体用于存储数据库中第一数据库表的第一相关信息,第一相关信息至少包括第一数据库表的第一主键信息与分区键信息,分区键信息为数据库在第一数据库表中的标识字段相关信息,标识字段为第一数据库表以及第一数据库表的从表所具有的共同字段;并且,服务端应用还用于生成向数据库发送的第一查询语句,其中第一查询语句中的查询条件包括第一主键信息和分区键信息;数据库,用于根据接收到的第一查询语句,在第一数据库表中对应于分区键信息的目标分区下查询包含主键信息的第一目标数据,并将第一目标数据通过服务端应用返回给客户端。
在上述第二方面的一种可能的实现中,服务端应用进一步用于确定数据查询请求对应请求的第二实体,以及生成向数据库发送的第二查询语句,其中第二实体用于存储数据库中的第二数据库表的第二相关信息,第二数据库表为第一数据库表的外键关联表,第二相关信息至少包括第二数据库表的外键信息和分区键信息,第一数据库表包括第二数据库表的外键信息对应的字段,第二查询语句中的查询条件包括外键信息和分区键信息;并且,数据库还用于根据接收到的第二查询语句,在第二数据库表中对应于该分区键信息的目标分区下查询包含该外键信息的第二目标数据,并将第一目标数据和第二目标数据通过服务端应用返回给客户端。
在上述第二方面的一种可能的实现中,客户端安装在用户使用的终端设备上,服务端应用安装在应用服务器上,数据库部署于数据库服务器上。
第三方面,本申请实施例提供了一种设备,包括:一个或多个处理器;一个或多个存储器;一个或多个存储器存储有一个或多个程序,当一个或者多个程序被一个或多个处理器执行时,使得设备执行上述第一方面以及各种可能的实现中提供的数据查询方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,存储介质上存储有指令,指令在计算机上执行时,使计算机执行上述第一方面以及各种可能的实现中提供的数据查询方法。
附图说明
图1所示为本申请实施例提供的一种数据查询方法所应用的场景示意图。
图2所示为本申请实施例提供的一种服务端所具有的软件结构示意框图。
图3所示为本申请实施例提供的一种数据查询方法的实施流程示意图。
图4所示为本申请实施例提供的一种数据库中分区管理的数据库表。
图5所示为本申请实施例提供的采用复合主键前后对应定义的实体的数据结构变化示意图。
图6所示为本申请实施例提供的一些具有不同Where条件的SQL语句示例。
图7所示为本申请实施例提供的一种服务器200的硬件结构示意图。
具体实施方式
为了便于理解本申请方案,下面先对本申请实施例涉及的部分技术领域的概念进行解释。
(1)数据库,用于存储大量的数据实体。数据库设计则是将数据库中的数据实体及这些数据实体之间的关系,进行规划和结构化的过程。
(2)数据库表,是由表名、表中的字段和表的记录三个部分组成的。设计数据库表结构(以下简称表结构)就是定义数据库表文件名,确定数据库表包含哪些字段,各字段的字段名、字段类型、及宽度,并将这些数据输入到计算机当中。可以理解,数据库表是数据库端的数据载体。
(3)主键,指的是数据库表中一个列或多列的组合,主键的值能唯一地标识表中的每一行。一个数据库表的主键可以与其他表的外键关联,以关联其他数据库表中的字段文本等的新增、删除、变更/修改等。
(4)分区键(Partition Key),是将数据库中的数据库表进行分区的表字段。数据库中各数据库表完成分区后,各分区可以具有唯一标识的分区键。
(5)分区表(Partition Table)是将大表的数据分成称为分区的许多小的子集。分区的种类划分主要包括范围(Range)、列表(List)、散列(Hash)以及复合(Range+List或Range+Hash)分区等。可以理解,分区的划分依据主要是根据上述大表以及分区表的内部属性。同时,分区表可以创建其独特的分区索引。
(6)Oracle是一种关系数据库管理系统。采用Oracle管理的数据库通常称为Oracle数据库。安装在应用程序服务器上的服务端应用可以基于JPA或Hibernate等框架提供的工具程序,借助于服务器底层的JDBC(Java Database Connectivity)驱动程序等与Oracle数据库之间进行数据交互,实现对数据库以及各数据库表中不同分区记录的数据查询功能。
(7)CRUD,是指在做计算处理时的增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。主要被用在描述软件系统中数据库或者持久层(JPA)的基本操作功能。
(8)实体,是应用端的数据载体,例如安装在应用程序服务器上的服务端应用所使用的数据载体,实体通常会包括一些属性和方法。而应用程序服务器上应用的JPA或Hibernate等框架实现了应用端实体与数据库表之间的映射关系,以将应用端对数据实体的操作转换为对数据库表操作的SQL语句,并通过JDBC驱动发送到数据库服务器端,数据库服务器响应这些SQL语句,从而实现对数据库表的操作。通常,映射至相应数据库表的实体,可以与该数据库表具有相同或相似的表结构,例如该实体可以与相应数据库表具有相同的主键或外键。
图1根据本申请实施例示出了一种数据查询方法所应用的场景示意图。
如图1所示,该场景包括终端设备100和服务器(或服务器集群)200。用户可以通过终端设备100进行一些数据查询操作,例如搜索保单、查看保单、导出保单数据等操作,向服务器200发起数据查询以及数据获取等请求。
服务器200在接收到终端设备100响应于用户操作发来的数据查询请求后,可以匹配或生成对应的数据查询语句,在数据库中查找用户所请求的数据,并将查询到的数据(即数据查询结果)反馈给终端设备100。其中,服务器200可以包括应用程序服务器200a以及数据库服务器200b,在另一些实施例中,服务器200还可以包括其他类型的服务器。
可以理解,应用程序服务器200a上可以安装应用端,例如一个或多个服务端应用,用于接收终端设备100上安装的客户端发来的上述数据查询请求,并调用预设框架提供的工具程序,例如上述JPA框架或Hibernate框架提供的对象关系映射(Object RelationalMapping,O/R Mapping)工具程序等,自动生成能够映射到相应数据库或者分区进行数据查询的数据查询语句,并发送给数据库服务器200b上部署的数据库端查询相应数据。该数据查询语句例如可以是SQL语句。在另一些实施例中,该SQL语句对应响应的操作可以包括上述CRUD操作中的任一项。
进而,数据库服务器200b可以将基于接收到的数据查询语句查询到的数据,即数据查询结果通过相应的服务端应用反馈给客户端。
然而,如前所述,这类自动生成的SQL语句通常使用数据库表的主键字段或外键字段作为Where条件,而不包括相应数据所属分区的分区键字段。因此,该SQL语句无法利用Oracle数据库的分区剪裁能力进行分区查询,导致数据查询效率降低,影响服务器200侧的服务端应用和数据库端对相应数据查询请求的响应速度,进而导致用户体验变差。
为了解决上述问题,本申请实施例提供了一种数据查询方法,应用于服务器等电子设备。该方法通过从数据库中先确定分区键字段,例如先在数据库的主表上选择合适的字段作为分区键字段,然后在从表上使用相同的字段作为分区键字段。如果对应从表上没有这个主表上选出的分区键字段,则可以在数据库表设计时冗余该字段到从表上去。进而,在定义实体时可以将该分区键字段添加到相应实体的主键和/或外键中。该添加过程例如可以包括将该分区键字段与相应数据库表的主键复合得到的复合主键,作为所定义实体的主键。该添加过程例如还可以包括将该分区主键字段与相应数据库表的外键复合得到复合外键,作为所定义的实体的外键。进而,当用户通过客户端需要获取数据时,服务端可以基于该实体中的复合主键和/或复合外键,在分区键对应的分区下查找具有相应主键的数据记录、以及关联的外键数据库表对应分区下的数据记录。
如此,在应用了JPA或Hibernate等自动生成SQL语句的框架工具的服务端,也能够有效利用Oracle数据库等的分区剪裁能力,自动进行分区查询,提高数据查询效率,或者说有利于保障数据查询效率稳定。服务端也因此可以提高对客户端的响应速率,用户体验也可以因此得以提高。
可以理解,在一些场景中,如果用户在客户端操作对应请求查询的数据无其他关联数据库表,则基于本申请实施例提供的数据查询方法可以根据自动生成的SQL语句中的复合主键,精准定位到相应分区下查询具有相应主键的数据记录。在另一些场景中,如果用户在客户端操作对应请求查询的数据有其他通过外键关联的数据库表,则基于本申请实施例提供的数据查询方法不仅可以根据SQL语句中复合主键中的分区键精准定位到相应分区下查询具有相应主键的数据记录、还可以根据复合外键定位到关联数据表中相应分区下快速查询到相应的数据记录。
可以理解,本申请实施例所提供的数据查询方法,所适用的电子设备包括但不限于上述服务器200,以及终端设备100例如手机、平板电脑、桌面型、膝上型、手持计算机、上网本,以及增强现实(Augmentedreality,AR)\虚拟现实(Virtual Reality,VR)设备、智能电视、智能手表等可穿戴设备、移动电子邮件设备、车机设备、便携式游戏机、便携式音乐播放器、阅读器设备、其中嵌入或耦接有一个或多个处理器的电视机、或能够访问网络的其他设备。
可以理解,上述服务端是指与终端设备100上安装的客户端之间进行交互的业务服务系统服务端。该服务端所提供的应用服务可以通过上述安装在应用程序服务器200a上的服务端应用来实现,该服务端所提供的数据库相关服务可以通过部署在数据库服务器200b上的数据库来实现,该数据库例如可以是Oracle数据库。因此,本申请实施例提供的配置数据管理方法所适用的服务器/服务器集群,可以包括应用程序服务器(TheApplication Server)等具有较强计算能力或者说应用程序运行能力的服务器或者其他电子设备、以及数据库服务器等具有较强存储能力以及能够运行Oracle等数据库管理系统实现分区剪裁的服务器及其他电子设备。在此不做限制。
可以理解,上述安装有客户端的终端设备100,可以包括但不限于手机、平板电脑、桌面型、膝上型、手持计算机、上网本,以及增强现实(Augmentedreality,AR)\虚拟现实(Virtual Reality,VR)设备、智能电视、智能手表等可穿戴设备、移动电子邮件设备、车机设备、便携式游戏机、便携式音乐播放器、阅读器设备、其中嵌入或耦接有一个或多个处理器的电视机、或能够访问网络的其他电子设备。
图2根据本申请实施例示出了一种服务端所具有的软件结构示意框图。
如图2所示,服务端可以包括服务端应用20a以及数据库20b。其中,服务端应用20a可以安装于应用程序服务器200a上,数据库20b可以部署于数据库服务器200b上。相应地,图2所示的服务端可以部署在包括应用程序服务器200a和数据库服务器200b的服务器集群或者集成的服务器200上。可以理解,该服务端例如可以是一些大型业务服务系统的组成部分,例如保险业务服务系统中的服务端等。部署上述服务端的服务器集群也可以包括其他类型的服务器,例如文件服务器、内容管理服务器、代理服务器、电子邮件服务器等,在此不做限制。
可以理解,图2所示的服务端可以基于服务端应用20a获取客户端发来的数据查询请求,该数据查询请求例如可以是用户在相应终端设备100显示的客户端界面上进行的查看、下载、修改、删除或者说CRUD等操作对应发起的查询相应数据的请求,在此不做限制。
基于图2所示的服务端结构,下面结合具体的实施流程图,详细说明本申请实施例提供的数据查询方法的具体实现过程。
图3根据本申请实施例示出了一种数据查询方法的实施流程示意图。
可以理解,图3所示流程可以涉及服务端中的服务端应用20a与数据库20b之间的交互过程,其中服务端应用20a与数据库20b可以安装/部署在不同的服务器上,例如服务端应用20a可以安装在应用程序服务器上,数据库20b可以部署在数据库服务器上,在此不做限制。在另一些实施例中,图3所示流程中各步骤的执行主体也可以均为服务端。
如图3所示,该交互流程可以包括以下步骤:
301:数据库20b在数据库的主表上选择合适字段作为分区键字段,并在从表上使用相同的字段作为分区键字段。
示例性地,上述数据库20b例如可以是Oracle数据库。Oracle数据库中各数据库表中的数据记录通常会按照预设的分区规则被划分至相应的分区下,例如按照各数据记录所属的机构或单位信息、被应用到的软件项目信息、被调用的端口信息或者被调用的主机信息、服务信息等划分到相应的分区下。相应地,各数据库表中不同分区的数据记录可以具有一些共同字段信息,这些共同字段则可以作为标识该分区的分区键字段。该分区键字段也可以理解为该分区内能在各数据库表之间建立关联的字段。因此,数据库20b可以在管理各数据库表的主键信息、外键信息等,还可以在数据库的主表中选择一个分区键字段作为该主表以及外键关联的从表等各数据库表中的分区键信息。
作为示例,图4根据本申请实施例示出了一种数据库中分区管理的数据库表。
如图4所示,例如该分区包括员工表、考勤信息表等数据库表。其中,员工表中的字段包括员工ID、机构ID、姓名等,其中员工ID为该员工表的主键。考勤信息表中的字段包括考勤信息ID、员工ID、机构ID、考勤日期、考勤状态等,其中考勤信息ID例如可以是考勤卡的卡号等信息,可以设计为该考勤信息表的主键。并且,图3所示的员工表与考勤信息表之间可以构成主从表,例如二者可以通过员工ID建立主从关系。如此,参考图3所示,员工表作为主表,考勤信息表则作为员工表的从表,其中考勤信息表中的员工ID为关联员工表的外键。
继续如图4所示,员工表与考勤信息表之间,除了通过员工ID关联之外,二者还具有相同的字段,即机构ID。并且,该分区的其他数据库表也可能包含有该机构ID字段。因此,数据库20b可以在员工表中选择该机构ID作为分区键字段,并将图4所示考勤信息表中的机构ID也作为分区键字段。
可以理解,数据库20b在选择作为分区键的字段时,对于各数据库表的主键字段可以不做调整。例如,上述图4所示员工表的主键仍为“员工ID”、考勤信息表的主键仍为“考勤信息ID”等,即保持各数据库表的主键仍为初始设计的单个主键字段。
302:数据库20b向服务端应用20a反馈选择的分区键字段。
示例性地,数据库20b在选定各数据库表中的分区键字段后,可以将该分区键字段反馈给服务端应用20a,以便于服务端应用20a创建相应数据库表关联的实体时使用。上述反馈过程在另一些实施例中也可以理解为服务端的数据同步过程,在此不做限制。
303:服务端应用20a将分区键字段与相应的数据库表的主键进行复合得到复合主键,并定义包括该复合主键的实体。
示例性地,在对JPA实体进行定义时,可以将上述步骤301中选择出的分区键字段,作为所定义的实体的主键之一,例如可以将该分区键字段与相应数据库表中原始设计的主键进行复合,得到的复合主键则可以作为所定义的实体的主键。
作为示例,基于上述图4所示的数据库表结构,服务端应用20a对应定义的实体的数据结构可以参考图5所示的示例。
图5根据本申请实施例示出了采用复合主键前后对应定义的实体的数据结构变化示意图。
如图5所示,在采用复合主键之前,基于上述图4所示的“员工表”可以对应定义包含该“员工表”主键的“员工类”实体,即该实体的主键信息为“员工ID”。同样地,基于上述图4所示的“考勤信息表”可以对应定义包含该“考勤信息表”主键的“考勤信息类”实体,即该实体的主键信息为“考勤信息ID”。可以理解,在采用复合主键之前,对各数据库表关联定义的实体的主键通常会默认与数据库中相应数据库表的主键一致,例如员工类的主键为员工ID、考勤信息类的主键为考勤信息ID等。另外,如果上述图4所示的“员工表”通过外键关联多个“考勤信息表”,此时服务端应用20a则可以定义一个“员工类”实体,并基于外键关联的多个“考勤信息表”定义多个“考勤信息类”实体,即二者的数量对应关系可以是1对n的对应关系。
继续参考图5所示,在采用复合主键之后,基于上述图4所示的“员工表”可以对应定义包含复合主键的“员工类”实体,即该实体的主键信息可以包括“员工ID”和“机构ID”,同样地,基于上述图4所示的“考勤信息表”可以对应定义包含复合主键的“考勤信息类”实体,即该实体的主键信息为“考勤信息ID”和“机构ID”。可以理解,在采用复合主键定义的实体中,“机构ID”既是分区键也是主键。另外,如果上述图4所示的“员工表”通过外键关联多个“考勤信息表”,此时服务端应用20a则可以定义一个具有复合主键的“员工类”实体,并基于外键关联的多个“考勤信息表”定义多个具有复合主键的“考勤信息类”实体,即二者的数量对应关系也可以是1对n的对应关系。
304:服务端应用20a将分区键字段与相应的数据库表的外键进行复合得到复合外键,并将该复合外键添加到定义的实体中。
示例性地,在一些数据查询场景中,不仅需要查询数据库表中相应分区下包含相应主键信息的数据记录,还需要查询外键关联的一些数据库表中相应分区下的相关数据记录,以实现数据查全的目的。此种场景下,服务端应用20a可以基于数据库中各数据库表的主键字段和分区键字段,复合得到复合外键,并将该复合外键添加到已定义的包括复合主键的实体中,形成具有复合外键的实体。其中,该复合外键例如可以包括各数据库中原始设计的外键信息以及上述步骤302数据库20b反馈的分区键信息,即使用分区键信息作为主从表之间的外键关联条件之一。
作为示例,继续参考上述图5所示,在采用复合外键之前,基于上述图4所示的“考勤信息表”可以对应定义包含该“考勤信息表”外键的“考勤信息类”实体,即该实体的外键信息为“员工ID”,该外键信息则可以对应关联到作为“员工类”实体。可以理解,在采用复合外键之前,对各数据库表关联定义的实体的外键通常会默认与数据库中相应数据库表的外键一致,例如考勤信息类的外键为员工ID等。另外,如果上述图4所示的“员工表”通过外键关联多个“考勤信息表”,此时服务端应用20a则可以定义一个“员工类”实体,并基于外键关联的多个“考勤信息表”定义多个“考勤信息类”实体,即二者的数量对应关系可以是1对n的对应关系。
继续参考图5所示,基于上述图4所示的“考勤信息表”可以对应定义包含复合外键的“考勤信息类”实体,即该实体的外键信息为“员工ID”和“机构ID”。可以理解,在采用复合外键定义的实体中,“机构ID”既是分区键也是外键。另外,如果上述图4所示的“员工表”通过外键关联多个“考勤信息表”,此时服务端应用20a则可以定义一个具有复合外键的“员工类”实体,并基于外键关联的多个“考勤信息表”定义多个具有复合外键的“考勤信息类”实体,即二者的数量对应关系也可以是1对n的对应关系。
可以理解,在一些数据查询场景中,服务端应用20a可以仅执行上述步骤303定义具有复合主键的实体,该实体对应映射到相应的数据库表。在另一些场景中,服务端应用20a也可以执行上述步骤303至304定义具有复合主键和复合外键的实体,该实体可以映射到对应的数据库表。在此不做限制。
305:服务端应用20a接收到客户端发来的数据查询请求。
示例性地,参考上述图1所示的场景,当用户操作终端设备100,通过终端设备100上安装的客户端向服务端请求查询或获取相关数据时,相应的客户端可以向服务端应用20a发送数据查询请求。该数据查询请求可以包括所请求数据的主键信息等作为相关数据的识别信息。相应地,服务端应用20a可以接收到客户端发来的数据查询请求。
306:服务端应用20a基于实体中的复合主键,生成采用复合主键字段作为Where条件的SQL语句。
示例性地,服务端应用20a可以根据接收到的数据查询请求中的主键信息等,匹配相应的实体并调用相应实体生成数据查询语句。例如,应用了JPA框架或Hibernate框架的服务端应用20a,可以基于数据查询请求中的主键信息匹配到包括该主键信息的实体。该实体例如可以是服务端应用20a执行上述步骤303时定义的具有复合主键的实体,该复合主键的信息可以包括数据查询请求中的主键信息。服务端应用20a利用JPA框架或Hibernate框架提供的O/R Mapping工具例如可以自动生成SQL语句作为数据查询语句,上述匹配到的实体中的复合主键即可以作为所生成SQL语句中的Where条件或者Where条件之一,在此不做限制。
作为示例,图6根据本申请实施例示出了一些具有不同Where条件的SQL语句示例。
如图6所示,表1为基于一般实体自动生成的SQL语句。该一般实体的主键例如只是关联数据库表的主键,例如“员工ID”或“考勤信息ID”等。则服务端应用20a利用O/RMapping工具对应生成的以主键作为Where条件的SQL语句中则只能包括“员工ID”或者“考勤信息ID”,例如表1中的主键查询语句“Select*from员工表where员工ID=?”或“Select*from考勤信息表where考勤信息ID=?”等,在此不做限制。
在另一些实施例中,利用O/R Mapping工具生成的数据更新语句、数据删除语句或者数据插入语句等也可以仅采用主键作为Where条件。例如,表1中的数据更新语句“Update员工表set姓名=?where员工ID=?”或“Update考勤信息表set状态=?where考勤信息ID=?”、以及表1中的数据删除语句“Delete from员工表where员工ID=?”或“Delete from考勤信息表where考勤信息ID=?”等,在此不做枚举。
相比之下,继续如图6所示,表2为基于具有复合主键的实体自动生成的语句。该实体所具有的复合主键可以包括主键信息“员工ID”和“机构ID”、或者包括“考勤信息ID”和“机构ID”。例如表2中的主键查询语句“Select*from员工表where员工ID=?and机构ID=?”或“Select*from考勤信息表where考勤信息ID=?and机构ID=?”等,在此不做限制。
在另一些实施例中,利用O/R Mapping工具生成的数据更新语句、数据删除语句或者数据插入语句等也可以采用上述复合主键作为Where条件。例如,表2中的数据更新语句“Update员工表set姓名=?where员工ID=?and机构ID=?”或“Update考勤信息表set状态=?where考勤信息ID=?and机构ID=?”、以及表2中的数据删除语句“Delete from员工表where员工ID=?and机构ID=?”或“Delete from考勤信息表where考勤信息ID=?and机构ID=?”等,在此不做枚举。
307:服务端应用20a向数据库20b发送所生成的SQL语句。
示例性地,服务端应用20a可以将基于具有复合主键的实体生成的SQL语句发送给数据库20b,以通过该SQL语句向数据库20b提供分区查询所需的分区键信息和主键信息。
308:数据库20b向服务端应用20a反馈数据查询结果。
示例性地,数据库20b可以基于接收到的SQL语句中的复合主键信息,在相应分区下查询包含相应主键信息的数据记录,并将查询到的数据作为数据查询结果反馈给服务端应用20a。
309:服务端应用20a基于实体中的复合外键,生成采用复合外键字段作为Where条件中关联外键字段的SQL语句。
示例性地,在一些数据查询场景中,服务端应用20a可以根据接收到的数据查询请求中的外键信息等,匹配相应的实体并调用相应实体生成数据查询语句。例如,应用了JPA框架或Hibernate框架的服务端应用20a,可以基于数据查询请求中的外键信息匹配到包括该外键信息的实体。该实体例如可以是服务端应用20a执行上述步骤303时定义的具有复合外键的实体,该复合外键的信息可以包括数据查询请求中的外键信息。服务端应用20a利用JPA框架或Hibernate框架提供的O/R Mapping工具例如可以自动生成SQL语句作为数据查询语句,上述匹配到的实体中的复合外键即可以作为所生成SQL语句中的Where条件或者Where条件之一,在此不做限制。
作为示例,图6根据本申请实施例示出了一些具有不同Where条件的SQL语句示例。
如图6所示,表1为基于一般实体自动生成的SQL语句。该一般实体的外键例如只是关联数据库表的外键,例如“员工ID”或“考勤信息ID”等。则服务端应用20a利用O/RMapping工具对应生成的以外键作为Where条件的SQL语句中则只能包括“员工ID”或者“考勤信息ID”,例如表1中的外键关联查询语句“Select*from考勤信息表where员工ID=?”等。
相比之下,继续如图6所示,表2为基于具有复合外键的实体自动生成的语句。该实体所具有的复合外键可以包括外键信息“员工ID”和“机构ID”、或者包括“考勤信息ID”和“机构ID”。例如表2中的外键关联查询语句“Select*from考勤信息表where员工ID=?and机构ID=?”等。
对应生成的以外键作为Where条件的SQL语句中则只能包括“员工ID”。
在另一些实施例中,如果请求查询的目标数据所在的数据库表没有从表,即其他数据库表中没有关联的外键字段与目标数据所在的数据库表,则服务端应用20a也可以不跳过本步骤309,并且不再执行下述步骤310至311。
310:服务端应用20a向数据库20b发送所生成的SQL语句。
示例性地,服务端应用20a可以将基于具有复合外键的实体生成的SQL语句发送给数据库20b,以通过该SQL语句向数据库20b提供分区查询所需的分区键信息和外键信息,其中的外键信息用于查询关联的数据库表中的目标数据。
311:数据库20b向服务端应用20a反馈数据查询结果。
示例性地,数据库20b可以基于接收到的SQL语句中的复合外键信息,在相应分区下查询相应外键信息关联的数据库表中的数据记录,并将查询到的数据作为数据查询结果反馈给服务端应用20a。
可以理解,在一些数据查询场景中,本步骤311所反馈的数据查询结果与上述步骤308中对应反馈的数据查询结果可以合并向服务端应用20a反馈。例如,服务端应用20a可以执行上述步骤306至307、以及步骤309至310之后,向数据库20b发送包括复合主键以及复合外键的SQL语句,进而数据库20b可以根据该SQL语句在相应数据库表中相应分区下查询具有相应主键信息的数据记录、以及相应外键信息关联的数据库表中相应分区下的数据记录,最终精准且快速的查询到所有目标数据,并作为数据查询结果反馈给服务端应用20a。
可以理解,基于上述步骤301至311的执行过程,本申请实施例提供的数据查询方法能够充分利用Oracle数据库等具有分区设计的数据库的分区剪裁能力,自动生成具有分区键的数据查询语句以及数据更新、数据删除等SQL语句。如此,为业务服务系统提供数据管理服务的数据库端能够自动进行分区剪裁操作,充分发挥分区功能的作用,提高数据查询效率。另外,基于本申请实施例提供的数据查询方法,能够自动生成具有分区键信息的SQL语句,性能上可以替代开发人员编写的SQL语句所具有的性能,有利于节约开发人员的开发量,也有利于提高服务端的整体性能,例如提高响应速率等。
图7根据本申请实施例示出了一种服务器200的硬件结构示意图。
可以理解,该服务器200既可以是上述用于安装服务端应用20a的应用程序服务器200a,也可以是上述用于部署数据库20b的数据库服务器200b,等等,在此不做限制。
如图7所示,在一些实施例中,服务器200可以包括一个或多个处理器204,与处理器204中的至少一在个连接的系统控制逻辑208,与系统控制逻辑208连接的系统内存212,与系统控制逻辑208连接的非易失性存储器(NVM)216,以及与系统控制逻辑208连接的网络接口220。
在一些实施例中,处理器204可以包括一个或多个单核或多核处理器。在一些实施例中,处理器204可以包括通用处理器和专用处理器(例如,图形处理器,应用处理器,基带处理器等)的任意组合。在服务器200采用eNB(Evolved Node B,增强型基站)或RAN(RadioAccess Network,无线接入网)控制器的实施例中,处理器204可以被配置为执行各种符合的实施例,例如,如图2至图5所示的多个实施例中的一个或多个。
在一些实施例中,系统控制逻辑208可以包括任意合适的接口控制器,以向处理器204中的至少一个和/或与系统控制逻辑208通信的任意合适的设备或组件提供任意合适的接口。
在一些实施例中,系统控制逻辑208可以包括一个或多个存储器控制器,以提供连接到系统内存212的接口。系统内存212可以用于加载以及存储数据和/或指令。在一些实施例中服务器200的系统内存212可以包括任意合适的易失性存储器,例如合适的动态随机存取存储器(DRAM)。
NVM/存储器216可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性的计算机可读介质。在一些实施例中,NVM/存储器216可以包括闪存等任意合适的非易失性存储器和/或任意合适的非易失性存储设备,例如HDD(Hard Disk Drive,硬盘驱动器),CD(Compact Disc,光盘)驱动器,DVD(Digital Versatile Disc,数字通用光盘)驱动器中的至少一个。
NVM/存储器216可以包括安装服务器200的装置上的一部分存储资源,或者它可以由设备访问,但不一定是设备的一部分。例如,可以经由网络接口220通过网络访问NVM/存储216。
特别地,系统内存212和NVM/存储器216可以分别包括:指令224的暂时副本和永久副本。指令224可以包括:由处理器204中的至少一个执行时导致服务器200实施如图3所示的方法的指令。在一些实施例中,指令224、硬件、固件和/或其软件组件可另外地/替代地置于系统控制逻辑208,网络接口220和/或处理器204中。
网络接口220可以包括收发器,用于为服务器200提供无线电接口,进而通过一个或多个网络与任意其他合适的设备(如前端模块,天线等)进行通信。在一些实施例中,网络接口220可以集成于服务器200的其他组件。例如,网络接口220可以集成于处理器204的,系统内存212,NVM/存储器216,和具有指令的固件设备(未示出)中的至少一种,当处理器204中的至少一个执行所述指令时,服务器200实现上述图3所示的方法。
网络接口220可以进一步包括任意合适的硬件和/或固件,以提供多输入多输出无线电接口。例如,网络接口220可以是网络适配器,无线网络适配器,电话调制解调器和/或无线调制解调器。
在一个实施例中,处理器204中的至少一个可以与用于系统控制逻辑208的一个或多个控制器的逻辑封装在一起,以形成系统封装(SiP)。在一个实施例中,处理器204中的至少一个可以与用于系统控制逻辑208的一个或多个控制器的逻辑集成在同一管芯上,以形成片上系统(SoC)。
服务器200可以进一步包括:输入/输出(I/O)设备232。I/O设备232可以包括用户界面,使得用户能够与服务器200进行交互;外围组件接口的设计使得外围组件也能够与服务器200交互。在一些实施例中,服务器200还包括传感器,用于确定与服务器200相关的环境条件和位置信息的至少一种。
在一些实施例中,用户界面可包括但不限于显示器(例如,液晶显示器,触摸屏显示器等),扬声器,麦克风,一个或多个相机(例如,静止图像照相机和/或摄像机),手电筒(例如,发光二极管闪光灯)和键盘。
在一些实施例中,外围组件接口可以包括但不限于非易失性存储器端口、音频插孔和电源接口。
在一些实施例中,传感器可包括但不限于陀螺仪传感器,加速度计,近程传感器,环境光线传感器和定位单元。定位单元还可以是网络接口220的一部分或与网络接口220交互,以与定位网络的组件(例如,全球定位系统(GPS)卫星)进行通信。
在说明书对“一个实施例”或“实施例”的引用意指结合实施例所描述的具体特征、结构或特性被包括在根据本申请实施例公开的至少一个范例实施方案或技术中。说明书中的各个地方的短语“在一个实施例中”的出现不一定全部指代同一个实施例。
本申请实施例的公开还涉及用于执行文本中的操作装置。该装置可以专门处于所要求的目的而构造或者其可以包括被存储在计算机中的计算机程序选择性地激活或者重新配置的通用计算机。这样的计算机程序可以被存储在计算机可读介质中,诸如,但不限于任何类型的盘,包括软盘、光盘、CD-ROM、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁或光卡、专用集成电路(ASIC)或者适于存储电子指令的任何类型的介质,并且每个可以被耦合到计算机系统总线。此外,说明书中所提到的计算机可以包括单个处理器或者可以是采用针对增加的计算能力的多个处理器涉及的架构。
另外,在本说明书所使用的语言已经主要被选择用于可读性和指导性的目的并且可能未被选择为描绘或限制所公开的主题。因此,本申请实施例公开旨在说明而非限制本文所讨论的概念的范围。
Claims (14)
1.一种数据查询方法,其特征在于,应用于业务服务系统的服务端,所述服务端包括至少一个服务端应用和至少一个数据库,并且,所述方法包括:
所述服务端应用响应于客户端发来的数据查询请求,确定所述数据查询请求对应请求的第一实体,其中所述第一实体用于存储所述数据库中第一数据库表的第一相关信息,所述第一相关信息至少包括所述第一数据库表的第一主键信息与分区键信息,所述分区键信息为所述数据库在所述第一数据库表中确定的标识字段相关信息,所述标识字段为所述第一数据库表以及所述第一数据库表的从表所具有的共同字段;
所述服务端应用生成向所述数据库发送的第一查询语句,其中所述第一查询语句中的查询条件包括所述第一主键信息和所述分区键信息;
所述数据库基于接收到的所述第一查询语句,在所述第一数据库表中对应于所述分区键信息的目标分区下查询包含所述主键信息的第一目标数据;
所述服务端应用接收所述数据库反馈的第一目标数据,并将所述第一目标数据作为数据查询结果返回给所述客户端。
2.根据权利要求1所述的方法,其特征在于,进一步包括,所述服务端应用响应于客户端发来的数据查询请求,确定所述数据查询请求对应请求的第二实体,其中,
所述第二实体用于存储所述数据库中的第二数据库表的第二相关信息,其中,所述第二数据库表中的外键信息与所述第一数据库表的所述第一主键信息相同,并且,所述第二实体的主键信息与所述第一实体的主键信息不同但二者包括至少部分相同的分区键信息,所述第二相关信息至少包括所述外键信息和所述分区键信息;并且,
所述服务端应用生成向所述数据库发送的第二查询语句,其中所述第二查询语句中的查询条件包括所述外键信息和所述分区键信息;
所述数据库基于接收到的所述第二查询语句,在所述第二数据库表中对应于所述分区键信息的目标分区下查询包含所述外键信息的第二目标数据;
所述服务端应用接收所述数据库反馈的第二目标数据,并基于所述第一目标数据和所述第二目标数据确定向所述客户端返回的数据查询结果。
3.根据权利要求2所述的方法,其特征在于,所述第二相关信息还包括所述第二数据库表的第二主键信息,并且,所述方法包括:
所述服务端应用生成向所述数据库发送的第三查询语句,其中所述第三查询语句中的查询条件包括所述第二主键信息和所述分区键信息;
所述数据库基于接收到的所述第三查询语句,在所述第二数据库表中对应于所述分区键信息的目标分区下查询包括所述第二主键信息的第三目标数据,其中,所述第三目标数据与所述第二目标数据相同或不同;
所述服务端应用接收所述数据库反馈的第三目标数据,并基于所述第一目标数据、所述第二目标数据和所述第三目标数据确定向所述客户端返回的数据查询结果。
4.根据权利要求3所述的方法,其特征在于,所述查询条件为SQL语句中的Where条件,所述第一查询语句、所述第二查询语句以及所述第三查询语句为SQL语句。
5.根据权利要求1所述的方法,其特征在于,所述服务端应用生成向所述数据库发送的第一查询语句,包括:
获取所述第一实体的第三主键信息,其中所述第三主键信息为所述第一主键信息与所述分区键信息的复合信息;
将作为第三主键信息作为查询条件,生成所述第一查询语句。
6.根据权利要求2所述的方法,其特征在于,所述服务端应用生成向所述数据库发送的第二查询语句,包括:
获取所述第二实体的第四主键信息,其中所述第四主键信息为所述外键信息与所述分区键信息的复合信息;
将作为第四主键信息作为查询条件,生成所述第二查询语句。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述数据库基于接收到的所述第一查询语句,在所述第一数据库表中对应于所述分区键信息的目标分区下查询包括所述主键信息的第一目标数据,包括:
基于所述第一查询语句的查询条件中的分区键信息,确定待查询的第一数据库表中对应的目标分区的访问路径;
基于所述访问路径访问所述第一数据库表中的目标分区;
基于所述第一查询语句的查询条件中的主键信息,在所述第一数据库表中的目标分区下查找所述主键信息中的主键值对应记录的第一目标数据。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述数据库为Oracle数据库,所述服务端应用为基于JPA框架或Hibernate框架开发的应用程序。
9.根据权利要求8所述的方法,其特征在于,所述第一实体由所述服务端应用采用对象关系映射(O/R Mapping)工具定义,所述O/R Mapping工具由所述JPA框架或Hibernate框架提供,并且,
所述服务端应用定义所述第一实体的过程,包括:
获取所述数据库确定的作为分区键的所述标识字段;
将所述第一数据库表的第一主键与所述分区键组合成复合主键,并将所述复合主键定义为映射至所述第一数据库表的第一实体的主键。
10.一种业务服务系统,其特征在于,包括客户端和服务端,所述服务端包括至少一个服务端应用和至少一个数据库,其中,
所述服务端应用,用于接收并响应客户端发来的数据查询请求,并用于根据所述数据查询请求确定所述数据查询请求对应请求的第一实体,其中所述第一实体用于存储所述数据库中第一数据库表的第一相关信息,所述第一相关信息至少包括所述第一数据库表的第一主键信息与分区键信息,所述分区键信息为所述数据库在所述第一数据库表中的标识字段相关信息,所述标识字段为所述第一数据库表以及所述第一数据库表的从表所具有的共同字段;并且,
所述服务端应用还用于生成向所述数据库发送的第一查询语句,其中所述第一查询语句中的查询条件包括所述第一主键信息和所述分区键信息;
所述数据库,用于根据接收到的所述第一查询语句,在所述第一数据库表中对应于所述分区键信息的目标分区下查询包含所述主键信息的第一目标数据,并将所述第一目标数据通过所述服务端应用返回给所述客户端。
11.根据权利要求10所述的系统,其特征在于,所述服务端应用进一步用于确定所述数据查询请求对应请求的第二实体,以及生成向所述数据库发送的第二查询语句,其中所述第二实体用于存储所述数据库中的第二数据库表的第二相关信息,所述第二数据库表为所述第一数据库表的外键关联表,所述第二相关信息至少包括所述第二数据库表的外键信息和所述分区键信息,所述第一数据库表包括所述第二数据库表的外键信息对应的字段,所述第二查询语句中的查询条件包括所述外键信息和所述分区键信息;并且,
所述数据库还用于根据接收到的所述第二查询语句,在所述第二数据库表中对应于所述分区键信息的目标分区下查询包含所述外键信息的第二目标数据,并将所述第一目标数据和所述第二目标数据通过所述服务端应用返回给所述客户端。
12.根据权利要求10或11所述的系统,其特征在于,所述客户端安装在用户使用的终端设备上,所述服务端应用安装在应用服务器上,所述数据库部署于数据库服务器上。
13.一种设备,其特征在于,包括:一个或多个处理器;一个或多个存储器;所述一个或多个存储器存储有一个或多个程序,当一个或者多个程序被所述一个或多个处理器执行时,使得所述设备执行权利要求1至9中任一项所述的数据查询方法。
14.一种计算机可读存储介质,其特征在于,所述存储介质上存储有指令,所述指令在计算机上执行时,使所述计算机执行权利要求1至9中任一项所述的数据查询方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211503327.1A CN115729951B (zh) | 2022-11-28 | 2022-11-28 | 数据查询方法、系统、设备及计算机可读存储介质 |
PCT/CN2023/097722 WO2024113740A1 (zh) | 2022-11-28 | 2023-06-01 | 数据查询方法、系统、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211503327.1A CN115729951B (zh) | 2022-11-28 | 2022-11-28 | 数据查询方法、系统、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115729951A true CN115729951A (zh) | 2023-03-03 |
CN115729951B CN115729951B (zh) | 2024-02-09 |
Family
ID=85298714
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211503327.1A Active CN115729951B (zh) | 2022-11-28 | 2022-11-28 | 数据查询方法、系统、设备及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115729951B (zh) |
WO (1) | WO2024113740A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076547A (zh) * | 2023-10-16 | 2023-11-17 | 江苏量界数据科技有限公司 | 基于虚拟分布式服务器的数据存储方法 |
WO2024113740A1 (zh) * | 2022-11-28 | 2024-06-06 | 易保网络技术(上海)有限公司 | 数据查询方法、系统、设备及计算机可读存储介质 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070027860A1 (en) * | 2005-07-28 | 2007-02-01 | International Business Machines Corporation | Method and apparatus for eliminating partitions of a database table from a join query using implicit limitations on a partition key value |
WO2015039072A1 (en) * | 2013-09-16 | 2015-03-19 | Mastercard International Incorporated | Systems and methods for optimizing database queries |
US20180218044A1 (en) * | 2017-01-31 | 2018-08-02 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing a by partition command term within a multi-tenant aware structured query language |
CN110008232A (zh) * | 2019-04-11 | 2019-07-12 | 北京启迪区块链科技发展有限公司 | 结构化查询语句的生成方法、装置、服务器及介质 |
CN110019112A (zh) * | 2017-08-25 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 数据事务处理方法、装置以及电子设备 |
CN110069523A (zh) * | 2017-11-23 | 2019-07-30 | 阿里巴巴集团控股有限公司 | 一种数据查询方法、装置和查询系统 |
CN110134683A (zh) * | 2019-04-23 | 2019-08-16 | 中国地质大学(武汉) | 关系数据库中海量要素存储的分区优化研究方法及系统 |
CN111198886A (zh) * | 2019-12-31 | 2020-05-26 | 浙江华云信息科技有限公司 | 一种构建Hbase二级索引表方法 |
CN111209296A (zh) * | 2019-12-31 | 2020-05-29 | 航天信息股份有限公司企业服务分公司 | 数据库访问方法、装置、电子设备及存储介质 |
CN113094387A (zh) * | 2021-04-08 | 2021-07-09 | 杭州数梦工场科技有限公司 | 一种数据查询方法、装置、电子设备及机器可读存储介质 |
US11068461B1 (en) * | 2019-06-25 | 2021-07-20 | Amazon Technologies, Inc. | Monitoring key access patterns for nonrelational databases |
CN113297269A (zh) * | 2021-02-10 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据查询方法及装置 |
CN113760948A (zh) * | 2021-01-29 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种数据查询的方法及装置 |
CN113779120A (zh) * | 2021-01-29 | 2021-12-10 | 北京京东拓先科技有限公司 | 数据查询方法、装置、设备及存储介质 |
CN115237918A (zh) * | 2022-07-27 | 2022-10-25 | 杭州湖西云百生科技有限公司 | 关节置换手术异构数据索引设计方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512200A (zh) * | 2015-11-26 | 2016-04-20 | 华为技术有限公司 | 一种分布式数据库处理的方法和设备 |
US20200233861A1 (en) * | 2019-01-18 | 2020-07-23 | Salesforce.Com, Inc. | Elastic data partitioning of a database |
CN113515487B (zh) * | 2021-09-07 | 2021-11-19 | 联想凌拓科技有限公司 | 查询目录的方法、计算设备和分布式文件系统 |
CN115729951B (zh) * | 2022-11-28 | 2024-02-09 | 易保网络技术(上海)有限公司 | 数据查询方法、系统、设备及计算机可读存储介质 |
-
2022
- 2022-11-28 CN CN202211503327.1A patent/CN115729951B/zh active Active
-
2023
- 2023-06-01 WO PCT/CN2023/097722 patent/WO2024113740A1/zh unknown
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070027860A1 (en) * | 2005-07-28 | 2007-02-01 | International Business Machines Corporation | Method and apparatus for eliminating partitions of a database table from a join query using implicit limitations on a partition key value |
WO2015039072A1 (en) * | 2013-09-16 | 2015-03-19 | Mastercard International Incorporated | Systems and methods for optimizing database queries |
US20180218044A1 (en) * | 2017-01-31 | 2018-08-02 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing a by partition command term within a multi-tenant aware structured query language |
CN110019112A (zh) * | 2017-08-25 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 数据事务处理方法、装置以及电子设备 |
CN110069523A (zh) * | 2017-11-23 | 2019-07-30 | 阿里巴巴集团控股有限公司 | 一种数据查询方法、装置和查询系统 |
CN110008232A (zh) * | 2019-04-11 | 2019-07-12 | 北京启迪区块链科技发展有限公司 | 结构化查询语句的生成方法、装置、服务器及介质 |
CN110134683A (zh) * | 2019-04-23 | 2019-08-16 | 中国地质大学(武汉) | 关系数据库中海量要素存储的分区优化研究方法及系统 |
US11068461B1 (en) * | 2019-06-25 | 2021-07-20 | Amazon Technologies, Inc. | Monitoring key access patterns for nonrelational databases |
CN111198886A (zh) * | 2019-12-31 | 2020-05-26 | 浙江华云信息科技有限公司 | 一种构建Hbase二级索引表方法 |
CN111209296A (zh) * | 2019-12-31 | 2020-05-29 | 航天信息股份有限公司企业服务分公司 | 数据库访问方法、装置、电子设备及存储介质 |
CN113760948A (zh) * | 2021-01-29 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种数据查询的方法及装置 |
CN113779120A (zh) * | 2021-01-29 | 2021-12-10 | 北京京东拓先科技有限公司 | 数据查询方法、装置、设备及存储介质 |
CN113297269A (zh) * | 2021-02-10 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据查询方法及装置 |
CN113094387A (zh) * | 2021-04-08 | 2021-07-09 | 杭州数梦工场科技有限公司 | 一种数据查询方法、装置、电子设备及机器可读存储介质 |
CN115237918A (zh) * | 2022-07-27 | 2022-10-25 | 杭州湖西云百生科技有限公司 | 关节置换手术异构数据索引设计方法 |
Non-Patent Citations (2)
Title |
---|
张新建;王峰;杜豫冬;: "Oracle数据库分区优化技术研究与应用", 网络安全技术与应用, no. 10, pages 72 - 75 * |
林学峰;唐艳;窦晓晶;: "Oracle查询优化技术在卫星计费系统中的应用研究", 安徽大学学报(自然科学版), no. 01 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024113740A1 (zh) * | 2022-11-28 | 2024-06-06 | 易保网络技术(上海)有限公司 | 数据查询方法、系统、设备及计算机可读存储介质 |
CN117076547A (zh) * | 2023-10-16 | 2023-11-17 | 江苏量界数据科技有限公司 | 基于虚拟分布式服务器的数据存储方法 |
CN117076547B (zh) * | 2023-10-16 | 2024-01-02 | 江苏量界数据科技有限公司 | 基于虚拟分布式服务器的数据存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115729951B (zh) | 2024-02-09 |
WO2024113740A1 (zh) | 2024-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107402988B (zh) | 一种分布式NewSQL数据库系统和半结构化数据查询方法 | |
US10482022B2 (en) | Custom caching | |
CN115729951B (zh) | 数据查询方法、系统、设备及计算机可读存储介质 | |
JP6188732B2 (ja) | マルチテナント環境におけるテナント固有のデータ・セットを管理するための、コンピュータで実施される方法、コンピュータ・プログラム製品、およびシステム | |
US6341289B1 (en) | Object identity and partitioning for user defined extents | |
US9762670B1 (en) | Manipulating objects in hosted storage | |
US20190188194A1 (en) | Metadata driven reporting and editing of databases | |
JPH10501086A (ja) | 記憶プレーン編成及びそれに基づく記憶システム | |
WO2023231665A1 (zh) | 分布式事务处理方法、系统、设备及可读存储介质 | |
US10650013B2 (en) | Access operation request management | |
CN112970011B (zh) | 记录查询优化中的谱系 | |
US11797537B2 (en) | Data processing method, data processing device and non-volatile computer-readable storage media | |
CN115328569A (zh) | 处理数据冲突的方法、系统、电子设备及计算机可读存储介质 | |
CN109597825B (zh) | 规则引擎调用方法、装置、设备及计算机可读存储介质 | |
CN112835638A (zh) | 一种基于嵌入式应用程序的配置信息管理方法及装置 | |
US7139690B2 (en) | Object-level conflict detection in an object-relational database system | |
CN102193947B (zh) | 数据访问处理方法及系统 | |
CN114629951A (zh) | 地址服务切换方法、装置、计算机设备和存储介质 | |
US11294892B2 (en) | Virtual archiving of database records | |
CN117112538B (zh) | 数据库操作方法、装置、计算机设备和存储介质 | |
CN112527911B (zh) | 一种数据存储方法、装置、设备及介质 | |
TWI484358B (zh) | 資料庫之移轉系統、方法及其電腦可讀取之媒體 | |
CN116701545A (zh) | 审计数据分析方法、装置、存储介质及处理器 | |
CN116894044A (zh) | 数据管理方法、装置、计算机设备和存储介质 | |
CN118170784A (zh) | 数据查询方法、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |