CN110069523B - 一种数据查询方法、装置和查询系统 - Google Patents

一种数据查询方法、装置和查询系统 Download PDF

Info

Publication number
CN110069523B
CN110069523B CN201711183626.0A CN201711183626A CN110069523B CN 110069523 B CN110069523 B CN 110069523B CN 201711183626 A CN201711183626 A CN 201711183626A CN 110069523 B CN110069523 B CN 110069523B
Authority
CN
China
Prior art keywords
key
query
main
data
main key
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
Application number
CN201711183626.0A
Other languages
English (en)
Other versions
CN110069523A (zh
Inventor
敬少强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201711183626.0A priority Critical patent/CN110069523B/zh
Publication of CN110069523A publication Critical patent/CN110069523A/zh
Application granted granted Critical
Publication of CN110069523B publication Critical patent/CN110069523B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2425Iterative querying; Query formulation based on the results of a preceding query
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种数据查询方法、装置和查询系统。所述方法包括:根据数据查询请求中的多个查询主键,确定所述查询请求的起始主键和结束主键,所述多个查询主键对应不同的权重;根据所述起始主键和结束主键确定的查询范围,确定分区的分区起始主键和分区结束主键;以所述分区起始主键作为起始位置,按照查询主键的权重顺序分别对查询主键进行数据迭代读取;获取所述分区的数据读取集合。利用本申请各个实施例,可以降低非关系型数据库中多主键联合范围查询时的高耗时、降低额外消耗空间等,提高非关系型数据库的数据查询效率。

Description

一种数据查询方法、装置和查询系统
技术领域
本申请属于计算机数据处理技术领域,尤其涉及一种数据查询方法、装置和查询系统。
背景技术
着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS(Social Networking Services,社交网络服务)类型的web2.0纯动态网站的数据存储及读写已经显得力不从心,暴露了很多难以克服的问题。而非关系型的数据库(NoSQL数据库)则由于其本身的特点得到了非常迅速的发展。NoSQL数据库解决了大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
在NoSQL数据库系统中,例如MongoDB、HBase、DynamoDB等,当需要在多主键上进行联合范围查询时(例如在多个主键列上指定范围进行查询,返回数据设置为需要满足各个主键都要符合指定主键范围内的要求),目前通用的解决方案存在耗时多、读取大量额外无用数据、消耗额外空间等缺点。例如,当需要在多主键上联合查询范围时,目前通用的解决方案主要使用下面的两类:
A:范围读+过滤。先范围读取最大数据集范围(即各主键的起始键拼成一个键,这个键为最大数据集范围的起始键,各主键的结束键拼成一个键,这个键为最大数据集范围的结束键)内的所有数据,然后再通过各主键上的过滤条件进行过滤筛选。
B:先过滤+多行批量读。写数据的时候,预先对每一个主键建立一个索引。当读取的时候,先通过索引数据过滤出满足条件的行主键,然后再通过多行批量读接口读取数据。
在A方式中,由于需要先范围读取最大数据集范围内的所有数据,然后通过各主键上的过滤条件进行过滤筛选,所以这种方案需要额外读取大量数据,不仅需要消耗大量机器资源,而且耗时很多。同时这种方案需要在读取到的最大数据集上做两轮处理,第一轮读数据处理,第二轮条件过滤,这多出的一轮处理会额外增大处理耗时。尤其是当数据集很大时,这种方案的耗时和资源消耗常常会导致超过系统承受能力,导致系统不可用。具体的示例中,例如两个主键A指定起始键为A1B1、结束键为A2B2,结果里面会查询到A1B3,A1B4的数据,但这些数据就是多余的、没用的数据,第二轮处理时再过滤掉。而B方式中,需要先通过索引数据过滤出需要读取行的主键,然后再通过多行批量读接口读取数据,这种方案要在写入数据的时候创建索引,会消耗额外的存储空间,额外的处理耗时,并且还需要考虑数据和索引之间的一致性问题。这种方案也需要做两轮处理才能读取到满足条件的数据。
因此,在NoSQL数据库系统中,亟需一种更加高效、低耗的数据查询方法。
发明内容
本申请目的在于提供一种数据查询方法、装置和查询系统,可以降低非关系型数据库中多主键联合范围查询时的高耗时、降低额外消耗空间等,提高非关系型数据库的数据查询效率。
本申请提供的一种数据查询方法、装置和查询系统是这样实现的:
一种数据查询方法,所述方法包括:
根据数据查询请求中的多个查询主键,确定所述查询请求的起始主键和结束主键,所述多个查询主键对应不同的权重;
根据所述起始主键和结束主键确定的查询范围,确定分区的分区起始主键和分区结束主键;
以所述分区起始主键作为起始位置,按照查询主键的权重顺序分别对查询主键进行数据迭代读取,所述迭代读取包括读取迭代的查询主键以及次主键所约束的范围内的数据,所述次主键包括权重低于所述迭代的查询主键的查询主键;
获取所述分区的数据读取集合。
一种数据查询装置,包括至少一个处理器和用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现:
根据数据查询请求中的多个查询主键,确定所述查询请求的起始主键和结束主键,所述多个查询主键对应不同的权重;
根据所述起始主键和结束主键确定的查询范围,确定分区的分区起始主键和分区结束主键;
以所述分区起始主键作为起始位置,按照查询主键的权重顺序分别对查询主键进行数据迭代读取,所述迭代读取包括读取迭代的查询主键以及次主键所约束的范围内的数据,所述次主键包括权重低于所述迭代的查询主键的查询主键;
获取所述分区的数据读取集合。
一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现以下步骤:
根据数据查询请求中的多个查询主键,确定所述查询请求的起始主键和结束主键,所述多个查询主键对应不同的权重;
根据所述起始主键和结束主键确定的查询范围,确定分区的分区起始主键和分区结束主键;
以所述分区起始主键作为起始位置,按照查询主键的权重顺序分别对查询主键进行数据迭代读取,所述迭代读取包括读取迭代的查询主键以及次主键所约束的范围内的数据,所述次主键包括权重低于所述迭代的查询主键的查询主键;
获取所述分区的数据读取集合。
一种非关系型数据库系统,提供数据查询接口,用于非关系型数据库中多个查询主键的联合查询,所述数据查询接口实现本申请说明书中任意一项所述方法的步骤;
或者,包括本申请说明书中任意一项所述的装置。
本申请提供的一种数据查询方法、装置和查询系统的实施方案,提供一种新的在非关系型数据库上进行多个主键查询的处理方式,可以在查询过程中不需要借助辅助数据、不需要读取额外的无用数据,执行一轮数据库的数据读取即可获取查询的数据。利用本申请实施方案,可以降低非关系型数据库中多主键范围查询的高耗时、降低额外消耗空间等,提高非关系型数据库的数据查询效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请所述一种数据查询方法一种实施例的方法流程图;
图2是本申请所述方法的另一种实施例的方法流程示意图;
图3是本申请一个实施场景中数据库分区的示意图;
图4是本申请提供的一种数据查询装置一种实施例的模块结构示意图;
图5是本申请提供的一种非关系型数据库系统的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
图1是本申请所述一种数据查询方法一种实施例的方法流程图。虽然本申请提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者部分合并后更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本申请实施例或附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置、服务器、数据库系统或终端机等产品应用时,可以按照实施例或者附图所示的方法或模块结构进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至包括分布式处理、服务器集群、分布式数据库等的实施环境)。
本申请以一种表格数据库(TableStore)的多主键联合范围查询为实施场景对本申请实施方案进行说明。所述的表格数据库TableStore为一种构建在分布式系统之上的NoSQL数据存储,可以提供海量结构化数据的存储和实时访问。应用可以通过API(Application Programming Interface,应用程序编程接口)/SDK(Software DevelopmentKit,软件开发工具包)或者操作管理控制台来使用表格存储服务。但是,本领域技术人员能够理解到,可以将本方案的实质精神应用到其他采用多主键联合范围查询非关系型数据库的场景下,以实现无需读取多主键联合范围查询范围外的无用数据,不需要额外的辅助数据(如索引),可以在一轮数据库的数据读取之后获取所需查询的数据,降低查询消耗时间和内存消耗,提高查询效率。
本实施例应用场景的表格数据库中,一个表在创建的时候需要定义主键,查询主键可以由多列组成,通常会选择主键的第一列作为分区键。当表的大小逐渐增大后,表会分裂,由原来存储数据的一个分区自动分裂成多个分区。触发分裂的因素会有很多,其中一个因素是数据量。因此表分裂后可以形成多个数据存储的分区,每个分区会负责某个独立的分区键范围内的数据,每个分区管理的分片键范围通常是无重合的,且范围是连续的。在后端会根据写入数据行的分区键的范围,来定位到是哪个分区。在表格数据库中进行范围查询时,可以指定两个查询主键,一个作为范围查询的起始(开区间,包含起始主键),另一个作为范围查询的终止(闭区间,不包含结束主键)。本领域技术人员可以理解的是,现有的表格数据库的实际处理中,虽然指定了范围查询的各个主键的查询范围,但在NoSQL数据读取过程并不是同时满足各个查询主键的条件查询。
本申请提供的可以用于NoSQL数据库范围查询方式区别于现有常规的查询方式,为一种新的联合主键上的范围查询方式。一般的,NoSQL数据库提供查询接口,在范围查询时可以将指定的各个主键的起始键和结束键通过查询接口输入数据库查询的处理单元,确定联合查询请求的出起始主键和结束主键。例如,本实施例中可以基本申请实施方案设置新的查询接口(如rectangle_query,矩形查询或范围查询),在该查询接口中可以指定各个查询主键的起始键和各个查询主键的结束键。例如一个示例中,使用4个主键A、B、C、D进行范围查询,通过查询接口输入每个主键的起始键和结束键,分别为A5-A12、B6-B6、C6-C8、D6-D9。然后可以在所述查询接口中根据各个查询主键的起始键和结束键组合生成联合查询的起始主键和结束主键,如起始主键可以为(A5,B6,C6,D6),对应的结束主键可以为(A12,B6,C8,D9)。当然,本申请不排除其他的实施例中,所述查询接口也可以接收数据查询请求,所述数据查询请求中可以直接包括用户设置好的范围查询的起始主键和结束主键,例如,用户可以直接在所述查询接口中输入起始主键(A5,B6,C6,D6)和结束主键(A12,B6,C8,D9),这种情况仍然可以视为根据数据查询请求中的多个查询主键,确定所述查询请求的起始主键和结束主键的实施方式之一,即数据查询请求中已经包括了根据多个查询主键确定好的起始主键和结束主键的数据信息。
需要说明的是,通常分布式数据库中范围查询默认的规则是主键查询范围为前闭后开区间,这个规则适用的范围通常包括起始主键,但不包括结束主键。在本申请的一些实施例中可以采用上述规则,但本申请其他的实施方式不受上述规则限制。
具体的一种实施例如图1所示,本申请提供的一种数据查询方法的一种实施例中,所述方法可以包括:
S1:根据数据查询请求中的多个查询主键,确定所述查询请求的起始主键和结束主键,所述多个查询主键对应不同的权重。
本实施例所述的NoSQL数据库范围查询区别与现有常规的查询方式,为一种新的联合主键上的范围查询方式。一般的,NoSQL数据库提供查询接口,在范围查询时可以将指定的各个主键的起始键和结束键通过查询接口输入数据库查询的处理单元,确定联合查询请求的出起始主键和结束主键。例如,本实施例中可以基本申请实施方案设置新的查询接口(如rectangle_query,矩形查询或范围查询),所述查询接口可以与数据库中进行数据查询的前端处理机(或称为前端机)进行交互,所述前端机可以接收数据查询请求。在该查询接口中可以指定各个查询主键的起始键和各个主键的结束键。例如一个示例中,使用4个查询主键A、B、C、D进行范围查询,可以通过查询接口输入每个查询主键的起始键和结束键,分别为A5-A12、B6-B6、C6-C8、D6-D9。
获取了NoSQL数据库范围查询的各个主键的起始键和结束键之后,可以将各个查询主键的起始键和组成本次数据查询请求的起始主键、各个查询主键的结束键组成本次数据查询请求的结束主键。如上述A、B、C、D四个查询主键组成的起始主键为(A5,B6,C6,D6)、结束主键为(A12,B6,C8,D9)。本申请的一个实施例中,所述确定所述查询请求的起始主键和结束主键,可以包括:
所述数据查询请求中包括至少两个查询主键,且,
将所述数据查询请求中所包括的查询主键的起始键按照键位顺序组合成所述起始主键,所包括的查询主键的结束键按照所述键位顺序组合成所述结束主键;
或者,将所述数据查询请求中所包括的查询主键的结束键按照键位顺序组合成所述起始主键,所包括的查询主键的起始键按照所述键位顺序组合成所述结束主键。
如前所述,用户可以直接在查询接口中输入起始主键和结束主键,因此一些实施例中,所述确定所述查询请求的起始主键和结束主键,可以包括:
从所述数据查询请求中读取起始主键和结束主键。
各个查询主键进行组合时,一些实施例中可以考虑主键中的分区主键,或者各个查询主键在表中列的排序位置,例如一些实施例中可以基于分区主键或主键的优先级顺序(如主键所在列号越小优先级越高)确定各个查询主键的排列位置。为了确定后续对查询主键进行迭代处理的顺序,本说明书提供一些实施例中可以设置在范围查询中起始主键和结束主键不同排列位置的查询主键对应不同的权重。
具体的一个示例,例如起始主键为(A5,B6,C6,D6),查询主键A、B、C、D在起始主键从左到右相应的第1位置、第2位置、第3位置、第4位置的权重分别为P1、P2、P3、P4。其中P1、P2、P3、P4各不相同,以避免在一些实施例中无法确定数据迭代的查询主键的执行顺序。上述的四个查询主键A、B、C、D对应排列位置的权重P1、P2、P3、P4的大小顺序可以为:P1<P2<P3<P4,或者P1>P2>P3>P4。当然,其他的实施例中也可以无需按照从左到右或从右到左的权重递增或递减顺序,一些实施例中可以指定起始主键和结束主键中排列位置的权重,例如可以为P2>P1>P3>P4。需要注意的是,这里的权重通常描述的是起始主键中各个查询主键的权重,结束主键中各个查询主键的排列位置与在起始主键中的排列位置相对应,相应的权重也对应,因此对于结束主键的描述不再赘述。
另外,需要说明的是,在本实施例实施场景中,分布式数据库中范围查询默认的规则是主键查询范围为前闭后开区间。当然,本申请实施方案不限于此,其他的应用场景中起始主键和结束主键为前开后开或前开后闭或前闭后闭等,同样可以适用本申请提供的实施方案。
S2:根据所述起始主键和结束主键确定的查询范围,确定分区的分区起始主键和分区结束主键。
获取了数据查询请求的起始主键和结束主键后,可以确定需要在数据库的哪些分区进行数据查询。如前述所述,NoSQL数据库的表存储的数据量到达一定存储量时(一般是数据行达到一定的上限值)可以分裂出多个分区。当查询的表存在多个分区时,可以根据所述起始主键和结束主键确定的查询范围请求确定需要在哪些分区进行数据查询,以及每个需要查询的分区各自的分区查询范围,每个分区查询范围具体的包括对应分区的分区起始主键和分区结束主键。例如存在两个分区P1和P2,当数据查询请求的数据范围同时包括P1和P2两个分区的数据时,如结束主键为(12000,9000),则可以确定本次查询的分区为P1和P2。并可以根据每个分区的数据分布以及确定的起始主键和/或结束主键确定各个分区的分区查询范围,所述的分区查询范围同样可以包括多个查询主键,具体的组合规则可以参照前述数据库范围查询时的起始主键和结束主键,在此表示的为对应分区的分区起始主键和分区结束主键。如一个示例中,分区起始主键为(5000,6000),则可以确定在查询分区P1中的分区查询范围为(5000,6000)到(9999,max),在查询分区P2中的分区查询范围为(10000,min)至(12000,9000),max和min分别是对应分区的最大行标号和最小行标号。
如上述,起始主键和结束主键中不同排列位置的查询主键对应不同的权重,相应的对应在各个分区的分区起始主键和结束主键也有同样对应的权重。所述分区查询范围中不同的查询主键位置对应不同的权重,这个权重可以根据查询主键的排列位置顺序递增或递减。例如一种实施方式可以包括,在分区的分区起始主键中的查询主键从右到左权重依次增加,对应分区的分区结束主键从右到左权重依次增加。当然,其他的实施方式也可以从右到左权重依次递减,可以理解的是,其实施本质是定义查询分区的分区起始主键和分区结束主键中的主查询键的权重按照连续或非连续位置的顺序递增或递减,使处理单元基于查询主键的权重(其他类似权重的标识或标识可以统一认为是权重)可以逻辑上判断出当前以及下一个迭代需要查询的主键。为便于描述后续数据查询的迭代处理,其相同或等同的实施方式在此统一描述为查询主键的权重,权重可以在分区起始主键或分区结束主键中表示主键的迭代顺序。
S3:以所述分区起始主键作为起始位置,按照查询主键的权重顺序分别对查询主键进行数据迭代读取,所述迭代读取包括读取迭代的查询主键以及次主键所约束的范围内的数据,所述次主键包括权重低于所述迭代的查询主键的查询主键。
确定了需要查询分区的分区查询范围,包括确定每个分区的分区起始主键和分区结束主键的值,然后可以分别读取每个分区的数据。具体的实施过程中,可以先定位当前查询的分区的起始位置,确定这个起始位置的一种实施方式可以为以该查询分区的起始主键作为起始位置,从所述起始位置开始,分别对各个查询主键进行数据迭代读取,数据迭代读取的主键满足当前查询主键的数据读取要求后依次进行下一个查询主键范围内的数据迭代读取。本申请的一个实施例中,在对当前主键进行数据迭代读取的过程中,读取的数据包括读取迭代的查询主键以及次主键所约束的范围内的数据,所述次主键包括权重低于所述迭代的查询主键的查询主键。
具体的一个示例中,所述多个查询主键对应不同的权重包括:所述起始主键和结束主键中查询主键的权重从右到左的依次增加。例如定位到分区起始主键(A5,B6,C6,D6)的起始位置,可以从右到左依次对各个查询主键迭代增加,直到满足当前迭代的查询主键以及权重低于当前迭代主键的次主键所约束的数据查询范围。具体的可以读取(A5,B6,C6,D6)(前开后闭,属于要查询的数据范围),然后读取的是(A5,B6,C6,D7)、(A5,B6,C6,D8)、…,直到满足D主键在查询分区所约束的查询范围,则D主键迭代结束。然后在对C主键进行迭数据代读取,由于(A5,B6,C6,D6)已经读取过,则可以先定位到另一个(A5,B6,C7,D6)起始位置,然后读取(A5,B6,C7,D6)、(A5,B6,C7,D7)、(A5,B6,C7,D8)、…,在满足权重低于C的次主键D在查询分区的查询范围后,再重新定位到新的(A5,B6,C8,D6)起始位置,然后取(A5,B6,C8,D6)、(A5,B6,C8,D7)、(A5,B6,C8,D8)、…,一直连续取值到次主键D在查询分区的上限值。参照上述方式,在C主键迭代完成满足C主键在查询分区的查询范围后,在执行B主键的迭代查询,如从(A5,B7,C6,D6)开始((A5,B6,C6,D6)已经读取过,可以设置迭代的主键增加一个步长后开始数据迭代读取)读取数据,读取的数据包括满足B主键所约束的查询范围,以及读取满足次主键C和D所约束的查询范围内的数据。A主键的数据迭代读取参照上述方式。
当然,其他的实施例中,也可以以分区结束主键为起始位置开始读取数据,同样可以从D主键位置可以数据迭代读取,则此时数据读取的方向则是从D主键的较大值向较小值方向读取。C主键数据迭代读取时,从C主键在分区结束主键的最大值开始依次向分区起始主键中C主键的值方向递减步长取值,每个C主键的取值确定后获取满足次主键D的查询范围内的数据。同理,B主键、A主键的数据迭代读取同上述方式。本申请提的一个实施例中,所述按照查询主键的权重顺序分别对查询主键进行数据迭代读取,可以包括:
所述分区起始主键和分区结束主键各包括N个查询主键,从右到左依次为第1主键、第2主键、..、第(N-1)主键、第N主键,N为范围查询时使用的主键的个数,N≥2;
S301:在所述分区中,根据所述分区起始主键定位到数据读取的起始位置,执行第1迭代,包括:保持所述起始位置的第N主键、第(N-1)主键、..、第2主键不变,从所述起始位置开始连续读取数据,直到满足所述分区结束主键中的第1主键的查询上限值,获取第1数据集合;
S302:执行第2迭代,包括:依次使所述分区起始主键的第2主键递增一个步长后重新定位起始位置;每次第2主键递增一个步长后,从所述重新定位的起始位置开始分别执行所述第1迭代;直至满足所述分区结束主键的第2主键的查询上限值,获取第2数据集合;
S303:执行第3迭代,所述第3迭代包括使所述分区起始主键的第3主键递增一个步长后重新定位起始位置;每次第3主键递增一个步长后,从所述重新定位的起始位置开始分别执行所述第2迭代;直至满足所述分区结束主键的第3主键的上限要求,获取第3数据集合;
按照上述依次使分区起始主键的第i主键递增一个步长后重新定位起始位置,分别读取重新定位起始位置后权重低于第i主键的次主键所约束范围内的数据,获取第i数据集合;i初始值为1,且重新定位起始位置后i=i+1,直至i=N时获取第N主键数据迭代读取的数据集合。
按照上述S301至S303所描述的步骤,可以继续对第4主键进行数据迭代读取,获取迭代的数据集合。每个主键数据迭代读取获取数据可以根据设计的需求定义不同的数据集合,例如上述中,可以将每个主键迭代时获取的所有数据作为一个数据集合,也可以在每一次在表中连续多行读取出数据作为一个数据集合,例如第1迭代获取的数据作为一个数据集合a1,第2主键加1后再次连续读取第1主键的多行数据作为一个数据集合a2,第2主键再加1后再次连续读取第1主键的多行数据作为一个数集合a3,此时第2主键的数据迭代读取获取的可以是多个数据集合。因此,本实施例中所述的第i数据集合可以是单独的一个数据集合,也可以是指对第i主键进行数据迭代读取获取的多个数据集合的统称。
上述的N、i均是大于等于1的自然数。一般的,范围查询所使用的主键的个数根据用户输入确定。在本实施例实施场景中,可以支持4个主键联合范围查询,因此,在上述使分区起始主键的第4主键(分区起始主键的最左侧主键)递增一个步长后重新定位起始位置后执行第3迭代。在第4主键下一个读取的数据超出了分区结束主键或当前查询分区范围,则此时该查询分区上的数据读取结束。
虽然上述方式描述了可以按照权重顺序从右到左的方式对各个查询主键进行数据迭代读取,但本申请不排除其他的实施方式中也可以按照权重从左到右的方式对各个主查询键进行数据迭代读取。或者从指定的某个位置开始,先向某个读取方向进行查询主键的数据迭代读取,然后再执行另一个读取方向的查询主键的数据迭代读取,例如从分区结束主键的中值向较大值方向连续读取后再从所述中值向较小值方向连续读取。
本申请所述方法的另一种实施例提供了以分区查询范围中分区起始主键作为首次数据读取的起始位置、从最右侧的主键开始迭代的数据迭代处理的实施方式。从分区主键起始位置开始的从右到左依次进行的数据迭代读取适应多数用户数据读取的输入习惯,并符合多数计算机读取逻辑处理、数据库中数据的连续读取、I/O接口的快速处理等,更加有效的提高处理效率。
S4获取所述分区的数据读取集合。
可以将在各个分区中各个主键迭代获取的数据进行合并,得到在当前分区的数据读取集合。合并的方式包括将读取的各行数据按照一定数据合并或者将每次迭代获取的数据集合按照一定顺序排序,或者其他定义的数据合并方式。当然,也可以不合并,每当迭代读取出一条数据时可以直接输出或返回读取的数据,在此情况下获取到读取的一条数据可以认为是数据读取集合的一种场景,该场景下表示数据读取集合中有一条读取的数据。
可以将上述每次数据迭代读取获取的数据集合按照一定的顺序合并,如上述每次连续读取第1主键查询范围内的多行数据作为一个数据集合a,按照读取出的顺序a1、a2、a3、…aM合并,M≥1。这样,本实施例合并后获取的查询分区结果数据也是有序的,便于后续数据的分析、处理等。因此,本申请所述方法的另一种实施例中,所述分区的数据读取集合包括:
S401:将所述分区中读取出数据按照读取顺序合并后生成;
或者,
S402:由查询主键的数据集合合并后生成,所述查询主键的数据集合由读取的相同查询主键的一行或多行数据组成。
按照上述方式获取当前的查询分区需要查询的数据后,可以再读取或者同时读取另一个查询分区中的数据。其他查询分区数据读取的方式参照上述描述方式,区别在于不同的查询分区中分区查询范围的分区起始主键和/或分区结束主键不同,可以根据具体应用的NoSQL数据库场景确定不同查询分区的分区查询范围的具体取值,例如不同分区的主键可以采用连续编码或仅分区键连续编码或其他的相同主键在不同分区的对应关系等。
另外,本申请中所述的不同的分区/查询分区,每个分区可以对应不同的存储单元,如不同的数据库存储位置,或者存储在相同的物理存储单元但在逻辑上划分为不同的分区。
不同分区的数据读取可以参照上述的方式同时读取,可以由数据库的数据处理单元执行实现。例如数据库的前端机可以在获取用户通过新的rectangle_query查询接口指定的多个主键的起始键和结束键后,确定各个分区范围查询的起始主键和结束主键,然后可以分别在分区查询读取数据。本申请提供的实施例的方案,每个分区中读取的数据即为需要查询的数据,数据库一轮读取即可获取需要查新的数据,无需建立索引或读取后再经过主键的筛选等,省去读取额外数据占用的存储空间和处理时间,大大提高非关系型数据库的读取处理效率,提高系统性能。
图2是本申请所述方法另一种实施例的方法流程示意图。如图2所示,进一步的,获取每个查询分区的数据读取集合后,可以将各个分区得到的结果返回,可以由前端机合并后将结果返回给用户。因此,本申请所述方法的另一个实施例中,所述方法还可以包括:
S5:合并各个分区的数据读取集合,得到数据查询结果。
另一种实施方式中,当范围查询涉及多个分区时,获取多个分区的查询结果后,可以按照分区的顺序合并所有分区的查询结果,然后将这种按序合并后的数据库的查询结果返回给用户。具体的,所述一种数据查询方法的另一种实施例中,所述合并各个分区的数据读取集合,可以包括:
S501:按照所述分区的分区编号顺序合并所述数据读取集合。
这样,合并后返回给用户的数据是基于数据库中表的分区的顺序合并而成,合并后的数据也是有序的。当然,一种实施方式中每个分区中查询获取的数据也是按照读取的数据顺序或者数据集合并的,分区查询结果本身也是有序的。本申请不排除其他的实施例中数据库查询结果可以基于分区的分区顺序合并而成的实施方式。
经过上述方式的数据库查询处理,返回给用户的数据即为输入的各个主键的起始键和结束键构成的查询范围内的数据。在非关系型数据库上多个主键联合范围查询时,可以在查询过程中不需要借助辅助数据、不需要读取额外的无用数据,执行一轮数据库的数据读取即可获取查询的数据。利用本申请实施方案,可以降低非关系型数据库中多主键联合范围查询时的高耗时、降低额外消耗空间等,提高非关系型数据库的数据查询效率。
为更加清楚的描述和理解本申请方案,下面以一个具体的示例进行描述。在一种数据表的非关系型数据库中,可以在设置rectangle_query查询接口,可以通过该查询接口指定各个主键的起始键和各主键的结束键。各个查询主键的起键组合成这次查询的起始主键,各查询主键的结束键组合成这次查询的结束主键,伪代码示意如下:
1、create rectangle_query object;
2、set all primary key’s begin key for rectangle_query;
3、set all primary key’s end key for rectangle_query;
在查询接口中指定了各主键的起始键和结束键后,数据查询请求会发给NoSQL数据库的前端机,前端机会根据查询的范围确定查询哪些分区。
如图3所示,图3是本申请一个实施场景中数据库分区的示意图。数据库有三个分区,第一个分区范围是[1,10),第二个分区范围是[10,15),第三个分区范围是[15,21)。
比如本次要查询(5,6,6,6)到(12,6,8,9)之间的数据,查询请求中指定的分区键为最左侧的主键,即范围为5~12,根据该分区键和各个分区的分区范围确定查询出查询分区为第一分区和第二分区,则前端机会将查询请求发给worker-1和worker-2。
在worker-1中,需要查询的分区查询范围为(5,6,6,6)到(9,6,8,9)。由于在worker中数据是按主键排序的,读取的时候可以分阶段按范围读取。具体的读取过程可以包括如下所示:
步骤1、先定位(方法包括但不限于二分查找等)到起始位置(5,6,6,6),开始读取数据,包括主键和属性列,一直读到位置(5,6,6,8),此时下一个(5,6,6,9)已经超出了worker-1分区结束主键(9,6,8,9)中最右侧主键至9约束的范围(左开右闭),第一个迭代到此结束,此时读到的数据集为a1;
步骤2、分区起始主键右侧第二个主键值加1后重新定位到下一个起始位置(5,6,7,6),保持前两个主键的取值5、6不变,开始读取数据,一直读到位置(5,6,7,8),此时下一个(5,6,7,9)已经超出了范围,第二个迭代到此结束,此时读到的数据集合为a2;
步骤3、在上述步骤2执行完后,在所述右侧第二个主键值的基础上再加1重新定位到下一个起始位置(5,6,8,6),开始读取数据,一直读到位置(5,6,8,8),此时下一个(5,6,8,9)已经超出了范围,第三个迭代到此结束,此时读到的数据集合为a3;
步骤4、分区起始主键右侧第三个主键与分区结束主键右侧第三个主键值相同,均为6,前述步骤已经读取过,因此,将分区起始主键最左侧(即本示例的分区键)加1后重新定位到下一个起始位置(6,6,6,6),开始读取数据,一直读到位置(6,6,6,8),此时下一个(6,6,6,9)已经超出了范围,第四个迭代到此结束,此时读到的数据集合为a4。
按照上述方式,分区起始主键最左侧再加1后重新定位到下一个起始位置(7,6,6,6),再循环上述步骤1~4,直到读取到(9,6,6,8)。此时下一个(9,6,6,9)超出了范围,下一个迭代需要从(10,6,6,6)开始,但这个位置已超出了当前worker-1的分区范围,至此当前worker-1上的数据迭代读取结束。
将上述读取到的数据集合按照顺序合并得到worker-1的分区查询结果,数据顺序为a1,a2,a3...aM,保证合并后的数据集也是有序的。将上述分区查询结果返回给前端机。
上述步骤其中一种实现的伪代码可以如下:
worker-2中的分区处理方式类似,处理完后将结果返回给前端机。
前端机获取到worker-1和worker-2的返回数据后,按照worker上的分区顺序合并结果,合并后数据有序,将结果返回给用户。这时候返回给用户的数据就是输入的各主键的起始键和结束键构成的范围内的数据。
利用本申请实施例读取数据时,可以提供一个新的查询接口,比如rectangle_query,可以在查询接口中确定起始主键和结束主键。起始主键或结束主键中的查询主键也可以缺省使用默认值,主键类型包括但不限于整数,字符串,二进制等,主键个数支持任意多个。查询过程中可以不需要借助辅助数据、可以不需要做两轮处理、不需要读取额外的无用数据,可以实现仅读取需要的数据,不需要读取额外数据,从而大大提高了整体的查询效率。
基于上述所述的适用于非关系型数据库中数据查询方法,本申请还提供一种数据查询装置。所述的装置可以包括使用了本申请所述方法的系统(包括分布式系统)、软件(应用)、模块、组件、服务器、客户端、数据库等并结合必要的实施硬件的装置。基于同一创新构思,本申请提供的一种实施例中的装置如下面的实施例所述。由于装置解决问题的实现方案与方法相似,因此本申请具体的装置的实施可以参见前述方法的实施,重复之处不再赘述。具体的,本申请提供的一种数据查询装置的一个实施例中,可以包括至少一个处理器和用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现:
根据数据查询请求确定起始主键和结束主键,所述起始主键和结束主键中不同排列位置的查询主键对应不同的权重;
根据所述起始主键和结束主键确定的查询范围,确定分区的分区起始主键和分区结束主键;
以所述分区起始主键作为起始位置,按照查询主键的权重顺序分别对查询主键进行数据迭代读取,所述迭代读取包括读取迭代的查询主键以及次主键所约束的范围内的数据,所述次主键包括权重低于所述迭代的查询主键的查询主键;
获取所述分区的数据读取集合。
本申请实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行。以运行在数据库服务器上为例,图4是本发明实施例的一种数据查询方法的数据库服务器的硬件结构框图。如图4所示,服务器10可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。本领域普通技术人员可以理解,图4所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器10还可包括比图4中所示更多或者更少的组件,例如还可以包括其他的处理硬件,例如计时器等。或者具有与图4所示不同的配置。
存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的搜索方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述搜索方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输模块106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输模块106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
所述装置另一种实施方式中,所述处理器确定所述查询请求的起始主键和结束主键。
本申请提供的所述装置的另一种实施例中,所述处理器确定所述查询请求的起始主键和结束主键,包括:
所述数据查询请求中包括至少两个查询主键,且,
将所述数据查询请求中所包括的查询主键的起始键按照键位顺序组合成所述起始主键,所包括的查询主键的结束键按照所述键位顺序组合成所述结束主键;
或者,将所述数据查询请求中所包括的查询主键的结束键按照键位顺序组合成所述起始主键,所包括的查询主键的起始键按照所述键位顺序组合成所述结束主键。
当前,参照前述方法实施例的描述,所所述多个查询主键对应不同的权重包括:
所述起始主键和结束主键中查询主键的权重从右到左的依次增加。
所述装置另一种实施例中,所述分区查询范围中的主键从右到左的权重依次增加。
所述装置的另一种实现方式上,所述处理器按照查询主键的权重顺序分别对查询主键进行数据迭代读取,包括:
所述分区起始主键和分区结束主键各包括N个查询主键,从右到左依次为第1主键、第2主键、..、第(N-1)主键、第N主键,N为范围查询时使用的主键的个数,N≥2;
在所述分区中,根据所述分区起始主键定位到数据读取的起始位置,执行第1迭代,包括:保持所述起始位置的第N主键、第(N-1)主键、..、第2主键不变,从所述起始位置开始连续读取数据,直到满足所述分区结束主键中的第1主键的查询上限值,获取第1数据集合;
执行第2迭代,包括:依次使所述分区起始主键的第2主键递增一个步长后重新定位起始位置;每次第2主键递增一个步长后,从所述重新定位的起始位置开始分别执行所述第1迭代;直至满足所述分区结束主键的第2主键的查询上限值,获取第2数据集合;
执行第3迭代,所述第3迭代包括使所述分区起始主键的第3主键递增一个步长后重新定位起始位置;每次第3主键递增一个步长后,从所述重新定位的起始位置开始分别执行所述第2迭代;直至满足所述分区结束主键的第3主键的上限要求,获取第3数据集合;
按照上述依次使分区起始主键的第i主键递增一个步长后重新定位起始位置,分别读取重新定位起始位置后权重低于第i主键的次主键所约束范围内的数据,获取第i数据集合;i初始值为1,且重新定位起始位置后i=i+1,直至i=N时获取第N主键数据迭代读取的数据集合。
述分区的数据读取集合包括:
将所述分区中读取出数据按照读取顺序合并后生成;
或者,
由查询主键的数据集合合并后生成,所述查询主键的数据集合由读取的相同查询主键的一行或多行数据组成。
所述装置另一种实施例中,所述处理器执行所述指令时还实现:
合并各个分区的数据读取集合,得到数据查询结果。
所述装置另一种实施例中,所述处理器合并各个分区的数据读取集合,包括:
按照所述分区的分区编号顺序合并所述数据读取集合。
本申请所述的方法或装置可以以某种程序语言的逻辑代码并结合必要的载体通过执行处理逻辑实现。因此,本申请还提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现以下步骤:
根据数据查询请求中的多个查询主键,确定所述查询请求的起始主键和结束主键,所述多个查询主键对应不同的权重;
根据所述起始主键和结束主键确定的查询范围,确定分区的分区起始主键和分区结束主键;
以所述分区起始主键作为起始位置,按照查询主键的权重顺序分别对查询主键进行数据迭代读取,所述迭代读取包括读取迭代的查询主键以及次主键所约束的范围内的数据,所述次主键包括权重低于所述迭代的查询主键的查询主键。
所述计算机可读存储介质上的指令在执行时分别对各个主键进行数据迭代读取的实现过程可以参照前述方法以及相应示例的描述,在此不做赘述。
所述计算机可读存储介质可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方式的媒体加以存储。本实施例所述的计算机可读存储介质有可以包括:利用电能方式存储信息的装置如,各式存储器,如RAM、ROM等;利用磁能方式存储信息的装置如,硬盘、软盘、磁带、磁芯存储器、磁泡存储器、U盘;利用光学方式存储信息的装置如,CD或DVD。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。
需要说明的,上述所述的计算机可读存储介质根据方法或装置实施例的描述还可以包括其他的实施方式,具体的实现方式可以参照方法实施例的描述,在此不作一一赘述。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
上述所述的装置或方法可以用于多种非关系型数据库系统中,为用户提供数据存储服务。所述的系统可以为一台服务器或者包括一台服务器以及必要存储单元架构的数据库产品,也可以为包括多台服务器及必要的存储单元分布式架构的数据库产品。实施了本申请方案的系统可以在数据查询时,实现无需读取不属于多主键联合范围查询范围内的额外的无用数据,不需要额外的辅助数据(如索引),可以在一轮数据库的数据读取之后获取所需查询的数据,降低查询消耗时间和内存消耗,提高系统查询效率,提高用户体验。图5是本申请提供的一种非关系型数据库系统的结构示意图。一种实施例中,所述系统可以提供数据查询接口,用于非关系型数据库中多个查询主键的联合查询,所述数据查询接口可以实现本申请中任意一项所述方法的步骤;
或者,包括本申请中任意一项所述的装置,实现通过所述数据查询接口进行多主键联合查询。
当然,参照前述方法或装置的描述,所述的系统可以包括多种的实施方式,如对查询分区得到的数据按读取顺序组合得到分区查询结果后根据分区的顺序合并分区查询结果、以分区起始主键作为查询分区初始的首次查询起始位置等,具体的可以参照相关实施例的描述,在此不做一一赘述。
尽管本申请内容中提到定义主键的权重、主键迭代顺序、数据读取顺序、数据组合方式、迭代是否完成以及进入下一轮迭代的决策处理等之类的数据定义、获取、交互、计算、判断等描述,但是,本申请并不局限于必须是符合行业通信标准、标准数据库读写方式、标准计算机处或本申请实施例所描述的情况。某些行业标准或者使用自定义方式或实施例描述的实施基础上略加修改后的实施方案也可以实现上述实施例相同、等同或相近、或变形后可预料的实施效果。应用这些修改或变形后的数据获取、存储、判断、处理方式等获取的实施例,仍然可以属于本申请的可选实施方案范围之内。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (16)

