掌桥专利:专业的专利平台
掌桥专利
首页

一种数据查询方法、装置、设备及存储介质

文献发布时间:2024-04-18 19:58:26


一种数据查询方法、装置、设备及存储介质

技术领域

本申请涉及计算机技术领域,提供了一种数据查询方法、装置、设备及存储介质。

背景技术

偏移量查询是指对数据库通过SELECT语句进行查询时使用关键字“OFFSET”来跳过指定数量的记录的查询方式,这种查询方式通常需要遍历普通索引或者记录来跳过指定偏移量的记录以实现偏移量查询,一旦偏移量过大就会为数据库带来大量的无效读写量,导致读盘量多,查询速度慢的问题。

为了解决大偏移量查询的场景下查询速度慢的问题,相关技术中存在以下两种方案:

在Tablekv中,一般通过分页查询的计数来减少查询的消耗,分页查询是将一次查询分为多次,每次查询记录下当前的结果,下一次查询根据当前的查询结果继续向后查询,从而减少单次查询的性能消耗,提高查询速度。但这种方式在跳页场景下,由于无法根据上一次的查询结果向后查询,因此还是存在需要遍历索引的情况,也即还是存在读盘量多,查询速度慢的问题。

在MYSQL8.0中,常用的优化方案是“子查询”,这种方式通过遍历索引来查询到偏移量对应的记录的主键,并且在索引遍历过程中,会过滤掉不满足查询条件的记录,从而通过减少回表次数,减少一定的读盘量。但这种方法依旧需要先遍历索引来找到偏移量对应的索引位置,才能查询到主键,因此在偏移量过大时,读盘次数和读盘量依旧较多,仍然存在查询速度慢的问题。

由此可见,在大偏移量查询的场景下,相关技术中仍然存在读盘量多,查询速度慢的问题。

发明内容

本申请实施例提供了一种数据查询方法、装置、设备及存储介质,以解决在大偏移量查询的场景下,相关技术中仍然存在读盘量多,查询速度慢的问题。

第一方面,本申请实施例提供了一种数据查询方法,包括:

接收用于获取至少一条目标数据记录的第一查询请求;所述第一查询请求至少包括:查询条件、偏移量和查询数量;遍历数据库包含的各第一范围索引,获得所述偏移量命中的目标范围索引;其中,每个第一范围索引对应一个键值,所述键值表征:相应第一范围索引关联的各索引各自对应的数据记录中,满足所述查询条件的数据记录数量;所述目标范围索引表征:在已遍历的至少一个第一范围索引的键值之和首次不小于所述偏移量时,遍历的最后一个第一范围索引;在所述目标范围索引关联的各索引中,获得符合所述偏移量的目标索引,并从所述目标索引的下一个索引开始,获取符合所述查询数量的至少一条目标数据记录。

第二方面,本申请实施例还提供了一种数据查询装置,包括:

接收单元,用于接收用于获取至少一条目标数据记录的第一查询请求;所述第一查询请求至少包括:查询条件、偏移量和查询数量;

查询单元,用于执行以下操作:

遍历数据库包含的各第一范围索引,获得所述偏移量命中的目标范围索引;其中,每个第一范围索引对应一个键值,所述键值表征:相应第一范围索引关联的各索引各自对应的数据记录中,满足所述查询条件的数据记录数量;所述目标范围索引表征:在已遍历的至少一个第一范围索引的键值之和首次不小于所述偏移量时,遍历的最后一个第一范围索引;

在所述目标范围索引关联的各索引中,获得符合所述偏移量的目标索引,并从所述目标索引的下一个索引开始,获取符合所述查询数量的至少一条目标数据记录。

一种可能的实现方式中,所述第一范围索引是索引建立单元通过以下方法建立的:根据数据库中保存的各数据记录各自包含的预设字段的取值,分别针对相应的数据记录建立索引;按照预设区间划分规则,将获得的各个索引划分为N个索引区间,并为每个索引区间建立对应的第一范围索引,得到N个第一范围索引;N≥1;其中,每个所述第一范围索引对应一个键值对,所述一个键值对以所述查询条件和相应索引区间为键,以相应索引区间中包括的满足所述查询条件的数据记录数量为键值。

一种可能的实现方式中,所述预设区间划分规则包括以下至少一种:不同索引区间的区间长度相等;不同索引区间包括的满足所述查询条件的数据记录数量之间的差值,不大于第一阈值;不同索引区间包括的满足所述查询条件的数据记录中,预设关键字的出现次数相等;在每个索引区间包括的满足所述查询条件的各数据记录中,所述预设字段的取值的最大值和最小值之差,为所述数据库包括的全部满足所述查询条件的数据记录中,所述预设字段的取值的最大值和最小值之差的1/N。

一种可能的实现方式中,所述查询单元在所述目标范围索引关联的各索引中,获得符合所述偏移量的目标索引时,用于:从所述目标范围索引关联的第一个索引开始,依次遍历所述目标范围索引关联的各索引,直至除所述目标范围索引之外的已遍历的至少一个第一范围索引的键值之和,与所述目标范围索引关联的已遍历的满足所述查询条件的索引数量的和,等于所述偏移量,获得所述目标索引;其中,所述目标索引为已遍历的索引中的最后一个索引。

一种可能的实现方式中,所述接收单元,还用于接收用于添加新增数据记录的写入请求;

数据记录写入单元,用于在所述数据库中,写入所述新增数据记录,并根据所述新增数据记录包含的预设字段的取值,建立所述新增数据记录对应的新增索引;

索引建立单元,用于在各第一范围索引中存在关联范围索引时,更新所述关联范围索引的键值;所述关联范围索引对应的索引区间包含所述新增索引;在各第一范围索引中不存在所述关联范围索引时,新建一个新增范围索引;所述新增范围索引对应的索引区间以所述新增索引为索引区间的一个端点。

一种可能的实现方式中,所述索引建立单元,还用于响应于针对所述数据库中包含的各第一范围索引触发的重建请求,执行以下范围索引重建操作:按照所述预设区间划分规则,将获得的各索引划分为M个索引区间,并为每个索引区间建立对应的第二范围索引,得到M个第二范围索引;M≥1;针对在所述范围索引重建操作的执行期间,写入的至少一条新增数据记录,分别执行以下操作:根据一个新增数据记录包含的预设字段的取值,建立所述一个新增数据记录对应的一个新增索引;在各第二范围索引中存在所述关联范围索引时,更新所述关联范围索引的键值;在各第二范围索引中不存在所述关联范围索引时,新建一个新增范围索引。

一种可能的实现方式中,在满足以下重建条件的至少一种时,重建请求触发单元针对所述至少一个第一范围索引触发重建请求:当前时间为预设时间;任意两个第一范围索引各自对应的键值之差大于第二阈值;所述数据库包含的第一范围索引的数量与所述数据库包含的索引的数量的比值大于预设门限;任意一个第一范围索引的键值,与所述任意一个第一范围索引关联的各索引各自对应的数据记录中,满足所述查询条件的数据记录数量不相等。

