CN112069175B - 数据查询的方法、装置及电子设备 - Google Patents
数据查询的方法、装置及电子设备 Download PDFInfo
- Publication number
- CN112069175B CN112069175B CN202010866779.0A CN202010866779A CN112069175B CN 112069175 B CN112069175 B CN 112069175B CN 202010866779 A CN202010866779 A CN 202010866779A CN 112069175 B CN112069175 B CN 112069175B
- Authority
- CN
- China
- Prior art keywords
- query
- list
- index
- condition
- chain length
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000004590 computer program Methods 0.000 claims description 8
- 238000001514 detection method Methods 0.000 claims description 2
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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/2453—Query optimisation
-
- 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)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种数据查询的方法、装置及电子设备。该方法包括:预设数据库中每一链长大于预设阈值的列表的索引。接收用户输入的查询请求;所述查询请求中携带有查询条件以及目标标识。根据所述目标标识,确定所述数据库中的查询列表;所述查询列表为与所述目标标识相匹配的用户标识对应的列表。在所述查询列表的链长大于预设阈值,并且所述查询条件符合第一预设条件的情况下,以索引的方式在所述查询列表中进行查询,得到查询结果。本发明实施例无需对数据库中的每个列表设置索引,从而减少了索引的存储数据量,节省了存储空间。并且采用索引的方式在链长大于预设阈值的列表中进行查询,可以大大缩短查询时间,提升查询性能。
Description
技术领域
本发明涉及数据通信领域,尤其涉及一种数据查询的方法、装置及电子设备。
背景技术
随着互联网技术的不断发展,网络上的信息量越来越大。从而数据库中需要存储海量的数据。通常采用结构化查询语言(Structured Query Language,简称SQL)构建数据库,例如MySql或者一些其他常见的SQL产品。
为重点满足多场景下的读、写、过滤、排序等需求,可以采用分布式key-list的存储形式构建数据库,对数据进行存储。其中key为标识,list为对应标识的列表。例如key为用户标识时,list是关于该用户标识指示的用户的所有信息。通过这种存储形式可以提供更强的性能、更好的稳定性、更大的存储容量以及更低的运维成本。
然而随着业务数据的不断增多,list的链长也越来越大。而在查询list中的数据时,需要对list进行全表扫描。若list的链长过大,扫描耗时将会很长。因此,会对每个list设置一个截断阈值,当list的链长超过截断阈值时,仅扫描截断阈值数量的数据。例如list的链长为2万,截断阈值为1万,在对list进行扫描时,仅扫描list的1万条数据。但其扫描的list不够完整,返回至用户的查询结果也不够准确。并且截断阈值较大,扫描阶段阈值数量的数据,同样耗时较长。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的数据查询的方法、装置及电子设备。
一方面,本发明实施例提供了一种数据查询的方法,所述方法包括:
预设数据库中每一链长大于预设阈值的列表的索引;其中,每一列表对应一用户标识;
接收用户输入的查询请求;其中,所述查询请求中携带有查询条件以及目标标识;
根据所述目标标识,确定所述数据库中的查询列表;其中,所述查询列表为与所述目标标识相匹配的用户标识对应的列表;
在所述查询列表的链长大于预设阈值,并且所述查询条件符合第一预设条件的情况下,以索引的方式在所述查询列表中进行查询,得到查询结果。
可选的,预设数据库中每一链长大于预设阈值的列表的索引,包括:
检测所述数据库中每个用户标识对应的列表的链长;其中,所述列表的链长与所述列表中存储数据的数据量成正比例;
根据每个用户标识对应的列表的链长,确定目标列表;其中,所述目标列表为链长大于预设阈值的列表;
对每一所述目标列表创建索引。
可选的,在所述目标列表的数量为至少两个的情况下,所述对每一所述目标列表创建索引,包括:
将每个所述目标列表对应的用户标识,加入预先创建的队列中;
通过不同线程,并发执行对所述队列中各用户标识对应的目标列表创建索引。
可选的,创建索引包括:创建全量索引和创建增量索引。
可选的,在所述查询列表的链长大于预设阈值,并且所述查询条件符合第一预设条件的情况下,以索引的方式在所述查询列表中进行查询,包括:
在所述查询列表的链长大于预设阈值的情况下,确定所述查询条件中对应所述查询列表的索引的条件信息以及所述条件信息对应的索引的区分度;
在所述条件信息对应的索引的区分度大于或者等于目标区分度的情况下,将所述查询条件加入索引队列,并发执行对所述索引队列中的查询条件,采用索引的方式进行查询。
可选的,在所述查询列表的链长大于预设阈值,并且所述查询条件符合第二预设条件的情况下,以全表扫描的方式在所述查询列表中进行查询,得到查询结果。
可选的,在所述查询列表的链长大于预设阈值,并且所述查询条件符合第二预设条件的情况下,以全表扫描的方式在所述查询列表中进行查询,包括:
在所述查询列表的链长大于预设阈值,并且所述查询条件符合第二预设条件的情况下,将所述查询条件加入慢队列,并发执行对所述慢队列中的查询条件,采用全表扫描的方式进行查询;
其中,第二预设条件为所述查询条件中不存在对应所述查询列表的索引的条件信息;或者存在对应所述查询列表的索引的条件信息,且所述条件信息对应的索引的区分度小于目标区分度。
另一方面,本发明实施例还提供一种数据查询的装置,所述装置包括:
索引模块,用于预设数据库中每一链长大于预设阈值的列表的索引;其中,每一列表对应一用户标识;
接收模块,用于接收用户输入的查询请求;其中,所述查询请求中携带有查询条件以及目标标识;
确定模块,用于根据所述目标标识,确定所述数据库中的查询列表;其中,所述查询列表为与所述目标标识相匹配的用户标识对应的列表;
第一查询模块,用于在所述查询列表的链长大于预设阈值,并且所述查询条件符合第一预设条件的情况下,以索引的方式在所述查询列表中进行查询,得到查询结果。
又一方面,本发明实施例还提供一种电子设备,该电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的数据查询的方法中的步骤。
再一方面,本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的数据查询的方法中的步骤。
在本发明实施例中,通过预设数据库中每一链长大于预设阈值的列表的索引;使得数据库中具有超长链的列表设置有索引,并且无需对每个列表设置索引,从而减少了索引的存储数据量,节省了存储空间。其中,每一列表对应一用户标识。接收用户输入的查询请求;所述查询请求中携带有查询条件以及目标标识。根据所述目标标识,确定所述数据库中的查询列表;所述查询列表为与所述目标标识相匹配的用户标识对应的列表。在所述查询列表的链长大于预设阈值,并且所述查询条件符合第一预设条件的情况下,以索引的方式在所述查询列表中进行查询,得到查询结果。本发明实施例采用索引的方式在链长大于预设阈值的列表中进行查询,可以大大缩短查询时间,提升查询性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的数据查询的方法的步骤流程图;
图2为本发明实施例的设置索引的步骤流程图;
图3为本发明实施例提供的数据查询的装置的结构框图;
图4为本发明实施例提供的电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
在本发明的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
参见图1,本发明实施例提供了一种数据查询的方法,该方法包括:
步骤101,预设数据库中每一链长大于预设阈值的列表的索引。
应当说明的是,用户标识为用于区分不同列表的标识信息。每一列表对应一用户标识。不同列表对应的用户标识不同。较佳的,用户标识对应的列表中存储有同一用户的所有信息。数据库中可以采用一张数据表存储数据。较佳的,每个用户标识对应的列表为数据库中同一数据表的不同部分。
这里,链长小于或者等于预设阈值的列表可以不设置索引,通过对这些列表的全链做最近最少使用(Least Recently Used,简称LRU)缓存,从而在这些列表中查询数据时,保证全表扫描方式也有较高的性能。其中,预设阈值可以自行设定,例如可以为2万,但不限于此。
预先设置索引的时机可以为数据库中的数据表发生变化的时候,但不限于此。具体的,可以自行设定设置索引的时机。
步骤102,接收用户输入的查询请求。
应当说明的是,查询请求中携带有查询条件以及目标标识;这里的查询请求,可以为用户通过输入、点击等操作触发生成的请求。该目标标识与数据库中的用户标识相对应,例如数据库通过不同用户标识指示不同账户时,即每一用户标识对应一账户。目标标识为当前登录账户对应的用户标识。查询条件可以为用户输入的内容中的关键字,但不限于此。
步骤103,根据目标标识,确定数据库中的查询列表。
本步骤中,查询列表为与目标标识相匹配的用户标识对应的列表。较佳的,通过每一目标标识可以在数据库中确定唯一的列表,该列表对应的用户标识与目标标识相匹配。这里的相匹配可以为相同,但不限于此。
步骤104,在查询列表的链长大于预设阈值,并且查询条件符合第一预设条件的情况下,以索引的方式在查询列表中进行查询,得到查询结果。
应当说明的是,第一预设条件可以自行设定。具体的,第一预设条件可以为查询条件中包含对应查询列表中的索引的关键字,但不限于此。例如查询列表的索引包括年龄、性别;当查询条件中包含年龄时,以索引的方式在查询列表中进行查询,得到查询结果。
本发明实施例中,通过预设数据库中每一链长大于预设阈值的列表的索引;使得数据库中具有超长链的列表设置有索引,并且无需对每个列表设置索引,从而减少了索引的存储数据量,节省了存储空间。其中,每一列表对应一用户标识。接收用户输入的查询请求;查询请求中携带有查询条件以及目标标识。根据目标标识,确定数据库中的查询列表;查询列表为与目标标识相匹配的用户标识对应的列表。在查询列表的链长大于预设阈值,并且查询条件符合第一预设条件的情况下,以索引的方式在查询列表中进行查询,得到查询结果。本发明实施例采用索引的方式在链长大于预设阈值的列表中进行查询,可以大大缩短查询时间,提升查询性能。
如图2所示,上述步骤101:预设数据库中每一链长大于预设阈值的列表的索引,包括:
步骤201,检测数据库中每个用户标识对应的列表的链长。
应当说明的是,列表的链长与列表中存储数据的数据量成正比例。较佳的,列表中每条数据对应一行数据,数据量越大则列表的行数越大。因此,列表的链长可以为列表的行数。
步骤202,根据每个用户标识对应的列表的链长,确定目标列表。
这里,目标列表为链长大于预设阈值的列表。其中,目标列表的数量为至少一个。
步骤203,对每一目标列表创建索引。
应当说明的是,针对每一个目标列表都需要创建索引,这里创建的索引用于在目标列表中查询数据,并非用于查找目标列表。
较佳的,在目标列表的数量为至少两个的情况下,对每一目标列表创建索引,包括:
将每个目标列表对应的用户标识,加入预先创建的队列中;
通过不同线程,并发执行对队列中各用户标识对应的目标列表创建索引。
该队列为并行队列,利用并行队列并发执行的特点,采用不同线程同时对多个目标列表创建索引。同时利用并行队列并发限制的特定,避免同时创建索引的线程过多,从而避免消耗太多的输入输出(Input Output,简称IO)资源,影响服务的稳定性。这里在创建索引时,采用异步任务执行创建索引。通过异步任务与并行队列相结合的方式,保证了每一线程创建一目标列表的索引。
较佳的,创建索引包括:创建全量索引和创建增量索引。其中,创建全量索引为全量创建,即创建快照,扫描目标列表的全部数据,进行索引的创建。创建增量索引为增量创建,即缓存全量创建过程中,重放对目标列表进行写入和更改操作的增量请求,对更改和写入创建索引。
本发明实施例中,在接收查询请求之前,设置列表的索引即可,从而保证在根据查询请求进行查询时,可以利用列表的索引进行查询。但并非每次接收查询请求都需要先设置列表的索引。
在上述各发明实施例的基础上,本发明实施例中,在查询列表的链长大于预设阈值,并且查询条件符合第一预设条件的情况下,以索引的方式在查询列表中进行查询,包括:
在查询列表的链长大于预设阈值的情况下,确定查询条件中对应查询列表的索引的条件信息以及条件信息对应的索引的区分度;
在条件信息对应的索引的区分度大于或者等于目标区分度的情况下,将查询条件加入索引队列,并发执行对索引队列中的查询条件,采用索引的方式进行查询。
应当说明的是,可以预先设置索引的区分度,并针对每一索引项设置不同区分度。例如索引包括:时间索引项、年龄索引项、性别索引项。时间索引项可以包括大量不同的时刻,通过时间查询数据时,可以将数据缩小到一个较小的范围,因此可以设定其具有一较高的区分度。年龄索引项也可以包括很多不同的年龄,通过年龄查询数据时,也可以将数据缩小到一个较小的范围,因此也可以设定其具有一较高的区分度。性别索引项通常仅包括男和女两个性别,依据性别查询数据时,不能够将数据缩小到一个较小的范围,因此可以设定其具有一较低的区分度。目标区分度可以根据不同索引项的区分度进行设定。例如时间索引项的区分度为8、年龄索引项的区分度为6、性别索引项的区分度为2,目标区分度可以为5,但不限于此。
索引队列为并行队列。当存在多个查询请求时,索引队列中可能存在多个元素,每个元素为一查询请求的查询条件。利用并行队列并发执行的特点,采用不同线程同时响应多个查询请求。这里在进行查询时,采用异步任务执行查询。即通过异步任务获取索引队列中的查询条件,然后根据查询条件在对应的目标列表中以索引的方式进行查询。通过异步任务与并行队列相结合的方式,保证了每一线程执行一查询任务。
本发明实施例,在存在多个查询请求的情况下,通过索引队列并发执行查询操作,同时响应多个查询请求。可以缩短用户等待查询结果的时间。
在上述各发明实施例的基础上,本发明实施例中,在查询列表的链长大于预设阈值,并且查询条件符合第二预设条件的情况下,以全表扫描的方式在查询列表中进行查询,得到查询结果。
应当说明的是,在查询列表的链长大于预设阈值的情况下,根据查询条件、第一预设条件以及第二预设条件,确定具体以哪种查询方式在查询列表中进行查询。若查询条件符合第一预设条件,则查询方式选择索引的方式;若查询条件符合第二预设条件,则查询方式选择全表扫描的方式。第二预设条件可以自行设定,但其与第一预设条件不冲突,并不存在查询条件既符合第一预设条件又符合第二预设条件的情况。
具体的,在查询列表的链长大于预设阈值,并且查询条件符合第二预设条件的情况下,以全表扫描的方式在查询列表中进行查询,包括:
在查询列表的链长大于预设阈值,并且查询条件符合第二预设条件的情况下,将查询条件加入慢队列,并发执行对慢队列中的查询条件,采用全表扫描的方式进行查询;
其中,第二预设条件为查询条件中不存在对应查询列表的索引的条件信息;或者存在对应查询列表的索引的条件信息,且条件信息对应的索引的区分度小于目标区分度。
若查询条件符合第二预设条件,说明无法通过索引的方式进行查询,或者通过索引的方式进行查询也不会有太好的查询效果。
慢队列为并行队列。当存在多个查询请求时,慢队列中可能存在多个元素,每个元素为一查询请求的查询条件。利用并行队列并发执行的特点,采用不同线程同时响应多个查询请求。这里在进行查询时,采用异步任务执行查询。即通过异步任务获取慢队列中的查询条件,然后根据查询条件在对应的目标列表中以全表扫描的方式进行查询。通过异步任务与并行队列相结合的方式,保证了每一线程执行一查询任务。慢队列与索引队列为两个不同的队列,每个队列都有各自的内存使用限制和线程使用限制,这样慢队列对应的查询请求,不会影响到索引队列对应的查询请求。同时慢队列对每个查询请求的可利用资源进行了限制,即使某一查询请求为一慢请求,也不会影响其他查询请求。
在上述各发明实施例的基础上,本发明实施例中,在查询列表的链长小于或者等于预设阈值的情况下,以全表扫描的方式在查询列表中进行查询。
应当说明的是,在查询列表的链长小于或者等于预设阈值的情况下,以全表扫描的方式在查询列表中进行查询,包括:
在查询列表的链长小于或者等于预设阈值的情况下,将查询条件加入普通队列,并发执行对普通队列中的查询条件,采用全表扫描的方式进行查询。
普通队列为并行队列。当存在多个查询请求时,普通队列中可能存在多个元素,每个元素为一查询请求的查询条件。利用并行队列并发执行的特点,采用不同线程同时响应多个查询请求。这里在进行查询时,采用异步任务执行查询。即通过异步任务获取普通队列中的查询条件,然后根据查询条件在对应的目标列表中以全表扫描的方式进行查询。通过异步任务与并行队列相结合的方式,保证了每一线程执行一查询任务。普通队列、慢队列、索引队列为不同的队列,每个队列都有各自的内存使用限制和线程使用限制。
参见图3,本发明实施例还提供了一种数据查询的装置,该装置包括:
索引模块31,用于预设数据库中每一链长大于预设阈值的列表的索引;其中,每一列表对应一用户标识;
接收模块32,用于接收用户输入的查询请求;其中,查询请求中携带有查询条件以及目标标识;
确定模块33,用于根据目标标识,确定数据库中的查询列表;其中,查询列表为与目标标识相匹配的用户标识对应的列表;
第一查询模块34,用于在查询列表的链长大于预设阈值,并且查询条件符合第一预设条件的情况下,以索引的方式在查询列表中进行查询,得到查询结果。
可选的,索引模块31包括:
检测单元,用于检测数据库中每个用户标识对应的列表的链长;其中,列表的链长与列表中存储数据的数据量成正比例;
确定单元,用于根据每个用户标识对应的列表的链长,确定目标列表;其中,目标列表为链长大于预设阈值的列表;
创建单元,用于对每一目标列表创建索引。
可选的,在目标列表的数量为至少两个的情况下,创建单元,具体用于将每个目标列表对应的用户标识,加入预先创建的队列中;通过不同线程,并发执行对队列中各用户标识对应的目标列表创建索引。
可选的,创建索引包括:创建全量索引和创建增量索引。
可选的,第一查询模块34,包括:
第一查询单元,用于在查询列表的链长大于预设阈值的情况下,确定查询条件中对应查询列表的索引的条件信息以及条件信息对应的索引的区分度;
第二查询单元,用于在条件信息对应的索引的区分度大于或者等于目标区分度的情况下,将查询条件加入索引队列,并发执行对索引队列中的查询条件,采用索引的方式进行查询。
可选的,该装置还包括:第二查询模块,用于在查询列表的链长大于预设阈值,并且查询条件符合第二预设条件的情况下,以全表扫描的方式在查询列表中进行查询,得到查询结果。
可选的,第二查询模块,具体用于在查询列表的链长大于预设阈值,并且查询条件符合第二预设条件的情况下,将查询条件加入慢队列,并发执行对慢队列中的查询条件,采用全表扫描的方式进行查询;
其中,第二预设条件为查询条件中不存在对应查询列表的索引的条件信息;或者存在对应查询列表的索引的条件信息,且条件信息对应的索引的区分度小于目标区分度。
本发明实施例提供的数据查询的装置能够实现图1和图2方法实施例中数据查询的方法实现的各个过程,为避免重复,这里不再赘述。
本发明的实施例中,索引模块,用于预设数据库中每一链长大于预设阈值的列表的索引;其中,每一列表对应一用户标识。使得数据库中具有超长链的列表设置有索引,并且无需对每个列表设置索引,从而减少了索引的存储数据量,节省了存储空间。接收模块,用于接收用户输入的查询请求;其中,查询请求中携带有查询条件以及目标标识;确定模块,用于根据目标标识,确定数据库中的查询列表;其中,查询列表为与目标标识相匹配的用户标识对应的列表;第一查询模块,用于在查询列表的链长大于预设阈值,并且查询条件符合第一预设条件的情况下,以索引的方式在查询列表中进行查询,得到查询结果。本发明实施例采用索引的方式在链长大于预设阈值的列表中进行查询,可以大大缩短查询时间,提升查询性能。
另一方面,本发明实施例还提供了一种电子设备,包括存储器、处理器、总线以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述数据查询的方法中的步骤。
举个例子如下,图4示出了一种电子设备的实体结构示意图。
如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(Communications Interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,以执行如下方法:
预设数据库中每一链长大于预设阈值的列表的索引;其中,每一列表对应一用户标识;
接收用户输入的查询请求;其中,所述查询请求中携带有查询条件以及目标标识;
根据所述目标标识,确定所述数据库中的查询列表;其中,所述查询列表为与所述目标标识相匹配的用户标识对应的列表;
在所述查询列表的链长大于预设阈值,并且所述查询条件符合第一预设条件的情况下,以索引的方式在所述查询列表中进行查询,得到查询结果。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
再一方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的数据查询的方法,例如包括:
预设数据库中每一链长大于预设阈值的列表的索引;其中,每一列表对应一用户标识;
接收用户输入的查询请求;其中,所述查询请求中携带有查询条件以及目标标识;
根据所述目标标识,确定所述数据库中的查询列表;其中,所述查询列表为与所述目标标识相匹配的用户标识对应的列表;
在所述查询列表的链长大于预设阈值,并且所述查询条件符合第一预设条件的情况下,以索引的方式在所述查询列表中进行查询,得到查询结果。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种数据查询的方法,其特征在于,所述方法包括:
预设数据库中每一链长大于预设阈值的列表的索引;其中,每一列表对应一用户标识;
接收用户输入的查询请求;其中,所述查询请求中携带有查询条件以及目标标识;
根据所述目标标识,确定所述数据库中的查询列表;其中,所述查询列表为与所述目标标识相匹配的用户标识对应的列表;
在所述查询列表的链长大于预设阈值,并且所述查询条件符合第一预设条件的情况下,以索引的方式在所述查询列表中进行查询,得到查询结果;
所述查询列表的链长大于预设阈值,并且所述查询条件符合第一预设条件的情况下,以索引的方式在所述查询列表中进行查询,包括:
在所述查询列表的链长大于预设阈值的情况下,确定所述查询条件中对应所述查询列表的索引的条件信息以及所述条件信息对应的索引的区分度;
在所述条件信息对应的索引的区分度大于或者等于目标区分度的情况下,将所述查询条件加入索引队列,通过异步任务获取所述索引队列中的所述查询条件,并发执行对所述索引队列中的查询条件,采用索引的方式进行查询;
其中,所述索引队列为并行队列;
预设数据库中每一链长大于预设阈值的列表的索引,包括:
检测所述数据库中每个用户标识对应的列表的链长;其中,所述列表的链长与所述列表中存储数据的数据量成正比例;
根据每个用户标识对应的列表的链长,确定目标列表;其中,所述目标列表为链长大于预设阈值的列表;
对每一所述目标列表创建索引。
2.根据权利要求1所述的方法,其特征在于,在所述目标列表的数量为至少两个的情况下,所述对每一所述目标列表创建索引,包括:
将每个所述目标列表对应的用户标识,加入预先创建的队列中;
通过不同线程,并发执行对所述队列中各用户标识对应的目标列表创建索引。
3.根据权利要求1或2所述的方法,其特征在于,创建索引包括:创建全量索引和创建增量索引。
4.根据权利要求1所述的方法,其特征在于,在所述查询列表的链长大于预设阈值,并且所述查询条件符合第二预设条件的情况下,以全表扫描的方式在所述查询列表中进行查询,得到查询结果。
5.根据权利要求4所述的方法,其特征在于,在所述查询列表的链长大于预设阈值,并且所述查询条件符合第二预设条件的情况下,以全表扫描的方式在所述查询列表中进行查询,包括:
在所述查询列表的链长大于预设阈值,并且所述查询条件符合第二预设条件的情况下,将所述查询条件加入慢队列,并发执行对所述慢队列中的查询条件,采用全表扫描的方式进行查询;
其中,第二预设条件为所述查询条件中不存在对应所述查询列表的索引的条件信息;或者存在对应所述查询列表的索引的条件信息,且所述条件信息对应的索引的区分度小于目标区分度。
6.一种数据查询的装置,其特征在于,所述装置包括:
索引模块,用于预设数据库中每一链长大于预设阈值的列表的索引;其中,每一列表对应一用户标识;
接收模块,用于接收用户输入的查询请求;其中,所述查询请求中携带有查询条件以及目标标识;
确定模块,用于根据所述目标标识,确定所述数据库中的查询列表;其中,所述查询列表为与所述目标标识相匹配的用户标识对应的列表;
第一查询模块,用于在所述查询列表的链长大于预设阈值,并且所述查询条件符合第一预设条件的情况下,以索引的方式在所述查询列表中进行查询,得到查询结果;
其中,第一查询模块,包括:
第一查询单元,用于在查询列表的链长大于预设阈值的情况下,确定查询条件中对应查询列表的索引的条件信息以及条件信息对应的索引的区分度;
第二查询单元,用于在条件信息对应的索引的区分度大于或者等于目标区分度的情况下,将查询条件加入索引队列,通过异步任务获取所述索引队列中的所述查询条件,并发执行对索引队列中的查询条件,采用索引的方式进行查询;
其中,所述索引队列为并行队列;
所述索引模块包括:
检测单元,用于检测数据库中每个用户标识对应的列表的链长;其中,列表的链长与列表中存储数据的数据量成正比例;
确定单元,用于根据每个用户标识对应的列表的链长,确定目标列表;其中,目标列表为链长大于预设阈值的列表;
创建单元,用于对每一目标列表创建索引。
7.一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述计算机程序被所述处理器执行时实现如权利要求1至5中任一项所述的数据查询的方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5中任一项所述的数据查询的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010866779.0A CN112069175B (zh) | 2020-08-25 | 2020-08-25 | 数据查询的方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010866779.0A CN112069175B (zh) | 2020-08-25 | 2020-08-25 | 数据查询的方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112069175A CN112069175A (zh) | 2020-12-11 |
CN112069175B true CN112069175B (zh) | 2024-03-29 |
Family
ID=73660679
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010866779.0A Active CN112069175B (zh) | 2020-08-25 | 2020-08-25 | 数据查询的方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112069175B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112733001B (zh) * | 2021-01-14 | 2023-09-29 | 上海蓝云网络科技有限公司 | 获取订阅信息的方法、装置和电子设备 |
CN113064901A (zh) * | 2021-04-06 | 2021-07-02 | 北京瑞卓喜投科技发展有限公司 | 在链上合约中形成数据微型索引的方法、装置和电子设备 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902701A (zh) * | 2014-03-31 | 2014-07-02 | 北京车商汇软件有限公司 | 一种数据存储***和存储方法 |
WO2015195830A2 (en) * | 2014-06-18 | 2015-12-23 | Alibaba Group Holding Limited | Data query method and apparatus |
CN105205071A (zh) * | 2014-06-24 | 2015-12-30 | 阿里巴巴集团控股有限公司 | 一种数据表展示的方法和*** |
CN105224609A (zh) * | 2015-09-07 | 2016-01-06 | 北京金山安全软件有限公司 | 一种索引查询方法及装置 |
CN106407250A (zh) * | 2015-07-28 | 2017-02-15 | 阿里巴巴集团控股有限公司 | 信息查询方法、装置、***、服务器和客户端 |
CN108694188A (zh) * | 2017-04-07 | 2018-10-23 | 腾讯科技(深圳)有限公司 | 一种索引数据更新的方法以及相关装置 |
CN110019192A (zh) * | 2017-09-21 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 数据库的检索方法及装置 |
CN110162522A (zh) * | 2019-05-22 | 2019-08-23 | 武汉市公安局 | 一种分布式数据搜索***及方法 |
CN110347722A (zh) * | 2019-07-11 | 2019-10-18 | 软通智慧科技有限公司 | 基于HBase的数据获取方法、装置、设备及存储介质 |
CN110515990A (zh) * | 2019-07-23 | 2019-11-29 | 华信永道(北京)科技股份有限公司 | 数据查询展示方法及查询展示*** |
CN111190897A (zh) * | 2019-11-07 | 2020-05-22 | 腾讯科技(深圳)有限公司 | 信息处理方法、装置、存储介质及服务器 |
CN111209296A (zh) * | 2019-12-31 | 2020-05-29 | 航天信息股份有限公司企业服务分公司 | 数据库访问方法、装置、电子设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060294058A1 (en) * | 2005-06-28 | 2006-12-28 | Microsoft Corporation | System and method for an asynchronous queue in a database management system |
US8103658B2 (en) * | 2009-11-13 | 2012-01-24 | Oracle International Corporation | Index backbone join |
US20150220584A1 (en) * | 2014-02-03 | 2015-08-06 | Codefutures Corporation | Dynamic modification of a database data structure |
US10445433B2 (en) * | 2014-04-28 | 2019-10-15 | Venkatachary Srinivasan | Methods and systems of query engines and secondary indexes implemented in a distributed database |
-
2020
- 2020-08-25 CN CN202010866779.0A patent/CN112069175B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902701A (zh) * | 2014-03-31 | 2014-07-02 | 北京车商汇软件有限公司 | 一种数据存储***和存储方法 |
WO2015195830A2 (en) * | 2014-06-18 | 2015-12-23 | Alibaba Group Holding Limited | Data query method and apparatus |
CN105205071A (zh) * | 2014-06-24 | 2015-12-30 | 阿里巴巴集团控股有限公司 | 一种数据表展示的方法和*** |
CN106407250A (zh) * | 2015-07-28 | 2017-02-15 | 阿里巴巴集团控股有限公司 | 信息查询方法、装置、***、服务器和客户端 |
CN105224609A (zh) * | 2015-09-07 | 2016-01-06 | 北京金山安全软件有限公司 | 一种索引查询方法及装置 |
CN108694188A (zh) * | 2017-04-07 | 2018-10-23 | 腾讯科技(深圳)有限公司 | 一种索引数据更新的方法以及相关装置 |
CN110019192A (zh) * | 2017-09-21 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 数据库的检索方法及装置 |
CN110162522A (zh) * | 2019-05-22 | 2019-08-23 | 武汉市公安局 | 一种分布式数据搜索***及方法 |
CN110347722A (zh) * | 2019-07-11 | 2019-10-18 | 软通智慧科技有限公司 | 基于HBase的数据获取方法、装置、设备及存储介质 |
CN110515990A (zh) * | 2019-07-23 | 2019-11-29 | 华信永道(北京)科技股份有限公司 | 数据查询展示方法及查询展示*** |
CN111190897A (zh) * | 2019-11-07 | 2020-05-22 | 腾讯科技(深圳)有限公司 | 信息处理方法、装置、存储介质及服务器 |
CN111209296A (zh) * | 2019-12-31 | 2020-05-29 | 航天信息股份有限公司企业服务分公司 | 数据库访问方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
基于ORACLE数据库的SQL性能优化;岳彩云等;《电脑知识与技术》;第16卷(第10期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112069175A (zh) | 2020-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110321344B (zh) | 关联数据的信息查询方法、装置、计算机设备及存储介质 | |
US9575984B2 (en) | Similarity analysis method, apparatus, and system | |
US8630972B2 (en) | Providing context for web articles | |
US8136089B2 (en) | Predictive prefetching to improve parallelization of document generation subtasks | |
CN112069175B (zh) | 数据查询的方法、装置及电子设备 | |
CN108228799B (zh) | 对象索引信息的存储方法及装置 | |
EP2248055A1 (en) | Determining quality of tier assignments | |
US11386131B2 (en) | System and method for multi-language search | |
CN111104419A (zh) | 一种数据查询方法及装置 | |
CN114116762A (zh) | 一种离线数据模糊搜索方法、装置、设备和介质 | |
CN111444149A (zh) | 一种数据导入方法、装置、设备及存储介质 | |
CN113568940A (zh) | 数据查询的方法、装置、设备以及存储介质 | |
CN110018845A (zh) | 元数据版本对比方法及装置 | |
CN114281819A (zh) | 数据查询方法、装置、设备及存储介质 | |
CN106980673B (zh) | 内存数据库表索引更新方法及*** | |
CN111125158B (zh) | 数据表处理方法、装置、介质及电子设备 | |
Romero et al. | Bolt: Fast inference for random forests | |
CN114996552A (zh) | 一种数据获取方法及终端 | |
CN114064706A (zh) | 数据存储方法、装置及服务器 | |
CN110825939B (zh) | 帖子的分数生成、排序方法、装置、电子设备及存储介质 | |
CN112835932A (zh) | 业务表的批量处理方法及装置、非易失性存储介质 | |
CN116340270B (zh) | 并发遍历枚举方法、装置、设备及存储介质 | |
CN111290803B (zh) | 数据预加载方法、装置、设备及存储介质 | |
US20230018978A1 (en) | Data Layout Model Generation System | |
CN108052554A (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 |