1.一种数据查询方法,其特征在于,所述方法包括:
根据数据查询请求中的多个查询主键,确定所述查询请求的起始主键和结束主键,所述多个查询主键对应不同的权重;所述权重包括所述起始主键中各个查询主键的权重;所述结束主键中各个查询主键的排列位置与所述起始主键中各个查询主键的排列位置相对应;相应的,所述结束主键中各个查询主键的权重与所述起始主键中各个查询主键的权重相对应;
根据所述起始主键和结束主键确定的查询范围,确定分区的分区起始主键和分区结束主键;
以所述分区起始主键作为起始位置,按照查询主键的权重顺序分别对查询主键进行数据迭代读取,所述迭代读取包括读取迭代的查询主键以及次主键所约束的范围内的数据,所述次主键包括权重低于所述迭代的查询主键的查询主键;
获取所述分区的数据读取集合。
2.如权利要求1所述的一种数据查询方法,其特征在于,所述确定所述查询请求的起始主键和结束主键,包括:
所述数据查询请求中包括至少两个查询主键,且,
将所述数据查询请求中所包括的查询主键的起始键按照键位顺序组合成所述起始主键,所包括的查询主键的结束键按照所述键位顺序组合成所述结束主键;
或者,将所述数据查询请求中所包括的查询主键的结束键按照键位顺序组合成所述起始主键,所包括的查询主键的起始键按照所述键位顺序组合成所述结束主键。
3.如权利要求1所述的一种数据查询方法,其特征在于,所述多个查询主键对应不同的权重包括:
所述起始主键和结束主键中查询主键的权重从右到左的依次增加。
4.如权利要求3所述的一种数据查询方法,其特征在于,所述按照查询主键的权重顺序分别对查询主键进行数据迭代读取,包括:
所述分区起始主键和分区结束主键各包括N个查询主键,从右到左依次为第1主键、第2主键、..、第(N-1)主键、第N主键,N为范围查询时使用的主键的个数,N≥2;
在所述分区中,根据所述分区起始主键定位到数据读取的起始位置,执行第1迭代,包括:保持所述起始位置的第N主键、第(N-1)主键、..、第2主键不变,从所述起始位置开始连续读取数据,直到满足所述分区结束主键中的第1主键的查询上限值,获取第1数据集合;
执行第2迭代,包括:依次使所述分区起始主键的第2主键递增一个步长后重新定位起始位置;每次第2主键递增一个步长后,从所述重新定位的起始位置开始分别执行所述第1迭代;直至满足所述分区结束主键的第2主键的查询上限值,获取第2数据集合;
执行第3迭代,所述第3迭代包括使所述分区起始主键的第3主键递增一个步长后重新定位起始位置;每次第3主键递增一个步长后,从所述重新定位的起始位置开始分别执行所述第2迭代;直至满足所述分区结束主键的第3主键的上限要求,获取第3数据集合;
按照上述依次使分区起始主键的第i主键递增一个步长后重新定位起始位置,分别读取重新定位起始位置后权重低于第i主键的次主键所约束范围内的数据,获取第i数据集合;i初始值为1,且重新定位起始位置后i=i+1,直至i=N时获取第N主键数据迭代读取的数据集合。
5.如权利要求1所述的一种数据查询方法,其特征在于,所述分区的数据读取集合包括:
将所述分区中读取出数据按照读取顺序合并后生成;
或者,
由查询主键的数据集合合并后生成,所述查询主键的数据集合由读取的相同查询主键的一行或多行数据组成。
6.如权利要求5所述的一种数据查询方法,其特征在于,所述方法还包括:
合并各个分区的数据读取集合,得到数据查询结果。
7.如权利要求6所述的一种数据查询方法,其特征在于,所述合并各个分区的数据读取集合,包括:
按照所述分区的分区编号顺序合并所述数据读取集合。
8.一种数据查询装置,其特征在于,包括至少一个处理器和用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现:
根据数据查询请求中的多个查询主键,确定所述查询请求的起始主键和结束主键,所述多个查询主键对应不同的权重;所述权重包括所述起始主键中各个查询主键的权重;所述结束主键中各个查询主键的排列位置与所述起始主键中各个查询主键的排列位置相对应;相应的,所述结束主键中各个查询主键的权重与所述起始主键中各个查询主键的权重相对应;
根据所述起始主键和结束主键确定的查询范围,确定分区的分区起始主键和分区结束主键;
以所述分区起始主键作为起始位置,按照查询主键的权重顺序分别对查询主键进行数据迭代读取,所述迭代读取包括读取迭代的查询主键以及次主键所约束的范围内的数据,所述次主键包括权重低于所述迭代的查询主键的查询主键;
获取所述分区的数据读取集合。
9.如权利要求8所述的一种数据查询装置,其特征在于,所述处理器确定所述查询请求的起始主键和结束主键,包括:
所述数据查询请求中包括至少两个查询主键,且,
将所述数据查询请求中所包括的查询主键的起始键按照键位顺序组合成所述起始主键,所包括的查询主键的结束键按照所述键位顺序组合成所述结束主键;
或者,将所述数据查询请求中所包括的查询主键的结束键按照键位顺序组合成所述起始主键,所包括的查询主键的起始键按照所述键位顺序组合成所述结束主键。
10.如权利要求8所述的一种数据查询装置,其特征在于,所述多个查询主键对应不同的权重包括:
所述起始主键和结束主键中查询主键的权重从右到左的依次增加。
11.如权利要求10所述的一种数据查询装置,其特征在于,所述处理器按照查询主键的权重顺序分别对查询主键进行数据迭代读取,包括:
所述分区起始主键和分区结束主键各包括N个查询主键,从右到左依次为第1主键、第2主键、..、第(N-1)主键、第N主键,N为范围查询时使用的主键的个数,N≥2;
在所述分区中,根据所述分区起始主键定位到数据读取的起始位置,执行第1迭代,包括:保持所述起始位置的第N主键、第(N-1)主键、..、第2主键不变,从所述起始位置开始连续读取数据,直到满足所述分区结束主键中的第1主键的查询上限值,获取第1数据集合;
执行第2迭代,包括:依次使所述分区起始主键的第2主键递增一个步长后重新定位起始位置;每次第2主键递增一个步长后,从所述重新定位的起始位置开始分别执行所述第1迭代;直至满足所述分区结束主键的第2主键的查询上限值,获取第2数据集合;
执行第3迭代,所述第3迭代包括使所述分区起始主键的第3主键递增一个步长后重新定位起始位置;每次第3主键递增一个步长后,从所述重新定位的起始位置开始分别执行所述第2迭代;直至满足所述分区结束主键的第3主键的上限要求,获取第3数据集合;
按照上述依次使分区起始主键的第i主键递增一个步长后重新定位起始位置,分别读取重新定位起始位置后权重低于第i主键的次主键所约束范围内的数据,获取第i数据集合;i初始值为1,且重新定位起始位置后i=i+1,直至i=N时获取第N主键数据迭代读取的数据集合。
12.如权利要求8所述的一种数据查询装置,其特征在于,所述分区的数据读取集合包括:
将所述分区中读取出数据按照读取顺序合并后生成;
或者,
由查询主键的数据集合合并后生成,所述查询主键的数据集合由读取的相同查询主键的一行或多行数据组成。
13.如权利要求12所述的一种数据查询装置,其特征在于,所述处理器执行所述指令时还实现:
合并各个分区的数据读取集合,得到数据查询结果。
14.如权利要求13所述的一种数据查询装置,其特征在于,所述处理器合并各个分区的数据读取集合,包括:
按照所述分区的分区编号顺序合并所述数据读取集合。
15.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述指令被执行时实现以下步骤:
根据数据查询请求中的多个查询主键,确定所述查询请求的起始主键和结束主键,所述多个查询主键对应不同的权重;所述权重包括所述起始主键中各个查询主键的权重;所述结束主键中各个查询主键的排列位置与所述起始主键中各个查询主键的排列位置相对应;相应的,所述结束主键中各个查询主键的权重与所述起始主键中各个查询主键的权重相对应;
根据所述起始主键和结束主键确定的查询范围,确定分区的分区起始主键和分区结束主键;
以所述分区起始主键作为起始位置,按照查询主键的权重顺序分别对查询主键进行数据迭代读取,所述迭代读取包括读取迭代的查询主键以及次主键所约束的范围内的数据,所述次主键包括权重低于所述迭代的查询主键的查询主键;
获取所述分区的数据读取集合。
16.一种数据查询系统,其特征在于,提供数据查询接口,用于非关系型数据库中多个查询主键的联合查询,
所述数据查询接口实现权利要求1-7中任意一项所述方法的步骤;
或者,包括权利要求8-14中任意一项所述的装置。
CN201711183626.0A 2017-11-23 2017-11-23 一种数据查询方法、装置和查询系统 Active CN110069523B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711183626.0A CN110069523B (zh) 2017-11-23 2017-11-23 一种数据查询方法、装置和查询系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711183626.0A CN110069523B (zh) 2017-11-23 2017-11-23 一种数据查询方法、装置和查询系统