一种可能的实现方式中,所述接收单元,还用于:接收用于查询数据记录数量的第二查询请求;所述第二查询请求至少包括:查询范围;所述查询范围表征查询的数据记录所在的索引区间;

所述查询单元,用于将所述查询范围与各第一范围索引对应的索引区间进行比较,在各第一范围索引中包含至少一个参考范围索引时,遍历所述至少一个参考范围索引,并基于已遍历的参考范围索引的键值,获得并返回相应的数据记录数量;所述参考范围索引为:对应的索引区间包含于所述查询范围的第一范围索引;在各第一范围索引中不包含参考范围索引时,遍历位于所述查询范围内的满足所述查询条件的索引,获得并返回所述相应的数据记录数量。

第三方面,本申请实施例还提供了一种计算机设备,包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行上述任意一种数据查询方法的步骤。

第四方面,本申请实施例还提供了一种计算机可读存储介质,其包括程序代码,当程序产品在计算机设备上运行时,所述程序代码用于使所述计算机设备执行上述任意一种数据查询方法的步骤。

第五方面,本申请实施例还提供了一种计算机程序产品,包括计算机指令,计算机指令被处理器执行上述任意一种数据查询方法的步骤。

本申请有益效果如下:

本申请实施例提供了一种数据查询方法、装置、设备及存储介质,该方法包括:在接收第一查询请求之后,通过遍历数据库包含的各第一范围索引,以及目标范围索引关联的各索引,获得符合偏移量的目标索引,从而获取符合查询数量的至少一条目标数据记录。

由于本申请实施例中提出了一种第一范围索引,每个第一范围索引可以通过对应的键值表征该第一范围索引关联的各索引各自对应的数据记录中,满足查询条件的数据记录数量,来记录数据库中数据记录的分布。并且进行大偏移量查询时,可以通过遍历各第一范围索引对应的键值查找到目标索引,来跳过指定偏移量,而不是遍历指定偏移量的索引才能跳过指定偏移量。也就是说,在大偏移量查询的场景下,遍历一个第一范围索引可以相当于遍历了该第一范围索引关联的各索引,因此大大减少了需要遍历的索引数量,从而减少读盘次数和读盘量。并且由于每次读盘都需要一定的时间,因此减少了读盘次数的情况下就可以减少执行查询请求的时间延迟,从而提高查询速度。进一步的,由于执行每次查询请求时均可以减少大量的读盘次数和读盘量,因此还可以极大降低磁盘性能的损耗。

本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为本申请实施例提供的相关技术中遍历普通索引的过程示意图;

图2为本申请实施例中一种应用场景的一个可选示意图;

图3为本申请实施例提供的Tablekv读流程示意图;

图4为本申请实施例提供的Tablekv写流程示意图;

图5为本申请实施例提供的数据查询方法的流程示意图;

图6为本申请实施例提供的第一范围索引建立方法的流程示意图;

图7为本申请实施例提供的索引示意图;

图8为本申请实施例提供的第一范围索引示意图;

图9A为本申请实施例提供的目标索引的查询过程示意图;

图9B为本申请实施例提供的另一查询目标索引的过程示意图;

图10为本申请实施例提供的计数查询流程示意图;

图11A为本申请实施例提供的新增数据记录写入过程示意图之一;

图11B为本申请实施例提供的新增数据记录写入过程示意图之一;

图12为本申请实施例提供的范围索引重建期间新增数据记录写入过程示意图;

图13为本申请实施例提供的范围索引重建过程示意图;

图14为本申请实施例提供的一种数据查询装置的结构示意图;

图15为应用本申请实施例的一种计算机设备的一个硬件组成结构示意图;

图16为应用本申请实施例的另一种计算机设备的一个硬件组成结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请技术方案的一部分实施例,而不是全部的实施例。基于本申请文件中记载的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请技术方案保护的范围。

以下对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。

1)Tablekv:第三方应用后台广泛使用的一种分布式Table表格存储系统。

2)Table表格存储: 提供类似 MySQL 二维表的操作接口,如 Select、Insert、Delete、Update等。一个表可以存储多行数据,每一行以键(key)-值(value)的形式,存储多列不同类型的数据,并支持通过索引快速查找其中某几列的数据。

3)索引:对表中一列或多列的值进行排序的一种结构,通过索引可以达到快速访问表中的特定信息的效果。

4)MYSQL:是一个被业界广泛使用的开源的关系型数据库。

5)偏移量查询:指对数据库通过SELECT语句进行查询时,使用关键字“OFFSET”来跳过指定数量的数据记录。例如,语句:SELECT * FROM table_A WHERE F7 = 2 OFFSET100000 LIMIT 5,表示在表名为table_A的表中,列名为F7的列中值为2的数据记录中,跳过100000条数据记录,从第100001条数据记录开始获取5条数据记录。

6)计数查询:指查询数据库中符合要求的数据记录数量。例如,语句:SELECTCOUNT(F7) FROM table_A WHERE F7>2 AND F7<10,表示在表名为table_A的表中,查询列名为F7的列中值大于2小于10的数据记录的数量。

7)uint64:表示无符号64位整数类型的数据。

8)uint32:表示无符号32位整数类型的数据。

下面对本申请实施例的设计思想进行简要介绍:

偏移量查询这种查询方式通常需要遍历普通索引或者记录来跳过指定偏移量的记录以实现偏移量查询。如图1所示,假如偏移量为19,就需要依次遍历普通索引1-普通索引18,找到普通索引19对应的目标记录,再从目标记录开始获取指定数量的记录(普通索引1-普通索引10图中未示出)。一旦偏移量过大就会为数据库带来大量的无效读写量,导致读盘量多,查询速度慢的问题。

为了解决大偏移量查询的场景下查询速度慢的问题,相关技术中存在以下两种方案:

在Tablekv中,一般通过分页查询的计数来减少查询的消耗,分页查询是将一次查询分为多次,每次查询记录下当前的结果,下一次查询根据当前的查询结果继续向后查询,从而减少单次查询的性能消耗,提高查询速度。但这种方式在跳页场景下,由于无法根据上一次的查询结果向后查询,因此还是存在需要遍历索引的情况。例如,在直接跳到10000页,偏移量为1000000的场景下,还是需要遍历1000000条索引。通常一条索引的大小是50-100bytes,则在单个数据区块(block)大小为4K的情况下,扫描1000000条索引就需要读盘12000-25000次,由此可见,该方案还是存在读盘量多,查询速度慢的问题。

在MYSQL8.0中,常用的优化方案是“子查询”,这种方式通过遍历索引来查询到偏移量对应的记录的主键,并且在索引遍历过程中,会过滤掉不满足查询条件的记录,从而通过减少回表次数,减少一定的读盘量。但这种方法依旧需要先遍历索引来找到偏移量对应的索引位置,才能查询到主键,因此在偏移量过大时,读盘次数和读盘量依旧较多,仍然存在查询速度慢的问题。

由此可见,在大偏移量查询的场景下,相关技术中仍然存在读盘量多,查询速度慢的问题。

有鉴于此,本申请实施例提供了一种数据查询方法、装置、设备及存储介质。该方法包括:在接收用于获取至少一条目标数据记录的第一查询请求之后,遍历数据库包含的各第一范围索引,获得偏移量命中的目标范围索引。在目标范围索引关联的各索引中,获得符合偏移量的目标索引,并从目标索引的下一个索引开始,获取符合查询数量的至少一条目标数据记录。

本申请实施例中数据库包含多个第一范围索引,且每个第一范围索引可以关联多个索引,因此可以通过遍历各第一范围索引达到遍历各第一范围索引关联的各索引的效果。由于遍历一个第一范围索引相当于遍历了该第一范围索引关联的各索引,因此可以在大偏移量查询的场景下减少遍历次数,从而减少读盘次数和读盘量,减少时间延迟提高查询速度。

以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

图2示出了其中一种应用场景,包括一个物理终端设备210与一台服务器220,每个物理终端设备210通过有线网络或无线网络,与服务器220建立通信连接。物理终端设备210中可以包括客户端,查询目标数据记录对象可以通过客户端输入用于获取至少一条目标数据记录的第一查询请求,并将该第一查询请求发送到服务器220。服务器220在接收第一查询请求后可以遍历数据库包含的各第一范围索引,获得偏移量命中的目标范围索引。然后在目标范围索引关联的各索引中,获得符合偏移量的目标索引,并从目标索引的下一个索引开始,获取符合查询数量的至少一条目标数据记录。再将获取到的至少一条目标数据记录返回给物理终端设备210。

其中,本申请实施例的物理终端设备210可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能语音交互设备、智能家电、车载终端、飞行器等。等,但并不局限于此。

本申请实施例的服务器220可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content DeliveryNetwork,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器,本申请在此不做限制。

需要说明的是,在本申请实施例中,物理终端设备210的数量可以为一个,也可以为多个,同样的,服务器220的数量也可以为一个,也可以为多个,也即本申请实施例对于物理终端设备210或者服务器220的数量并不进行限制。

上述应用场景仅为示例性的,本发明实施例可应用于第三方应用后台所有业务大偏移量查询以及数据记录数量查询的场景,本发明实施例还可以应用于包括但不限于云技术、人工智能、智慧交通、辅助驾驶的各种场景。

下面,结合附图对本申请各实施例中提供的方法流程进行介绍。

一种可能的实现方式中,Tablekv中至少可以包括客户端(client)、路由服务模块(router proxy server)、框架(framework)、数据存储模块(database server,db svr)、数据一致性协议日志存储模块(paxos log server,plogsvr)。Tablekv在收到客户端的数据记录查询请求或写入请求后,整体流程可以大致分为获取路由、执行数据一致性协议的相关操作、执行实现读操作逻辑或执行实际写操作逻辑、返回执行结果四个步骤。本申请提供的数据查询方法可以应用于上述步骤中执行实现读操作逻辑或执行实际写操作逻辑的步骤。

具体的,参见图3为本申请实施例提供的Tablekv读流程示意图。

301:客户端向路由服务模块请求数据存储路由。

客户端可以响应于目标对象触发的数据记录查询请求向路由服务模块请求数据存储路由。

302:路由服务模块向客户端返回数据存储路由。

303:客户端向框架发送数据记录查询请求,并解析鉴权信息(las)和路由缓存(cookie)。

304:框架转发数据查询请求至数据存储模块。

305:数据存储模块从数据一致性协议日志存储模块拉取数据一致性协议日志。

数据存储模块中还可以进行数据一致性协议的相应执行步骤,例如Catchup等。

306:数据一致性协议日志存储模块向数据存储模块返回数据一致性协议日志。

307:数据存储模块向数据一致性协议日志存储模块提交运行数据一致性协议(RunPaxos)的请求。

308、数据一致性协议日志存储模块向数据存储模块返回运行数据一致性协议的结果。

309、数据存储模块根据数据记录查询请求执行读操作逻辑。

数据存储模块根据数据记录查询请求按照本申请实施例提供的数据查询方法执行读操作逻辑,得到数据查询结果。

310、数据存储模块将数据查询结果转发给框架。

311、框架将查询结果打包返回给客户端。

框架可以将查询结果与鉴权信息等相关信息打包,返回给客户端。

参见图4为本申请实施例提供的Tablekv写流程示意图。

401:客户端向路由服务模块请求数据存储路由。

客户端可以响应于目标对象触发的用于添加新增数据记录的写入请求,向路由服务模块请求数据存储路由。

402:路由服务模块向客户端返回数据存储路由。

403:客户端向框架发送写入请求,并解析鉴权信息和路由缓存。

404:框架转发写入请求至数据存储模块。

405:数据存储模块从数据一致性协议日志存储模块拉取数据一致性协议日志。

数据存储模块中还可以进行数据一致性协议的相应执行步骤,例如Catchup等。

406:数据一致性协议日志存储模块向数据存储模块返回数据一致性协议日志。

407:数据存储模块根据写入请求执行写操作逻辑。

数据存储模块根据写入请求按照本申请实施例提供的数据查询方法执行写操作逻辑,得到写入结果。

408、数据存储模块向数据一致性协议日志存储模块提交运行数据一致性协议的请求。

数据存储模块对写入结果进行写入批处理(writebatch),然后向数据一致性协议日志存储模块提交运行数据一致性协议的请求。

409、数据一致性协议日志存储模块向数据存储模块返回运行数据一致性协议的结果。

410、数据存储模块将写入结果转发给框架。

411、框架将写入结果打包返回给客户端。

框架可以将写入结果与鉴权信息等相关信息打包,返回给客户端。

需要说明的是,本申请实施例提供的数据查询方法不仅可以应用于Tablekv,还可以应用于其他的数据存储系统,例如MYSQL等,本申请对此不作限定。

参见图5为本申请实施例提供的数据查询方法的流程示意图,该方法可以由图2中的服务器220执行,具体实施流程可以包括以下步骤501-步骤503:

步骤501:接收用于获取至少一条目标数据记录的第一查询请求。

其中,第一查询请求至少包括:查询条件、偏移量和查询数量。查询条件指查询的数据记录需要满足的条件,偏移量指查询目标数据记录时需要跳过的数据记录的数量,查询数量为需要获取的目标数据记录的数量。

举例来说,在第一查询请求包括以下查询语句时:SELECT * FROM table WHEREF3 = ‘abc’AND F4 = 4 AND F5>1 OFFSET 1000000 LIMIT 100,查询条件可以为“F3 =‘abc’AND F4 = 4 AND F5>1”,也即查询条件为F3列的值等于 ‘abc’,并且 F4列的值等于4,并且 F5列的值大于1。偏移量为1000000,查询数量为100。

步骤502:遍历数据库包含的各第一范围索引,获得偏移量命中的目标范围索引。

其中,每个第一范围索引对应一个键值,键值表征:相应第一范围索引关联的各索引各自对应的数据记录中,满足查询条件的数据记录数量。索引与数据记录一一对应。目标范围索引表征:在已遍历的至少一个第一范围索引的键值之和首次不小于偏移量时,遍历的最后一个第一范围索引。

举例来说,假设查询条件为F2列的取值大于2,第一范围索引是按照F1列和F2列的取值建立的,索引是按照F1列的取值建立的,数据库中包括3个第一范围索引:(0,5]、(5,10]和(10,15],其中(0,5]关联的索引为1、2、3、4、5;(5,10]关联的索引为6、7、8、9、10;(10,15] 关联的索引为11、12、13、14、15。此时若(0,5]对应的键值为2,表示索引1、2、3、4、5各自对应的数据记录中,满足F2列的取值大于2的数据记录为2个。若(5,10]对应的键值为3,表示索引6、7、8、9、10各自对应的数据记录中,满足F2列的取值大于2的数据记录为3个。若(10,15]对应的键值为5,表示索引11、12、13、14、15各自对应的数据记录中,满足F2列的取值大于2的数据记录为5个。若偏移量为4,则由于(0,5]的键值为2,(5,10]的键值为3,遍历过(0,5]和(5,10]后已遍历的第一范围索引的键值之和等于5,首次不小于4,因此可以确定(5,10]为目标范围索引。

一种可能的实现方式中,数据库包含的各第一范围索引可以是服务器预先根据图6所示方法建立,具体流程可以包括步骤601-步骤602:

步骤601:根据数据库中保存的各数据记录各自包含的预设字段的取值,分别针对相应的数据记录建立索引。

其中,字段名表示列名,预设字段即为预设列,每个数据记录可以包括多个字段的取值,建立的索引可以为普通索引。例如,在一个对象信息表中,包括多个字段:记录标识、对象标识、会员服务标识、过期时间。

可选的,服务器可以按照一列字段的取值建立索引,也可以同时利用多列字段的取值建立索引。举例来说,可以按照F1列字段的取值为数据库中保存的每条数据记录分别建立索引。也可以同时按照F2、F3和F4列字段的取值为数据库中保存的每条数据记录分别建立索引。

参见图7为本申请实施例提供的索引示意图。图7中包括数据记录1、数据记录2、数据记录3、数据记录4、……数据记录n,分别为每个数据记录建立一个索引,也即为数据记录1建立一个索引1,为数据记录2建立一个索引2,为数据记录3建立一个索引3,依次类推,直至每个数据记录都包括一个对应的索引。需要说明的是,图7所示的索引1、索引2、索引3……索引n中的1、2、3……n可以用于表示索引值,也可以用于表示预设列的取值,本申请对此不作限定。

步骤602:按照预设区间划分规则,将获得的各个索引划分为N个索引区间,并为每个索引区间建立对应的第一范围索引,得到N个第一范围索引。

其中,N≥1,每个第一范围索引对应一个键值对,一个键值对以查询条件和相应索引区间为键,以相应索引区间中包括的满足查询条件的数据记录数量为键值。

举例来说,假如指定F1列,F2列, F3列的一个第一范围索引,则该第一范围索引的键(key)可以为F2=2,F3=‘abc’,0

在一些实施例中,预设区间划分规则包括以下(1)-(4)中的至少一种:

(1)不同索引区间的区间长度相等。

例如,假设索引包括索引1-索引10,要将索引区间划分为左开右闭的2个区间时,则区间长度为5时,两个索引区间的区间长度相等,因此可以按照每个区间长度为5的规则,划分为(0,5]和(5,10]的两个索引区间。

(2)不同索引区间包括的满足查询条件的数据记录数量之间的差值,不大于第一阈值。

也即,划分索引区间时使不同索引区间包括的满足查询条件的数据记录数量尽量相等,在数据记录数量无法完全相等时,可以通过设置第一阈值使不同索引区间包括的满足查询条件的记录

例如,索引包括索引1-索引100,其中包括的满足查询条件的数据记录数量为62,则将索引区间划分为左开右闭的2个区间时,可以按照每个索引区间内包括的满足查询条件的数据记录数量为31来划分索引区间。若索引1-索引100包括的满足查询条件的数据记录数量为61,则将索引区间划分为左开右闭的2个区间时,则可以将第一阈值设置为1,按照一个索引区间包括的满足查询条件的数据记录数量为30,一个索引区间包括的满足查询条件的数据记录数量为31来划分。

需要说明的是,在上述示例中第一阈值是根据索引区间的数量以及满足查询条件的数据记录数量来确定的,第一阈值还可以是根据实际情况或经验预设的,本申请对此不作限定。

(3)不同索引区间包括的满足查询条件的数据记录中,预设关键字的出现次数相等。

例如,索引包括索引1-索引100,预设关键字为A,假设该关键字在各满足查询条件的数据记录中出现30次,则将索引区间划分为左开右闭的2个区间时,可以按照A在一个索引区间包括的数据记录中出现15次来划分。

(4)在每个索引区间包括的满足查询条件的各数据记录中,预设字段的取值的最大值和最小值之差,为数据库包括的全部满足查询条件的数据记录中,预设字段的取值的最大值和最小值之差的1/N。

在一些实施例中,可以将上述(1)-(4)中的任意一条作为预设区间划分规则,也可以将(1)-(4)中的多条叠加作为预设区间划分规则。例如,可以将(1)和(2)叠加作为预设区间划分规则,也即预设区间划分规则为不同索引区间的区间长度相等且不同索引区间包括的满足查询条件的数据记录数量之间的差值,不大于第一阈值。

参见图8为本申请实施例提供的第一范围索引示意图。假设预设区间划分规则为上述(1)和(2)叠加,且数据库中符合查询条件的数据记录包括:数据记录1、数据记录2、数据记录3……数据记录15,并按照步骤602为每条数据记录分别建立索引后得到索引1、索引2、索引3……索引15。则按照预设区间划分规则,可以将索引1-索引15按照区间长度为5,数据记录数量为5的规则,划分为三个索引区间:索引1-索引5、索引6-索引10、索引11-索引15。分别为每个索引区间建立对应的第一范围索引得到三个第一范围索引:范围索引1、范围索引2、范围索引3,范围索引1对应的索引区间可以写作(0,5],范围索引2对应的索引区间可以写作(5,10],范围索引3对应的索引区间可以写作(10,15]。

需要说明的是,上述区间长度和符合查询条件的数据记录数量仅为示例性的,还可以按照其他预设的区间长度和符合查询条件的数据记录数量划分索引区间。本申请对划分索引区间时的区间长度和符合查询条件的数据记录数量不作限定。

此外,上述索引区间是按照左开右闭的格式确定的,还可以按照闭区间的格式将范围索引1对应的索引区间写作[1,5],将范围索引2对应的索引区间写作[6,10],将范围索引3对应的索引区间写作[11,15]。本申请对索引区间的格式也不作限定。

步骤503:在目标范围索引关联的各索引中,获得符合偏移量的目标索引,并从目标索引的下一个索引开始,获取符合查询数量的至少一条目标数据记录。

一种可能的实现方式中,服务器在目标范围索引关联的各索引中,获得符合偏移量的目标索引时,可以从目标范围索引关联的第一个索引开始,依次遍历目标范围索引关联的各索引,直至除目标范围索引之外的已遍历的至少一个第一范围索引的键值之和,与目标范围索引关联的已遍历的满足查询条件的索引数量的和,等于偏移量,获得目标索引。其中,目标索引为已遍历的索引中的最后一个索引。

示例性的,参见图9A为本申请实施例提供的目标索引的查询过程示意图。假设数据库中包括四个第一范围索引:范围索引1、范围索引2、范围索引3和范围索引4。范围索引1关联的索引包括索引1-索引5,范围索引2关联的索引包括索引6-索引10,范围索引3关联的索引包括索引11-索引15,范围索引4关联的索引包括索引16-索引20(其中范围索引1以及索引1-索引10在图9A中未示出)。若每个索引对应的数据记录均符合查询条件,则偏移量为18时,从范围索引1开始遍历各第一范围索引,遍历到范围索引3时确定范围索引1、范围索引2和范围索引3的键值之和为15,小于偏移量。遍历到范围索引4时,确定范围索引1、范围索引2、范围索引3和范围索引4的键值之和为20,首次大于偏移量。并且范围索引4为键值之和首次大于偏移量时,遍历的最后一个第一范围索引,因此确定范围索引4为目标范围索引。则可以目标范围索引关联的第一个索引开始,也就是从索引16开始,依次遍历索引16、索引17和索引18,在遍历到索引18时,键值之和为15,已遍历的索引数量为3,由于15与3的和等于偏移量18,因此可以确定索引18为目标索引。则可以从索引18的下一个索引,也就是索引19开始,从索引19对应的数据记录开始获取符合查询数量的目标数据记录。

一种可能的实现方式中,通过图6所示的流程建立各第一范围索引时,也可以将每个第一范围索引关联的索引设置为索引区间的右边界的索引,也即在范围索引1对应的索引区间(b,c]时,范围索引1关联的索引仅为索引c。此时,遍历到偏移量命中的目标范围索引时,将返回目标范围索引的上一个第一范围索引,并从上一个第一范围索引关联的索引开始依次遍历索引,并将除目标范围索引之外的已遍历的至少一个第一范围索引的键值之和作为上一个第一范围索引关联的索引的起始计数,每遍历一个索引将起始计数加1,得到当前的计数,当前的计数等于偏移量时,获得目标索引。

示例性的,参见图9B为本申请实施例提供的另一查询目标索引的过程示意图。假设数据库中包括四个第一范围索引:范围索引1、范围索引2、范围索引3和范围索引4。范围索引1关联的索引包括索引1-索引5,范围索引2关联的索引包括索引6-索引10,范围索引3关联的索引包括索引11-索引15,范围索引4关联的索引包括索引16-索引20(其中范围索引1以及索引1-索引10在图9B中未示出)。若每个索引对应的数据记录均符合查询条件,则偏移量为18时,从范围索引1开始遍历各第一范围索引,在遍历到范围索引4时,由于范围索引1、范围索引2、范围索引3和范围索引4的键值之和为20,首次大于偏移量。并且范围索引4为键值之和首次大于偏移量时,遍历的最后一个第一范围索引,因此确定范围索引4为目标范围索引。但由于范围索引4关联的索引为索引20,由于键值之和20大于偏移量18,因此需要返回范围索引3,从范围索引3关联的索引15开始,依次遍历索引15、索引16、索引17和索引18。并且在遍历索引15时将键值之和15作为起始计数,每遍历一个索引在起始计数加1得到当前的计数,则遍历到索引18时,当前的计数等于18,与偏移量相等,此时可以确定索引18为目标索引。则可以从索引18的下一个索引,也就是索引19开始,从索引19对应的数据记录开始获取符合查询数量的目标数据记录。

在一些实施例中,在将每个第一范围索引关联的索引设置为索引区间的右边界的索引的情况下,若偏移量的起点落在某个第一范围索引对应的索引区间的中间,则先依次遍历符合查询条件的索引,在遍历到关联第一范围索引的索引时再遍历各第一范围索引来确定目标范围索引。其中,偏移量的起点表征符合查询条件的第一条索引。也就是说,假设第一范围索引对应的索引区间为(0,b],且该第一范围索引的键值不为0,则在索引1不为符合查询条件的索引时,就可以确定偏移量的起点落在(a,b]的中间。

举例来说,范围索引1对应的索引区间为(0,20],范围索引1的键值为4,且索引3、索引4、索引8、索引20为符合查询条件的索引,则依次遍历索引3、索引4、索引8、索引20,由于索引20为范围索引1关联的索引,因此可以从范围索引1开始依次遍历数据库中的第一范围索引直至确定目标范围索引。确定目标范围索引的具体方法可以参见上述方法实施例中的相关描述,在此不再赘述。

基于上述方案,在大偏移量查询的场景下,通过建立多个第一范围索引,可以减少遍历的索引数量从而减少读盘次数,减少查询的时间延迟,提高查询速度。

一种可能的实现方式中,服务器还可以基于建立的各第一范围索引进行计数查询,具体可按照图10所示的流程执行:

步骤1001:接收用于查询数据记录数量的第二查询请求。

其中,第二查询请求至少包括:查询范围;查询范围可以表征查询的数据记录所在的索引区间。第二查询请求中还可以包括查询条件,可以用于查询在查询范围内满足查询条件的数据记录数量。

步骤1002:判断各第一范围索引中包含是否包含至少一个参考范围索引。

其中,参考范围索引为对应的索引区间包含于查询范围的第一范围索引。将查询范围与各第一范围索引对应的索引区间进行比较,若各第一范围索引中包含至少一个参考范围索引,执行步骤1003,若在各第一范围索引中不包含参考范围索引,执行步骤1004。

举例来说,假设查询范围为索引区间(0,10],若范围索引1对应的索引区间为(0,5],范围索引2对应的索引区间为(5,12],由于范围索引1对应的索引区间包含于查询范围,范围索引2对应的索引区间不包含于查询范围,因此可以确定范围索引1为参考范围索引,范围索引2不为参考范围索引。

步骤1003:遍历至少一个参考范围索引,并基于已遍历的参考范围索引的键值,获得并返回相应的数据记录数量。

在一些实施例中,若至少一个参考范围索引可以完全覆盖查询范围,则可以遍历至少一个参考范围索引,确定已遍历的参考范围索引的键值之和为相应的数据记录数量。

在另一些实施例中,若至少一个参考范围索引不可以完全覆盖查询范围,例如,查询范围为索引区间(0,12],数据库中包括的参考范围索引1对应的索引区间为(0,5],参考范围索引2对应的索引区间为(5,10],则在遍历参考范围索引1和参考范围索引2的键值后,继续遍历索引11和索引12,基于参考范围索引1和参考范围索引2的键值之和以及遍历索引11和索引12的计数得到数据记录数量。

步骤1004:遍历位于查询范围内的满足查询条件的索引,获得并返回相应的数据记录数量。

例如,查询范围为索引区间(3,8],数据库中包括的范围索引1对应的索引区间为(0,5],范围索引2对应的索引区间为(5,10],则通过遍历索引区间(3,8] 的满足查询条件的索引并计数从而获得数据记录数量。

一种可能的实现方式,服务器在通过本申请提供的数据查询方法执行图4所示的写操作逻辑时,可以按照以下流程执行:接收用于添加新增数据记录的写入请求。然后在数据库中,根据写入请求,写入新增数据记录,并根据新增数据记录包含的预设字段的取值,建立新增数据记录对应的新增索引。再在各第一范围索引中判断是否存在对应的索引区间包含该新增索引的关联范围索引。若各第一范围索引中存在关联范围索引,则可以根据新增数据记录的数量更新关联范围索引的键值。

示例性的,参见图11A为本申请实施例提供的新增数据记录写入过程示意图之一。如图11A所示,数据库中包括3个第一范围索引:范围索引1-范围索引3,其中,范围索引1对应的索引区间为(0,100],键值为50;范围索引2对应的索引区间为(100,200],键值为54;范围索引3对应的索引区间为(200,300] ,键值为48。新增数据记录为数据记录184,则可以写入该新增数据记录并根据该新增数据记录包含的预设字段的取值,建立新增数据记录对应的新增索引为索引184。由于索引184在范围索引2对应的索引区间中,则可以确定范围索引2为索引184的关联范围索引,并将范围索引2的键值加1。

若各第一范围索引中不存在关联范围索引,则新建一个新增范围索引。其中,新增范围索引对应的索引区间以新增索引为索引区间的一个端点。

示例性的,参见图11B为本申请实施例提供的新增数据记录写入过程示意图之一。如图11B所示,数据库中包括3个第一范围索引:范围索引1-范围索引3,其中,范围索引1对应的索引区间为(0,100],键值为50;范围索引2对应的索引区间为(100,200],键值为54;范围索引3对应的索引区间为(200,300] ,键值为48。新增数据记录为数据记录354,则可以写入该新增数据记录并根据该新增数据记录包含的预设字段的取值,建立新增数据记录对应的新增索引为索引354。由于索引354不在已有的任意一个第一范围索引对应的索引区间中,则可以确定各第一范围索引中不存在索引354对应的关联范围索引,则可以新建一个范围索引4作为新增范围索引,该范围索引4对应的索引区间则为(300,354],且范围索引4的键值为1。

在数据库不断写入新增数据记录时,可能增加大量的新增范围索引,然而新增范围索引对应的索引区间以新增索引为索引区间的一个端点,这就导致可以出现一个数据记录占用一个范围索引的情况。当这种情况出现过多时,就会导致即使建立了多个第一范围索引,在执行大偏移量查询时还是存在读盘量过多的问题。

为了解决这一问题,服务器可以在满足以下重建条件a)-d)中的至少一种时,针对至少一个第一范围索引触发重建请求:

a)当前时间为预设时间。

其中,预设时间可以为服务器负荷较低的时刻,例如,凌晨3点、凌晨5点等。此外,预设时间还可以根据经验或实际情况设置为其他任意时间,本申请对此不作限定。

b)任意两个第一范围索引各自对应的键值之差大于第二阈值。

也即,说明各第一范围索引中包括的数据记录的分布出现了不均衡的情况,第二阈值可以根据经验或实际情况进行设置,本申请对此不作限定。

c)数据库包含的第一范围索引的数量与数据库包含的索引的数量的比值大于预设门限。

这种情况可能是出现了频繁写入新增数据记录,且新增数据记录对应的索引均不在已有的第一范围索引对应的索引区间中。

d)任意一个第一范围索引的键值,与任意一个第一范围索引关联的各索引各自对应的数据记录中,满足查询条件的数据记录数量不相等。

在一些实施例中,重建请求还可以是目标对象手动触发的。例如,目标对象在服务器中导入数据库索引相关的配置文件后,可以通过手动触发重建请求,使得服务器可以响应于重建请求,对数据库包括的各第一范围索引执行范围索引重建操作。

一种可能的实现方式中,响应于针对数据库中包含的各第一范围索引触发的重建请求,执行以下范围索引重建操作:按照预设区间划分规则,将获得的各索引划分为M个索引区间,并为每个索引区间建立对应的第二范围索引,得到M个第二范围索引。其中,M≥1。建立第二范围索引的方法与建立第一范围索引的方法相同可以参见图6所示的方法实施例中的相关描述,在此不再赘述。

参见图12为本申请实施例提供的范围索引重建期间新增数据记录写入过程示意图。由于在执行上述范围索引重建操作期间,还可能会写入新增数据记录,因此为了避免数据混乱,服务器可以在写入新增数据记录时判断范围索引是否重建完成,若重建完成则按照上述写入流程写入该新增数据记录。若重建未完成,则暂时不对新增数据记录进行处理,等待范围索引重建完成后,将新增数据记录写入重建后的范围索引中。

具体的,针对在范围索引重建操作的执行期间,写入的至少一条新增数据记录,分别执行以下操作:根据一个新增数据记录包含的预设字段的取值,建立一个新增数据记录对应的一个新增索引。在各第二范围索引中存在关联范围索引时,更新关联范围索引的键值。在各第二范围索引中不存在关联范围索引时,新建一个新增范围索引。

此外,参见图13为本申请实施例提供的范围索引重建过程示意图,如图13所示在范围索引重建操作的执行期间接收到查询请求1时,可以按照重建前的各第一范围索引执行该查询请求1。在范围索引重建操作执行完成后,接收到查询请求2时,可以按照重建后的各第二范围索引执行该查询请求2。

下面以一个具体实施例,对本申请提供的数据查询方法的性能表现进行介绍:在数据库中建立一个测试表,测试表包括五列,其中,第一列为主键,数据格式为uint64, 第二、四、五列数据格式为uint32,第三列数据格式为字符串(string)。先在测试表中插入150w条数据记录,每条数据记录的主键按照顺序递增,同时用第三、四、五列的取值为每个数据记录分别建立索引和并按照每1000条数据记录建立一个第一范围索引的规则建立多个第一范围索引。