Publications (2)

Publication Number Publication Date
CN110069523A CN110069523A (zh) 2019-07-30
CN110069523B true CN110069523B (zh) 2023-08-18

Family

ID=67364604

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711183626.0A Active CN110069523B (zh) 2017-11-23 2017-11-23 一种数据查询方法、装置和查询系统

Country Status (1)

Country Link
CN (1) CN110069523B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110895549B (zh) * 2019-09-04 2022-12-06 成都四方伟业软件股份有限公司 一种量化数据检索方法及系统
CN112506440A (zh) * 2020-12-17 2021-03-16 杭州迪普信息技术有限公司 基于二分法的数据查找方法和设备
CN113434540B (zh) * 2021-05-11 2022-04-05 华东师范大学 支持左外连接的应用驱动数据生成中依赖关系生成方法及系统
CN115729951B (zh) * 2022-11-28 2024-02-09 易保网络技术(上海)有限公司 数据查询方法、系统、设备及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140122484A1 (en) * 2012-10-29 2014-05-01 Futurewei Technologies, Inc. System and Method for Flexible Distributed Massively Parallel Processing (MPP) Database
CN106897340A (zh) * 2016-07-05 2017-06-27 阿里巴巴集团控股有限公司 一种数据表更新方法及装置
CN107315752A (zh) * 2016-04-27 2017-11-03 北京京东尚科信息技术有限公司 数据结转方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140122484A1 (en) * 2012-10-29 2014-05-01 Futurewei Technologies, Inc. System and Method for Flexible Distributed Massively Parallel Processing (MPP) Database
CN107315752A (zh) * 2016-04-27 2017-11-03 北京京东尚科信息技术有限公司 数据结转方法及系统
CN106897340A (zh) * 2016-07-05 2017-06-27 阿里巴巴集团控股有限公司 一种数据表更新方法及装置