在Tablekv上可以接收第一查询请求,第一查询请求包括查询语句:SELECT *FROM table WHERE F3 = ‘abc’ AND F4 = 4 AND F5>1 ORDER BY F5 OFFSET 1000000LIMIT 100。该查询语句表示在table表中查询F3列的值为‘abc’,F4列的值为4且F5列的值大于1的数据记录,并且按照F5列进行排序的情况下跳过1000000条符合上述查询条件的数据记录,并获取100条符合上述查询条件的数据记录。在Tablekv下分别利用第一范围索引和普通索引进行上述查询语句进行大偏移量查询时的性能表现对比可以如表1所示。

表1

在Tablekv上也可以接收第二查询请求,第二查询请求可以包括查询语句:SelectCount(*) FROM table WHERE F3 = ‘abc’ AND F4 = 4 AND F5>1000000 AND F5<1200000。该查询语句表示在table表中查询满足F3列的值为‘abc’,F4列的值为4且F5列的值大于1000000小于1200000的数据记录数量。在Tablekv下分别利用第一范围索引和普通索引进行上述查询语句进行数据记录数量查询时的性能表现对比可以如表2所示。

表2

由此可见,通过本申请实施例提供的数据查询方法可以在大偏移量查询以及数据记录数量查询的场景下可以大大减少读盘次数,降低了磁盘的性能损耗并且缩短了读盘时间减少了时间延迟。

与上述方法实施例基于同一发明构思,本申请实施例还提供了一种数据查询装置。如图14所示数据查询装置1400可以包括接收单元1401、查询单元1402、索引建立单元1403、数据记录写入单元1404、索引建立单元1405、重建请求触发单元1406。

接收单元1401,用于接收用于获取至少一条目标数据记录的第一查询请求;第一查询请求至少包括:查询条件、偏移量和查询数量;

查询单元1402,用于执行以下操作:

遍历数据库包含的各第一范围索引,获得偏移量命中的目标范围索引;其中,每个第一范围索引对应一个键值,键值表征:相应第一范围索引关联的各索引各自对应的数据记录中,满足查询条件的数据记录数量;目标范围索引表征:在已遍历的至少一个第一范围索引的键值之和首次不小于偏移量时,遍历的最后一个第一范围索引;

在目标范围索引关联的各索引中,获得符合偏移量的目标索引,并从目标索引的下一个索引开始,获取符合查询数量的至少一条目标数据记录。

一种可能的实现方式中,第一范围索引是索引建立单元1403通过以下方法建立的:根据数据库中保存的各数据记录各自包含的预设字段的取值,分别针对相应的数据记录建立索引;按照预设区间划分规则,将获得的各个索引划分为N个索引区间,并为每个索引区间建立对应的第一范围索引,得到N个第一范围索引;N≥1;其中,每个第一范围索引对应一个键值对,每个键值对,以查询条件和相应索引区间为键,以相应索引区间中包括的满足查询条件的数据记录数量为键值。

一种可能的实现方式中,预设区间划分规则包括以下至少一种:不同索引区间的区间长度相等;不同索引区间包括的满足查询条件的数据记录数量之间的差值,不大于第一阈值;不同索引区间包括的满足查询条件的数据记录中,预设关键字的出现次数相等;在每个索引区间包括的满足查询条件的各数据记录中,预设字段的取值的最大值和最小值之差,为数据库包括的全部满足查询条件的数据记录中,该预设字段的取值的最大值和最小值之差的1/N。

一种可能的实现方式中,查询单元1402在目标范围索引关联的各索引中,获得符合偏移量的目标索引时,用于:从目标范围索引关联的第一个索引开始,依次遍历目标范围索引关联的各索引,直至除目标范围索引之外的已遍历的至少一个第一范围索引的键值之和,与目标范围索引关联的已遍历的满足查询条件的索引数量的和,等于偏移量时,获得目标索引;其中,该目标索引为已遍历的索引中的最后一个索引。

一种可能的实现方式中,接收单元1401,还用于接收用于添加新增数据记录的写入请求;

数据记录写入单元1404,用于在数据库中,写入新增数据记录,并根据新增数据记录包含的预设字段的取值,建立新增数据记录对应的新增索引;

索引建立单元1405,用于在各第一范围索引中存在关联范围索引时,更新关联范围索引的键值;其中,关联范围索引对应的索引区间包含新增索引;在各第一范围索引中不存在上述关联范围索引时,新建一个新增范围索引;其中,新增范围索引对应的索引区间以新增索引为索引区间的一个端点。

一种可能的实现方式中,索引建立单元1405,还用于响应于针对数据库中包含的各第一范围索引触发的重建请求,执行以下范围索引重建操作:按照预设区间划分规则,将获得的各索引划分为M个索引区间,并为每个索引区间建立对应的第二范围索引,得到M个第二范围索引;M≥1;针对在范围索引重建操作的执行期间,写入的至少一条新增数据记录,分别执行以下操作:根据一个新增数据记录包含的预设字段的取值,建立该一个新增数据记录对应的一个新增索引;在各第二范围索引中存在关联范围索引时,更新关联范围索引的键值;在各第二范围索引中不存在关联范围索引时,新建一个新增范围索引。

一种可能的实现方式中,在满足以下重建条件的至少一种时,重建请求触发单元1406针对至少一个第一范围索引触发重建请求:当前时间为预设时间;任意两个第一范围索引各自对应的键值之差大于第二阈值;数据库包含的第一范围索引的数量与数据库包含的索引的数量的比值大于预设门限;任意一个第一范围索引的键值,与任意一个第一范围索引关联的各索引各自对应的数据记录中,满足查询条件的数据记录数量不相等。

一种可能的实现方式中,接收单元1401,还用于:接收用于查询数据记录数量的第二查询请求;第二查询请求至少包括:查询范围;其中,查询范围表征查询的数据记录所在的索引区间;

查询单元1402,用于将上述查询范围与各第一范围索引对应的索引区间进行比较,在各第一范围索引中包含至少一个参考范围索引时,遍历至少一个参考范围索引,并基于已遍历的参考范围索引的键值,获得并返回相应的数据记录数量;其中,参考范围索引为:对应的索引区间包含于查询范围的第一范围索引;在各第一范围索引中不包含参考范围索引时,遍历位于查询范围内的满足查询条件的索引,获得并返回相应的数据记录数量。

为了描述的方便,以上各部分按照功能划分为各单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件或硬件中实现。

在介绍了本申请示例性实施方式的数据查询方法和装置之后,接下来,介绍根据本申请的另一示例性实施方式的计算机设备。

所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

与上述方法实施例基于同一发明构思,本申请实施例中还提供了一种计算机设备。在一种实施例中,该计算机设备可以是服务器,如图2所示的服务器220。在该实施例中,计算机设备1500的结构如图15所示,可以至少包括存储器1501、通讯模块1503,以及至少一个处理器1502。

存储器1501,用于存储处理器1502执行的计算机程序。存储器1501可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及运行即时通讯功能所需的程序等;存储数据区可存储各种即时通讯信息和操作指令集等。

存储器1501可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器1501也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);或者存储器1501是能够用于携带或存储具有指令或数据结构形式的期望的计算机程序并能够由计算机存取的任何其他介质,但不限于此。存储器1501可以是上述存储器的组合。

处理器1502,可以包括一个或多个中央处理单元(central processing unit,CPU)或者为数字处理单元等等。处理器1502,用于调用存储器1501中存储的计算机程序时实现上述数据查询方法。

通讯模块1503用于与终端设备和其他服务器进行通信。

本申请实施例中不限定上述存储器1501、通讯模块1503和处理器1502之间的具体连接介质。本申请实施例在图15中以存储器1501和处理器1502之间通过总线1504连接,总线1504在图15中以粗线描述,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线1504可以分为地址总线、数据总线、控制总线等。为便于描述,图15中仅用一条粗线描述,但并不描述仅有一根总线或一种类型的总线。

存储器1501中存储有计算机存储介质,计算机存储介质中存储有计算机可执行指令,计算机可执行指令用于实现本申请实施例的数据查询方法。处理器1502用于执行上述的数据查询方法,如图5所示。

在另一种实施例中,计算机设备也可以是其他计算机设备,如图2所示的物理终端设备210。在该实施例中,计算机设备的结构可以如图16所示,包括:通信组件1610、存储器1620、显示单元1630、摄像头1640、传感器1650、音频电路1660、蓝牙模块1670、处理器1680等部件。

通信组件1610用于与服务器进行通信。在一些实施例中,可以包括电路无线保真(Wireless Fidelity,WiFi)模块,WiFi模块属于短距离无线传输技术,电子设备通过WiFi模块可以帮助对象收发信息。

存储器1620可用于存储软件程序及数据。处理器1680通过运行存储在存储器1620的软件程序或数据,从而执行物理终端设备210的各种功能以及数据处理。存储器1620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。存储器1620存储有使得物理终端设备210能运行的操作系统。本申请中存储器1620可以存储操作系统及各种应用程序,还可以存储执行本申请实施例数据查询方法的计算机程序。

显示单元1630还可用于显示由对象输入的信息或提供给对象的信息以及物理终端设备210的各种菜单的图形用户界面(graphical user interface,GUI)。具体地,显示单元1630可以包括设置在终端设备210正面的显示屏1632。其中,显示屏1632可以采用液晶显示器、发光二极管等形式来配置。显示单元1630可以用于显示本申请实施例中的缺陷检测界面、模型训练界面等。

显示单元1630还可用于接收输入的数字或字符信息,产生与物理终端设备210的对象设置以及功能控制有关的信号输入,具体地,显示单元1630可以包括设置在终端设备210正面的触控屏1631,可收集对象在其上或附近的触摸操作,例如点击按钮,拖动滚动框等。

其中,触控屏1631可以覆盖在显示屏1632之上,也可以将触控屏1631与显示屏1632集成而实现物理终端设备210的输入和输出功能,集成后可以简称触摸显示屏。本申请中显示单元1630可以显示应用程序以及对应的操作步骤。

摄像头1640可用于捕获静态图像,对象可以将摄像头1640拍摄的图像通过应用发布。摄像头1640可以是一个,也可以是多个。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给处理器1680转换成数字图像信号。

物理终端设备还可以包括至少一种传感器1650,比如加速度传感器1651、距离传感器1652、指纹传感器1653、温度传感器1654。终端设备还可配置有陀螺仪、气压计、湿度计、温度计、红外线传感器、光传感器、运动传感器等其他传感器。

音频电路1660、扬声器1661、传声器1662可提供对象与终端设备210之间的音频接口。音频电路1660可将接收到的音频数据转换后的电信号,传输到扬声器1661,由扬声器1661转换为声音信号输出。物理终端设备210还可配置音量按钮,用于调节声音信号的音量。另一方面,传声器1662将收集的声音信号转换为电信号,由音频电路1660接收后转换为音频数据,再将音频数据输出至通信组件1610以发送给比如另一物理终端设备210,或者将音频数据输出至存储器1620以便进一步处理。

蓝牙模块1670用于通过蓝牙协议来与其他具有蓝牙模块的蓝牙设备进行信息交互。例如,物理终端设备可以通过蓝牙模块1670与同样具备蓝牙模块的可穿戴电子设备(例如智能手表)建立蓝牙连接,从而进行数据交互。

处理器1680是物理终端设备的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器1620内的软件程序,以及调用存储在存储器1620内的数据,执行终端设备的各种功能和处理数据。在一些实施例中,处理器1680可包括一个或多个处理单元;处理器1680还可以集成应用处理器和基带处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,基带处理器主要处理无线通信。可以理解的是,上述基带处理器也可以不集成到处理器1680中。本申请中处理器1680可以运行操作系统、应用程序、用户界面显示及触控响应,以及本申请实施例的数据查询方法。另外,处理器1680与显示单元1630耦接。

此外需要注意的是,在本申请的具体实施方式中,涉及到与数据查询等相关的对象数据,当本申请以上实施例运用到具体产品或技术中时,需要获得对象许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。

在一些可能的实施方式中,本申请提供的数据查询方法的各个方面还可以实现为一种程序产品的形式,其包括计算机程序,当程序产品在计算机设备上运行时,计算机程序用于使计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的数据查询方法中的步骤,例如,计算机设备可以执行如图5中所示的步骤。

程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体地例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

本申请的实施方式的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括计算机程序,并可以在电子设备上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被命令执行系统、装置或者器件使用或者与其结合使用。

可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由命令执行系统、装置或者器件使用或者与其结合使用的程序。

可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的计算机程序,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。计算机程序可以完全地在用户计算机设备上执行、部分地在用户计算机设备上执行、作为一个独立的软件包执行、部分在用户计算机设备上部分在远程计算机设备上执行、或者完全在远程计算机设备上执行。在涉及远程计算机设备的情形中,远程计算机设备可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算机设备,或者,可以连接到外部计算机设备(例如利用因特网服务提供商来通过因特网连接)。

应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。

此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用计算机程序的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序命令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序命令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的命令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序命令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的命令产生包括命令装置的制造品,该命令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序命令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的命令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

相关技术
  • 一种数据查询方法、装置、电子设备及存储介质
  • 一种数据查询方法、装置、电子设备及存储介质
  • 一种元数据查询方法、装置、设备及计算机可读存储介质
  • 一种电子发票的查询方法、装置、设备和存储介质
  • 一种非定点对象查询方法、装置、终端设备及存储介质
  • 数据存储方法和装置、数据查询方法和装置、数据结构、电子设备及计算机可读存储介质
  • 数据存储设备、数据查询方法、装置、服务器及存储介质
技术分类

06120116489563