Also Published As

Publication number Publication date
CN110069523A (zh) 2019-07-30

Similar Documents

Publication Publication Date Title
CN110069523B (zh) 一种数据查询方法、装置和查询系统
CN108845936B (zh) 一种基于海量用户的ab测试方法及系统
CN111767143B (zh) 交易数据处理方法、装置、设备及系统
KR102125177B1 (ko) 블록체인 기반 데이터 처리 방법 및 장치
EP3640813B1 (en) Cluster-based random walk method and apparatus
CN108848244B (zh) 一种分页显示的方法及装置
WO2019085601A1 (zh) 一种任务执行的方法及装置
CN107451204B (zh) 一种数据查询方法、装置及设备
Li et al. Siphon extraction for deadlock control in flexible manufacturing systems by using Petri nets
CN111078723B (zh) 一种区块链浏览器的数据处理方法及装置
CN107491484B (zh) 一种数据匹配方法、装置及设备
CN115828162A (zh) 一种分类模型训练的方法、装置、存储介质及电子设备
CN112506992A (zh) Kafka数据的模糊查询方法、装置、电子设备和存储介质
CN110008398B (zh) 一种数据分类管理推荐方法及装置
CN112559642A (zh) 数据分类存储方法、装置及相关产品
US11042578B2 (en) Multigram index for database query
CN110008382B (zh) 一种确定TopN数据的方法、系统及设备
CN116501927A (zh) 一种图数据处理系统、方法、设备及存储介质
US9298505B2 (en) Time and space-deterministic task scheduling apparatus and method using multi-dimensional scheme
CN111008198A (zh) 业务数据获取方法、装置、存储介质、电子设备
US20140244521A1 (en) Systems and methods for legal data processing
CN107368281B (zh) 一种数据处理方法及装置
CN105991400B (zh) 一种群组搜索方法及其设备
CN109947702A (zh) 索引构建方法及装置、电子设备
CN110008237B (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40010996

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant