CN110704453A - 一种数据查询方法、装置、存储介质及电子设备 - Google Patents
一种数据查询方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN110704453A CN110704453A CN201910978583.8A CN201910978583A CN110704453A CN 110704453 A CN110704453 A CN 110704453A CN 201910978583 A CN201910978583 A CN 201910978583A CN 110704453 A CN110704453 A CN 110704453A
- Authority
- CN
- China
- Prior art keywords
- data
- index
- query
- fragment
- tree
- 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
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
Abstract
本发明实施例公开了一种数据查询方法、装置、存储介质及电子设备。该方案,当接收到数据查询请求时,根据数据查询请求确定第一片键和查询条件;从分片集群中确定与第一片键对应的第一分片,并从第一分片存储的多个平衡树中,确定出与查询条件匹配的目标平衡树,非叶子节点存储在内存;对目标平衡树进行逐层查找,以从叶子节点获取满足查询条件的第一索引,以及与第一索引关联的数据记录信息;根据数据记录信息,从第一分片上获取第一索引对应的第一数据,并基于第一数据响应数据查询请求,实现数据的高效查询。
Description
技术领域
本发明涉及数据处理技术领域,具体涉及一种数据查询方法、装置、存储介质及电子设备。
背景技术
对于需要对用户上传的数据进行存储,同时为用户提供基于数据属性进行数据查询的系统来说,通常的做法一般是,将用户上传的数据存储到数据库中,查询的时候,根据查询时指定的属性作为条件,去数据库中查询筛选得到需要的数据。
但是上述方案提供的数据存储方式,在进行数据查询时,需要在数据库中遍历全部数据才能得到查询结果,查询效率低下。
发明内容
本发明实施例提供一种数据查询方法、装置、存储介质及电子设备,旨在提高数据查询效率。
本发明实施例提供一种数据查询方法,包括:
当接收到数据查询请求时,根据所述数据查询请求确定第一片键和查询条件;
从分片集群中确定与所述第一片键对应的第一分片,并从所述第一分片存储的多个平衡树中,确定出与所述查询条件匹配的目标平衡树,其中,所述平衡树包括存储有数据记录信息和索引的叶子节点,以及存储有索引的非叶子节点,所述非叶子节点存储在内存;
对所述目标平衡树进行逐层查找,以从叶子节点获取满足所述查询条件的第一索引,以及与所述第一索引关联的数据记录信息;
根据所述数据记录信息,从所述第一分片上获取所述第一索引对应的第一数据,并基于所述第一数据响应所述数据查询请求。
本发明实施例还提供一种数据查询装置,包括:
获取单元,用于当接收到数据查询请求时,根据所述数据查询请求确定第一片键和查询条件;
确定单元,用于从分片集群中确定与所述第一片键对应的第一分片,并从所述第一分片存储的多个平衡树中,确定出与所述查询条件匹配的目标平衡树,其中,所述平衡树包括存储有数据记录信息和索引的叶子节点,以及存储有索引的非叶子节点,所述非叶子节点存储在内存;
查询单元,用于对所述目标平衡树进行逐层查找,以从叶子节点获取满足所述查询条件的第一索引,以及与所述第一索引关联的数据记录信息;
响应单元,用于根据所述数据记录信息,从所述第一分片上获取所述第一索引对应的第一数据,并基于所述第一数据响应所述数据查询请求。
本发明实施例还提供一种存储介质,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本发明实施例所提供的任一数据查询方法。
本发明实施例提供的数据查询方案,当接收到数据查询请求时,根据数据查询请求确定出第一片键和查询条件,从分片集群中确定出第一片键对应的第一分片。然后,从该第一分片中的多个平衡树中确定出与查询条件对应的目标平衡树,对目标平衡树进行逐层查找,从叶子节点获取满足查询条件的第一索引,并获取第一索引关联的数据记录信息,基于该数据记录信息,可以从第一分片中获取第一索引对应的第一数据,即为数据查询请求所要请求的数据,因此,可以基于该第一数据响应数据查询请求。本方案以分片集群的形式分布式存储数据,分摊存储压力,同时,在各个分片上构建平衡树,将数据的索引存储在平衡树的叶子节点和非叶子节点,将数据的数据记录信息存储在叶子节点,并且,非叶子节点存储在内存中。在数据查询时,无需遍历全部索引,只需基于查询条件对平衡树进行逐层查找,即可快速定位第一索引。并且,非叶子节点存储在内存中,进一步加快了数据查询速度,实现数据的高效查询。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的数据查询系统的第一种场景示意图;
图1b是本发明实施例提供的数据查询系统的第二种场景示意图;
图1c是本发明实施例提供的数据查询系统的第三种场景示意图;
图1d是本发明实施例提供的数据查询方法的第一流程示意图;
图1e是本发明实施例提供的数据查询方法中B+树的结构示意图;
图2是本发明实施例提供的数据查询方法的第二流程示意图;
图3a是本发明实施例提供的数据查询装置的第一种结构示意图;
图3b是本发明实施例提供的数据查询装置的第二种结构示意图;
图3c是本发明实施例提供的数据查询装置的第三种结构示意图;
图4是本发明实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本发明提供一种数据查询方法、装置、存储介质和电子设备。
本发明还提供一种数据查询系统,该系统包括本发明实施例提供的数据查询装置,该数据查询装置可以集成在服务器或者服务器集群中。此外,该系统还可以包括其他设备,例如用户终端,其中,用户终端可以是手机、平板电脑或者个人计算机等,用于与服务器建立连接,将数据上传至服务器存储,或者从该服务器中查询数据。
请参阅图1a,图1a是本发明实施例提供的数据查询系统的第一种场景示意图。该系统包括服务器,以及与服务器连接的、用于存储数据的分片集群,其中,分片集群中包含多个分片。可以根据指定的片键将全部用户上传的数据分布存储在分片集群中,分摊存储压力和查询压力,提供分布式读写的能力。查询和写入时根据片键把请求分发到数据所在的唯一分片。例如,用户终端将数据查询请求发送至服务器,服务器根据数据查询请求中携带的片键,将该请求路由到对应的分片,在该分片中查找对应的数据。
在一些实施例中,分片内部可以通过一主多从的方式容灾数据,主机负责写数据,并把数据同步到从机上,从机拥有主机数据集的一个完整备份。在并发请求量比较大时,可以增加从机来提升该分片的并发读取数量的上限。
在一些实施例中,若请求量和数据存储量较少,可以把多个分片存储在同一块硬盘上以节省存储和机器;若以后访问量增大,则可以把分片搬迁到新的机器上,无需重新哈希重建数据。该方法可以让存储设备的扩容、缩容都非常灵活。
在一些实施例中,可以设置多台代理服务器构成代理服务器集群,以用于处理大量的用户请求。请参阅图1b,图1b是本发明实施例提供的数据查询系统的第二种场景示意图。
在一些实施例中,请参阅图1c,图1c是本发明实施例提供的数据查询系统的第三种场景示意图。服务器可以是代理服务器,在代理服务器与用户终端之间还设置有网关和防火墙。
本发明实施例提供一种数据查询方法,该数据查询方法的执行主体可以是本发明实施例提供的数据查询装置,或者集成了该数据查询装置的电子设备,其中该数据查询装置可以采用硬件或者软件的方式实现。其中,电子设备可以是提供数据存储、查询服务的服务器。
本发明实施例提供的数据查询方法、装置、存储介质和电子设备,可以根据实际需要应用于对数据进行存储和查询的各种场景。以下为了便于对本发明的具体实现方案进行说明,以一个具体的应用场景为例。例如,将本发明的方案应用于用户对音乐作品的分享。在用户终端提供一可以将用户自己录制的音乐作品(如音频或者视频等)进行上传分享的应用程序,用户可以在该应用程序注册自己的账号,获取用户标识,例如用户ID(Identitydocument,身份标识)。用户可以使用自己的账号,将录制的音频或者视频等数据上传至服务器存储,同时可以查看其他用户(例如,关注列表或者好友列表中的用户等)分享的数据。又或者,用户还可以查看该应用程序提供的某一活动中,各活动参与者分享的音乐作品。在进行音乐作品上传、查看其他用户的音乐作品、查看活动参与者的分享的音乐作品等各种场景下,会使用到本发明提供的数据查询方法。
请参阅图1d图,1d是本发明实施例提供的数据查询方法的第一流程示意图。该数据查询方法的具体流程可以如下:
101、当接收到数据查询请求时,根据所述数据查询请求确定第一片键和查询条件。
本发明实施例中,在分片中构建平衡树,本申请中的平衡树可以是B+树,或者其他能够将索引单独存储在非叶子节点的平衡树。以下内容中以B+树为例,对本发明实施例的方案进行说明。请参阅图1e,图1e是本发明实施例提供的数据查询方法中B+树的结构示意图。本发明中的B+树包括叶子节点和非叶子节点,B+树的最后一层为叶子节点,非叶子节点包括根节点和子节点,非叶子节点只存储有索引,在叶子节点存储有索引和数据记录信息。并且,非叶子节点放在内存,叶子节点存储在硬盘中。图1e中每一个节点包括多个关键字,每一个方块对应于一个关键字,具体为索引值。
此外,B+树还具有如下特性:一个k阶的B+树有一个根节点,分支的数量范围为2~k,一个节点的分支数据量不能超过k,该节点包含的关键字的数量不能超过k+1;本发明的B+树中的关键字均为数据的索引;相邻的叶子节点之间通过指针连接,并且所有叶子节点根据索引值由小至大(或者由大到小)的顺序形成一个有序链表;一个分片上的所有数据的索引都出现在该分片的B+树的叶子节点;叶子节点上的索引值允许重复(即两个数据可以有相同的索引值);等等。在此不再一一列举B+树的特性。
在服务器处,根据用户量设置多个分片。例如有一万个用户,则设置两个分片,将其中五千个用户的数据存储在第一分片上,将另外五千个用户的数据存储在第二分片上。随着用户的增多,可以设置更多的分片。每一个用户上传的音乐作品都对应一个的片键,该片键用于指示将音乐作品存储到哪一个分片上。每一个片键对应于一个分片。
在一些实施例中,可以将用户标识作为唯一片键。用户在上传音乐作品的数据时,携带有自己的用户标识,服务器在接收到该用户上传的音乐作品时,可以根据用户标识确定唯一的分片,将上传的音乐作品的数据存储至该分片。
根据数据属性,设置多个复合索引,每一个复合索引对应一个B+树,可以根据查询规则,设置多个B+树。对于每一个B+树,节点中的关键字可以使用该B+树对应的复合索引来表示。当一个分片设置有多个B+树时,每一个B+树上都存储有所有数据的索引和数据记录信息。
例如,用户上传的每一条数据,包括如下四个数据属性:用户ID(UID)、数据类型(TPYE)、状态类型(ACC,包括公开或私密)、发表时间(TS)。则可以根据上述四个属性数据构建多个复合索引。比如,使用全部数据属性构建第一复合索引UID_TPYE_ACC_TS;使用用户ID和数据类型两个属性数据,构建第二复合索引UID_TPYE;使用用户ID、状态类型和发表时间三个属性数据,构建第三复合索引UID_ACC_TS;等等。
将上述四个数据属性的具体值都用数字表示,或者,将上述四个数据属性的具体值都转换为数字表示。例如,用户ID用七位的数字表示,其取值范围可以根据需要设置,则某一用户的用户ID可以表示为000129;数据类型用一位数字表示,其取值范围为0-1,若某一音乐作品为音频,则TPYE为0,若某一音乐作品为视频,则TPYE为1;状态类型可以采用与数据类型同样的方式表示;发表时间可以使用时间戳字符串表示,例如使用Unix时间戳来表示,1555702084(表示2019/4/20 3:28:4)。则在第一复合索引UID_TPYE_ACC_TS对应的B+树上,用户ID为000129的用户在2019/4/20 3:28:4上传的公开的、且为音频的一个音乐作品,其索引可以表示为000129_0_0_1555702084。而在第二复合索引UID_TPYE对应的B+树上,该作品对应的索引只会表示为000129_0。
通过上述方式可以将每一个索引都用一串数字来表示,以便于在B+树上进行索引的查询。
当用户将该音乐作品上传至服务器后,服务器会将该作品的详细信息存储至硬盘,同时根据存储位置生成数据记录信息,将该数据记录信息和该音乐作品对应的索引存储到第一复合索引UID_TPYE_ACC_TS对应的B+树的叶子节点,其中,具体的叶子节点的选择,稍后会详细说明。
其中,在预先设置复合索引时,根据数据属性的区分度高低,来设置一个复合索引中各数据属性的顺序,尽量将区分度高的数据属性排列前面,这样在B+树上查询时,可以更快地查找到目标索引。例如,将用户ID排列在数据类型的前面。
可以理解的是,上述数据属性和B+树的复合索引只为举例说明,在其他实施例中,可以根据需要设置其他的数据属性和复合索引。
102、从分片集群中确定与所述第一片键对应的第一分片,并从所述第一分片存储的多个平衡树中,确定出与所述查询条件匹配的目标平衡树,其中,所述平衡树包括存储有数据记录信息和索引的叶子节点,以及存储有索引的非叶子节点,所述非叶子节点存储在内存。
例如,用户A在该音乐分享应用程序上关注了用户B,当用户A进入用户B的作品页面查看用户B的音乐作品时,用户A的用户终端会向服务器发送数据查询请求,其中,具体的数据查询请求根据该作品页面的具体查看规则生成,例如,用户没有设置筛选规则时,则查询条件可以为查看用户B公开的全部音乐作品,并按照发表时间顺序排列。
在一些实施例中,根据所述数据查询请求确定第一片键,包括:从所述数据查询请求中获取目标用户标识;对所述目标用户标识执行哈希取模操作或者取模操作,得到第一片键。
假设分片集合中一共有10个分片,依次为分片S0、分片S1、分片S2……分片S9。片键0对应于分片S0,片键1对应于分片S1,……,以此类推,片键9对应于分片S9。在对用户标识进行取模操作时,以分片的数量10作为被除数进行除法运算。
服务器在获取到数据查询请求时,根据该数据查询请求确定目标用户标识,即用户B的用户ID,假设用户B的用户ID为000315。则对000315进行取模操作,取模操作的结果为5,则将5作为第一片键,第一片键5对应的分片为分片S5。则从分片S5上存储的多个平衡树中确定出于查询条件对应的目标平衡树。
需要说明的是,用户B在上传数据时携带自身的用户ID,服务器按照同样的方式获取片键5,并将用户B上传的数据存储在分片S5上。因此,其他用户在查询用户B的数据时,其中携带的有用户B的标识信息,故数据查询请求中的片键必然指向用户B存储作品的分片S5。
在一些实施例中,从所述第一分片存储的多个平衡树中,确定出与所述查询条件匹配的目标平衡树,可以包括:确定所述第一分片中存储的平衡树对应的复合索引,并获取所述复合索引包含的第一数据属性;获取所述查询条件包含的第二数据属性;按照最左匹配规则,将所述第一数据属性与所述第二数据属性进行匹配,以从多个平衡树中,确定出与所述查询条件匹配的目标平衡树。
根据用户A的数据查询请求确定查询条件为查看用户B公开的全部音乐作品,并按照发表时间顺序排列。即查询条件中包含的第二数据属性有用户ID、状态类型和发表时间。
分片S5上存储的三个B+树的复合索引分别为:第一复合索引UID_TPYE_ACC_TS、第二复合索引UID_TPYE、第三复合索引UID_ACC_TS。针对每一个B+树,获取其复合索引,并确定复合索引包含的第一数据属性,将其第一数据属性与查询条件中包含的第二数据属性(用户ID和状态类型),按照最左匹配规则进行匹配,可以确定出与该查询条件最匹配的B+树为第三复合索引UID_ACC_TS对应的B+树,则将该B+树作为目标B+树。
第三复合索引UID_ACC_TS对应的B+树中,每一节点上的索引都表示为UID_ACC_TS的形式,即索引中只记录了用户ID、状态类型和发表时间这三个属性的值。
103、对所述目标平衡树进行逐层查找,以从叶子节点获取满足所述查询条件的第一索引,以及与所述第一索引关联的数据记录信息。
确定出目标B+树之后,对该目标B+树进行逐层查找。先在内存中对非叶子节点进行查找,由于非叶子节点存储在内存中,可以加快查询速度。查找到最后一层非叶子节点时,根据指针的指向到硬盘中对应的叶子节点处继续查找,获取到满足查询条件的第一索引。
在查找到全部的第一索引后,获取第一索引关联的数据记录信息。本发明实施例中,在叶子节点存储音乐作品的索引,同时将数据记录信息与索引关联存储,其中,在一些实施例中,数据记录信息为数据在分片上的硬盘逻辑地址。
104、根据所述数据记录信息,从所述第一分片上获取所述第一索引对应的第一数据,并基于所述第一数据响应所述数据查询请求。
根据数据记录信息,可以从第一分片上获取第一索引对应的第一数据,第一数据中包括了音乐作品的详细信息,例如,包括音频数据、作品名称、音频时长、发表时间、用户ID等等。
在一些实施例中,数据记录信息为数据在所述第一分片中的硬盘逻辑地址。所述根据所述数据记录信息,从所述第一分片上获取所述第一索引对应的第一数据,包括:根据所述硬盘逻辑地址,从所述第一分片的存储区域中获取所述第一索引对应的第一数据。
根据硬盘逻辑地址,到硬盘的对应位置处获取第一索引对应的第一数据,即用户要查找的数据,该实施例中,获取到的是用户B公开的全部音乐作品的相关数据。
在一些实施例中,查询条件还包括排序规则,所述基于所述第一数据响应所述数据查询请求,包括:按照所述排序规则对所述第一数据进行排序;并基于排序后的所述第一数据响应所述数据查询请求。
当查询条件中包括排序规则时,要对查询到的全部第一数据进行排序,例如,查询条件是查看用户B公开的全部音乐作品,并按照发表时间顺序排列。
则按照发表时间
例如,获取到用户B公开的全部音乐作品的相关数据之后,根据作品的发表时间,对全部音乐作品进行顺序排列,并响应于数据查询请求,将按照发表时间顺序排列的音乐作品列表返回给数据查询请求对应的用户终端。
在一些实施例中,当用户将音乐作品上传到服务器时,可以采用如下方案实现:当接收到数据存储请求时,根据所述数据存储请求确定第二片键和待存储的第二数据;从分片集群中确定与所述第二片键对应的第二分片;将所述第二数据存储至所述第二分片的存储区域,并根据存储位置生成数据记录信息;根据所述第二数据,生成所述第二分片的平衡树对应的第二索引;对所述第二分片的平衡树进行逐层查找,以确定出所述第二索引对应的叶子节点;并将所述第二索引和根据存储位置生成的数据记录信息存储值确定出的叶子节点。
在进行音乐作品的上传时,服务器接收数据存储请求,根据指定的第二片键,将数据存储请求路由到对应的第二分片,将待存储数据存储到第二分片的存储区域,同时生成数据记录信息。接下来,将该数据记录信息写入到第二分片的各个B+树中,其中,由于每个B+数据的复合索引不同,所以要根据第二数据生成于各个B+数据对应的第二索引,基于该第二索引对第二分片的B+数据由根节点开始,自上向下逐层查找,直至找到该第二索引对应的叶子节点。由于平衡树的叶子节点按照索引值由小至大的顺序连通过指针连接,形成一个有序链表。因此,找到第二索引对应的叶子节点后,按照该第二索引的值的大小存储到叶子节点的对应位置处,同时,将数据位置信息于该第二索引关联存储。对于每一个B+数据都执行同样的操作,将第二数据的第二索引及其关联的数据记录信息,存储到每一个B+数据上。
此外,在完成数据存储后,需要根据B+树的阶数,调整B+树的结构,保持b+树平衡。当一个节点的索引数量超出上限后,将该节点进行分裂,其中的一个索引值上移,成为父节点,依次类推,随着B+树上存储的索引越来越多,非叶子节点的高度也随着B+树的结构的调整,层数会变多。
在一些实施例中,当用户删除自己上传的音乐作品时,可以采用如下方案实现:当接收到数据删除请求时,根据所述数据删除请求确定第三片键和待删除的第三数据;从分片集群中确定出与所述第三片键对应的第三分片;根据所述第三数据,生成所述第三分片的平衡树对应的第三索引;对所述第三分片的平衡树进行逐层查找,以确定出所述第三索引对应的叶子节点;从确定出的叶子节点获取所述第三索引关联的数据记录信息;根据所述数据记录信息删除所述第三分片上存储的所述第三数据,并从确定出的叶子节点上,将所述第三索引、以及所述第三索引关联的数据记录信息删除。
此外,需要说明的是,在根据所述数据查询请求确定第一片键和查询条件之后,有可能存在根据数据查询请求获取不到第一片键的情况,例如,用户发送的数据查询请求中,可能没有指定特定的目标用户标识,则无法确定第一片键。此时,服务器可以将数据查询请求广播到分片集权的全部的分片,每一个分片都执行数据查询操作,并将数据查询结果发送给服务器,服务器获取各个分片的数据查询结果并进行整合处理后,返回给数据查询请求对应的用户终端。
本发明实施例中使用B+树存储数据的索引,具有非叶子节点高度低,存储量少的特点,把非叶子节点放在内存,能够加快索引的查找。此外,该方案设置分片集群,结合片键将请求路由到不同的分片上,以及分片集群内的主从管理,等等,即使面对海量高并发的音乐作品的查询,也可以实现高效查询。
具体实施时,本发明不受所描述的各个步骤的执行顺序的限制,在不产生冲突的情况下,某些步骤还可以采用其它顺序进行或者同时进行。
此外,需要说明的是,在本实施例中以音乐作品为例对数据的存储、查询删除等进行了举例说明,本申请对于数据的类型没有具体限制,可以适用于任何类型的数据,当需要对用户上传的数据进行存储,同时为用户提供基于数据属性进行数据查询的系统来说,均可以使用本方案。
由上所述,本发明实施例提出的数据查询方法,当接收到数据查询请求时,根据数据查询请求确定出第一片键和查询条件,从分片集群中确定出第一片键对应的第一分片。然后,从该第一分片中的多个平衡树中确定出与查询条件对应的目标平衡树,对目标平衡树进行逐层查找,从叶子节点获取满足查询条件的第一索引,并获取第一索引关联的数据记录信息,基于该数据记录信息,可以从第一分片中获取第一索引对应的第一数据,即为数据查询请求所要请求的数据,因此,可以基于该第一数据响应数据查询请求。本方案以分片集群的形式分布式存储数据,分摊存储压力,同时,在各个分片上构建平衡树,将数据的索引存储在平衡树的叶子节点和非叶子节点,将数据的数据记录信息存储在叶子节点,并且,非叶子节点存储在内存中。在数据查询时,无需遍历全部索引,只需基于查询条件对平衡树进行逐层查找,即可快速定位第一索引。并且,非叶子节点存储在内存中,进一步加快了数据查询速度,实现数据的高效查询。
根据前面实施例所描述的方法,以下将举例作进一步详细说明。
请参阅图2,图2是本发明实施例提供的数据查询方法的第二流程示意图。
所述方法包括:
201、当接收到数据查询请求时,从所述数据查询请求中获取目标用户标识,对所述目标用户标识执行哈希取模操作,得到第一片键。
202、根据所述数据查询请求确定索引范围,以及所述索引范围的第一边界值。
用户终端发送的数据查询请求中携带要查询的多个数据属性,以及对数据属性的取值要求,例如,用户ID、数据类型、发表时间等等。例如,用户A在该音乐分享应用程序上关注了用户B,当用户A进入用户B的作品页面查看用户B的音乐作品时,用户A的用户终端会向服务器发送数据查询请求,其中,具体的数据查询请求根据该作品页面的具体查看规则生成,例如,用户没有设置筛选规则时,则查询条件可以为查看用户B公开的全部音乐作品,并按照发表时间顺序排列。数据查询请求中携带的数据属性为用户ID、状态类型和发表时间。
假设分片集合中一共有10个分片,依次为分片S0、分片S1、分片S2、……、分片S9。片键0对应于分片S0,片键1对应于分片S1,……,以此类推,片键9对应于分片S9。在对用户标识进行取模操作时,以分片的数量10作为被除数进行除法运算。
服务器在获取到数据查询请求时,根据该数据查询请求确定目标用户标识,假设目标用户标识为000315。则对000315进行取模操作,取模操作的结果为5,则将5作为第一片键,第一片键5对应的分片为分片S5。
同时,根据数据查询请求中携带要查询的多个数据属性,以及对数据属性的取值要求,确定要查找的数据对应的索引范围。
203、从分片集群中确定与所述第一片键对应的第一分片,并从所述第一分片存储的多个平衡树中,确定出与所述索引范围匹配的目标平衡树。
204、对所述目标平衡树进行逐层查找,以确定所述第一边界值所在的叶子节点,并将所述第一边界值所在的叶子节点作为目标叶子节点。
205、以所述目标叶子节点作为起点,基于所述指针遍历所述目标平衡树的叶子节点,以获取满足所述查询条件的第一索引,以及所述第一索引值关联的硬盘逻辑地址。
从分片S5上存储的多个平衡树中确定出于查询条件对应的目标平衡树。分片S5上存储的三个B+树的复合索引分别为:第一复合索引UID_TPYE_ACC_TS、第二复合索引UID_TPYE、第三复合索引UID_ACC_TS。按照最左匹配规则进行匹配,可以确定出与该查询条件最匹配的B+树为第三复合索引UID_ACC_TS对应的B+树,则将该B+树作为目标B+树。按照确定出的索引范围在目标平衡树上进行逐层查找。
其中,所述平衡树的叶子节点按照索引值由小至大的顺序连通过指针连接,形成一个有序链表。
本申请中基于B+树的查找,大多是范围查找,即要查找的不是某一个特定的作品,而是某个索引范围内的作品。而由于B+树的所有叶子节点构成了一个有序链表的特性,在进行范围查询时,确定出一个边界值,例如,最小值,之后,遍历叶子节点,即可获取到整个索引范围内的索引值。当然,对于特定索引值的查找,可以作为范围查找的例外(即索引范围中只包含一个特定的索引值),按照类似的方式进行查询。
因此,在本实施例中,根据查询条件中的索引范围出第一边界值。第三复合索引UID_ACC_TS对应的B+树中,要查找用户B公开的全部音乐作品,并按照发表时间顺序排列。也就是说,没有限制发表时间,即查询条件中包含了发表时间的全部取值,在对目标B+树进行逐层查找时的第一边界值可以是:“000315_0_发表时间最小值”。从目标B+树的根节点开始,逐层往下查找,直至查找到该第一边界值所在的叶子节点,即目标叶子节点,以该目标叶子节点作为起点,根据指针的指向,遍历叶子节点,直至第二边界值“000315_0_发表时间最大值”。获取查找到的属于(000315_0_发表时间最小值,000315_0_发表时间最大值)这个范围的全部索引,作为第一索引。
206、根据所述硬盘逻辑地址,从所述第一分片的存储区域中获取所述第一索引对应的第一数据。
在查找到全部的第一索引后,获取第一索引关联的硬盘逻辑地址,根据硬盘逻辑地址,到硬盘的对应位置处获取第一索引对应的第一数据,即用户要查找的数据,该实施例中,获取到的是用户B公开的全部音乐作品的相关数据。
207、按照所述排序规则对所述第一数据进行排序,并基于排序后的所述第一数据响应所述数据查询请求。
获取到用户B公开的全部音乐作品的相关数据之后,根据作品的发表时间,对全部音乐作品进行顺序排列,并响应于数据查询请求,将按照发表时间顺序排列的音乐作品列表返回给数据查询请求对应的用户终端。
由上所述,本发明实施例提出的数据查询方法,当接收到数据查询请求时,根据数据查询请求确定出第一片键和查询条件,从分片集群中确定出第一片键对应的第一分片。然后,从该第一分片中的多个平衡树中确定出与查询条件对应的目标平衡树,对目标平衡树进行逐层查找,从叶子节点获取满足查询条件的第一索引,并获取第一索引关联的数据记录信息,基于该数据记录信息,可以从第一分片中获取第一索引对应的第一数据,即为数据查询请求所要请求的数据,因此,可以基于该第一数据响应数据查询请求。本方案以分片集群的形式分布式存储数据,分摊存储压力,同时,在各个分片上构建平衡树,将数据的索引存储在平衡树的叶子节点和非叶子节点,将数据的数据记录信息存储在叶子节点,并且,非叶子节点存储在内存中。在数据查询时,无需遍历全部索引,只需基于查询条件对平衡树进行逐层查找,即可快速定位第一索引。并且,非叶子节点存储在内存中,进一步加快了数据查询速度,实现数据的高效查询。
为了实施以上方法,本发明实施例还提供一种数据查询装置,该数据查询装置具体可以集成在终端设备如手机、平板电脑等设备中。
例如,请参阅图3a,图3a是本发明实施例提供的数据查询装置的第一种结构示意图。该数据查询装置可以包括获取单元301、确定单元302、查询单元303和响应单元304,如下:
获取单元301,用于当接收到数据查询请求时,根据所述数据查询请求确定第一片键和查询条件。
确定单元302,用于从分片集群中确定与所述第一片键对应的第一分片,并从所述第一分片存储的多个平衡树中,确定出与所述查询条件匹配的目标平衡树,其中,所述平衡树包括存储有数据记录信息和索引的叶子节点,以及存储有索引的非叶子节点,所述非叶子节点存储在内存。
查询单元303,用于对所述目标平衡树进行逐层查找,以从叶子节点获取满足所述查询条件的第一索引,以及与所述第一索引关联的数据记录信息。
响应单元304,用于根据所述数据记录信息,从所述第一分片上获取所述第一索引对应的第一数据,并基于所述第一数据响应所述数据查询请求。
在一些实施例中,获取单元301还用于:
从所述数据查询请求中获取目标用户标识;
对所述目标用户标识执行哈希取模操作,得到第一片键。
在一些实施例中,确定单元302还用于:
确定所述第一分片中存储的平衡树对应的复合索引,并获取所述复合索引包含的第一数据属性;
获取所述查询条件包含的第二数据属性;
按照最左匹配规则,将所述第一数据属性与所述第二数据属性进行匹配,以从多个平衡树中,确定出与所述查询条件匹配的目标平衡树。
在一些实施例中,所述查询条件包括索引范围,所述平衡树的叶子节点按照索引值由小至大的顺序连通过指针连接;
获取单元301还用于:根据所述数据查询请求确定索引范围,以及所述索引范围的第一边界值;
查询单元303还用于:对所述目标平衡树进行逐层查找,以确定所述第一边界值所在的叶子节点,并将所述第一边界值所在的叶子节点作为目标叶子节点;
以所述目标叶子节点作为起点,基于所述指针遍历所述目标平衡树的叶子节点,以获取满足所述查询条件的第一索引,以及所述第一索引值关联的数据记录信息。
在一些实施例中,所述数据记录信息为数据在所述第一分片中的硬盘逻辑地址;响应单元304还用于:
根据所述硬盘逻辑地址,从所述第一分片的存储区域中获取所述第一索引对应的第一数据。
在一些实施例中,所述查询条件还包括排序规则,响应单元304还用于:
按照所述排序规则对所述第一数据进行排序;
并基于排序后的所述第一数据响应所述数据查询请求。
请参阅图3b,图3b是本发明实施例提供的数据查询装置的第二种结构示意图。
在一些实施例中,该装置还包括:第一存储单元305、第一生成单元306、第二存储单元307;
获取单元301还用于:当接收到数据存储请求时,根据所述数据存储请求确定第二片键和待存储的第二数据;
确定单元302还用于:从分片集群中确定与所述第二片键对应的第二分片;
第一存储单元305用于:将所述第二数据存储至所述第二分片的存储区域,并根据存储位置生成数据记录信息;
第一生成单元306用于:根据所述第二数据,生成所述第二分片的平衡树对应的第二索引;
查询单元303还用于:对所述第二分片的平衡树进行逐层查找,以确定出所述第二索引对应的叶子节点;
第二存储单元307用于:并将所述第二索引和根据存储位置生成的数据记录信息存储值确定出的叶子节点。
请参阅图3c,图3c是本发明实施例提供的数据查询装置的第三种结构示意图。
在一些实施例中,该装置还包括:第二生成单元308和删除单元309;
获取单元301还用于:当接收到数据删除请求时,根据所述数据删除请求确定第三片键和待删除的第三数据;
确定单元302还用于:从分片集群中确定出与所述第三片键对应的第三分片;
第二生成单元308用于:根据所述第三数据,生成所述第三分片的平衡树对应的第三索引;
查询单元303还用于:对所述第三分片的平衡树进行逐层查找,以确定出所述第三索引对应的叶子节点;
删除单元309用于:从确定出的叶子节点获取所述第三索引关联的数据记录信息;根据所述数据记录信息删除所述第三分片上存储的所述第三数据,并从确定出的叶子节点上,将所述第三索引、以及所述第三索引关联的数据记录信息删除。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
应当说明的是,本发明实施例提供的数据查询装置与上文实施例中的数据查询方法属于同一构思,在数据查询装置上可以运行数据查询方法实施例中提供的任一方法,其具体实现过程详见数据查询方法实施例,此处不再赘述。
本发明实施例提出的数据查询装置,当接收到数据查询请求时,获取单元301根据数据查询请求确定出第一片键和查询条件,确定单元302从分片集群中确定出第一片键对应的第一分片。然后,从该第一分片中的多个平衡树中确定出与查询条件对应的目标平衡树,查询单元303对目标平衡树进行逐层查找,从叶子节点获取满足查询条件的第一索引,并获取第一索引关联的数据记录信息,响应单元304基于该数据记录信息,可以从第一分片中获取第一索引对应的第一数据,即为数据查询请求所要请求的数据,因此,可以基于该第一数据响应数据查询请求。本方案以分片集群的形式分布式存储数据,分摊存储压力,同时,在各个分片上构建平衡树,将数据的索引存储在平衡树的叶子节点和非叶子节点,将数据的数据记录信息存储在叶子节点,并且,非叶子节点存储在内存中。在数据查询时,无需遍历全部索引,只需基于查询条件对平衡树进行逐层查找,即可快速定位第一索引。并且,非叶子节点存储在内存中,进一步加快了数据查询速度,实现数据的高效查询。
本发明实施例还提供一种电子设备,该电子设备可以是服务器或者代理服务器。请参阅图4,图4是本发明实施例提供的电子设备的结构示意图。具体来讲:
该电子设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图4中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
电子设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该电子设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
当接收到数据查询请求时,根据所述数据查询请求确定第一片键和查询条件;
从分片集群中确定与所述第一片键对应的第一分片,并从所述第一分片存储的多个平衡树中,确定出与所述查询条件匹配的目标平衡树,其中,所述平衡树包括存储有数据记录信息和索引的叶子节点,以及存储有索引的非叶子节点,所述非叶子节点存储在内存;
对所述目标平衡树进行逐层查找,以从叶子节点获取满足所述查询条件的第一索引,以及与所述第一索引关联的数据记录信息;
根据所述数据记录信息,从所述第一分片上获取所述第一索引对应的第一数据,并基于所述第一数据响应所述数据查询请求。
在一些实施例中,处理器401运行存储在存储器402中的应用程序,还可以实现如下功能:
从所述数据查询请求中获取目标用户标识;
对所述目标用户标识执行哈希取模操作,得到第一片键。
在一些实施例中,处理器401运行存储在存储器402中的应用程序,还可以实现如下功能:
确定所述第一分片中存储的平衡树对应的复合索引,并获取所述复合索引包含的第一数据属性;
获取所述查询条件包含的第二数据属性;
按照最左匹配规则,将所述第一数据属性与所述第二数据属性进行匹配,以从多个平衡树中,确定出与所述查询条件匹配的目标平衡树。
在一些实施例中,所述查询条件包括索引范围,所述平衡树的叶子节点按照索引值由小至大的顺序连通过指针连接;处理器401运行存储在存储器402中的应用程序,还可以实现如下功能:
根据所述数据查询请求确定索引范围,以及所述索引范围的第一边界值;
对所述目标平衡树进行逐层查找,以确定所述第一边界值所在的叶子节点,并将所述第一边界值所在的叶子节点作为目标叶子节点;
以所述目标叶子节点作为起点,基于所述指针遍历所述目标平衡树的叶子节点,以获取满足所述查询条件的第一索引,以及所述第一索引值关联的数据记录信息。
在一些实施例中,所述数据记录信息为数据在所述第一分片中的硬盘逻辑地址;处理器401运行存储在存储器402中的应用程序,还可以实现如下功能:
根据所述硬盘逻辑地址,从所述第一分片的存储区域中获取所述第一索引对应的第一数据。
在一些实施例中,所述查询条件还包括排序规则,处理器401运行存储在存储器402中的应用程序,还可以实现如下功能:
按照所述排序规则对所述第一数据进行排序;并基于排序后的所述第一数据响应所述数据查询请求。
在一些实施例中,处理器401运行存储在存储器402中的应用程序,还可以实现如下功能:
当接收到数据存储请求时,根据所述数据存储请求确定第二片键和待存储的第二数据;从分片集群中确定与所述第二片键对应的第二分片;将所述第二数据存储至所述第二分片的存储区域,并根据存储位置生成数据记录信息;根据所述第二数据,生成所述第二分片的平衡树对应的第二索引;对所述第二分片的平衡树进行逐层查找,以确定出所述第二索引对应的叶子节点;并将所述第二索引和根据存储位置生成的数据记录信息存储值确定出的叶子节点。
在一些实施例中,处理器401运行存储在存储器402中的应用程序,还可以实现如下功能:
当接收到数据删除请求时,根据所述数据删除请求确定第三片键和待删除的第三数据;从分片集群中确定出与所述第三片键对应的第三分片;根据所述第三数据,生成所述第三分片的平衡树对应的第三索引;对所述第三分片的平衡树进行逐层查找,以确定出所述第三索引对应的叶子节点;从确定出的叶子节点获取所述第三索引关联的数据记录信息;根据所述数据记录信息删除所述第三分片上存储的所述第三数据,并从确定出的叶子节点上,将所述第三索引、以及所述第三索引关联的数据记录信息删除。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
由上所述,本发明实施例提出的电子设备,当接收到数据查询请求时,根据数据查询请求确定出第一片键和查询条件,从分片集群中确定出第一片键对应的第一分片。然后,从该第一分片中的多个平衡树中确定出与查询条件对应的目标平衡树,对目标平衡树进行逐层查找,从叶子节点获取满足查询条件的第一索引,并获取第一索引关联的数据记录信息,基于该数据记录信息,可以从第一分片中获取第一索引对应的第一数据,即为数据查询请求所要请求的数据,因此,可以基于该第一数据响应数据查询请求。本方案以分片集群的形式分布式存储数据,分摊存储压力,同时,在各个分片上构建平衡树,将数据的索引存储在平衡树的叶子节点和非叶子节点,将数据的数据记录信息存储在叶子节点,并且,非叶子节点存储在内存中。在数据查询时,无需遍历全部索引,只需基于查询条件对平衡树进行逐层查找,即可快速定位第一索引。并且,非叶子节点存储在内存中,进一步加快了数据查询速度,实现数据的高效查询。
为此,本发明实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种数据查询方法中。例如,该指令可以执行:当接收到数据查询请求时,根据所述数据查询请求确定第一片键和查询条件;从分片集群中确定与所述第一片键对应的第一分片,并从所述第一分片存储的多个平衡树中,确定出与所述查询条件匹配的目标平衡树,其中,所述平衡树包括存储有数据记录信息和索引的叶子节点,以及存储有索引的非叶子节点,所述非叶子节点存储在内存;对所述目标平衡树进行逐层查找,以从叶子节点获取满足所述查询条件的第一索引,以及与所述第一索引关联的数据记录信息;根据所述数据记录信息,从所述第一分片上获取所述第一索引对应的第一数据,并基于所述第一数据响应所述数据查询请求。
以上操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任一种数据查询方法,因此,可以实现本发明实施例所提供的任一种数据查询方法所能实现的有益效果,详见前面的实施例,在此不再赘述。以上对本发明实施例所提供的一种数据查询方法、装置及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。
Claims (11)
1.一种数据查询方法,其特征在于,包括:
当接收到数据查询请求时,根据所述数据查询请求确定第一片键和查询条件;
从分片集群中确定与所述第一片键对应的第一分片,并从所述第一分片存储的多个平衡树中,确定出与所述查询条件匹配的目标平衡树,其中,所述平衡树包括存储有数据记录信息和索引的叶子节点,以及存储有索引的非叶子节点,所述非叶子节点存储在内存;
对所述目标平衡树进行逐层查找,以从叶子节点获取满足所述查询条件的第一索引,以及与所述第一索引关联的数据记录信息;
根据所述数据记录信息,从所述第一分片上获取所述第一索引对应的第一数据,并基于所述第一数据响应所述数据查询请求。
2.如权利要求1所述的数据查询方法,其特征在于,所述根据所述数据查询请求确定第一片键,包括:
从所述数据查询请求中获取目标用户标识;
对所述目标用户标识执行哈希取模操作,得到第一片键。
3.如权利要求1所述的数据查询方法,其特征在于,所述从所述第一分片存储的多个平衡树中,确定出与所述查询条件匹配的目标平衡树,包括:
确定所述第一分片中存储的平衡树对应的复合索引,并获取所述复合索引包含的第一数据属性;
获取所述查询条件包含的第二数据属性;
按照最左匹配规则,将所述第一数据属性与所述第二数据属性进行匹配,以从多个平衡树中,确定出与所述查询条件匹配的目标平衡树。
4.如权利要求1所述的数据查询方法,其特征在于,所述查询条件包括索引范围,所述平衡树的叶子节点按照索引值由小至大的顺序连通过指针连接;
所述根据所述数据查询请求确定查询条件,包括:
根据所述数据查询请求确定索引范围,以及所述索引范围的第一边界值;
所述对所述目标平衡树进行逐层查找,以从叶子节点获取满足所述查询条件的第一索引,以及所述第一索引值关联的数据记录信息,包括:
对所述目标平衡树进行逐层查找,以确定所述第一边界值所在的叶子节点,并将所述第一边界值所在的叶子节点作为目标叶子节点;
以所述目标叶子节点作为起点,基于所述指针遍历所述目标平衡树的叶子节点,以获取满足所述查询条件的第一索引,以及所述第一索引值关联的数据记录信息。
5.如权利要求4所述的数据查询方法,其特征在于,所述数据记录信息为数据在所述第一分片中的硬盘逻辑地址;所述根据所述数据记录信息,从所述第一分片上获取所述第一索引对应的第一数据,包括:
根据所述硬盘逻辑地址,从所述第一分片的存储区域中获取所述第一索引对应的第一数据。
6.如权利要求4所述的数据查询方法,其特征在于,所述查询条件还包括排序规则,所述基于所述第一数据响应所述数据查询请求,包括:
按照所述排序规则对所述第一数据进行排序;
并基于排序后的所述第一数据响应所述数据查询请求。
7.如权利要求1至6任一项所述的数据查询方法,其特征在于,还包括:
当接收到数据存储请求时,根据所述数据存储请求确定第二片键和待存储的第二数据;
从分片集群中确定与所述第二片键对应的第二分片;
将所述第二数据存储至所述第二分片的存储区域,并根据存储位置生成数据记录信息;
根据所述第二数据,生成所述第二分片的平衡树对应的第二索引;
对所述第二分片的平衡树进行逐层查找,以确定出所述第二索引对应的叶子节点;
并将所述第二索引和根据存储位置生成的数据记录信息存储值确定出的叶子节点。
8.如权利要求1至6任一项所述的数据查询方法,其特征在于,还包括:
当接收到数据删除请求时,根据所述数据删除请求确定第三片键和待删除的第三数据;
从分片集群中确定出与所述第三片键对应的第三分片;
根据所述第三数据,生成所述第三分片的平衡树对应的第三索引;
对所述第三分片的平衡树进行逐层查找,以确定出所述第三索引对应的叶子节点;
从确定出的叶子节点获取所述第三索引关联的数据记录信息;
根据所述数据记录信息删除所述第三分片上存储的所述第三数据,并从确定出的叶子节点上,将所述第三索引、以及所述第三索引关联的数据记录信息删除。
9.一种数据查询装置,其特征在于,包括:
获取单元,用于当接收到数据查询请求时,根据所述数据查询请求确定第一片键和查询条件;
确定单元,用于从分片集群中确定与所述第一片键对应的第一分片,并从所述第一分片存储的多个平衡树中,确定出与所述查询条件匹配的目标平衡树,其中,所述平衡树包括存储有数据记录信息和索引的叶子节点,以及存储有索引的非叶子节点,所述非叶子节点存储在内存;
查询单元,用于对所述目标平衡树进行逐层查找,以从叶子节点获取满足所述查询条件的第一索引,以及与所述第一索引关联的数据记录信息;
响应单元,用于根据所述数据记录信息,从所述第一分片上获取所述第一索引对应的第一数据,并基于所述第一数据响应所述数据查询请求。
10.一种存储介质,其特征在于,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至8任一项所述的数据查询方法。
11.一种电子设备,其特征在于,包括:存储器、处理器及存储在所述存储器上,并可在所述处理器上运行的数据查询程序,所述数据查询程序被所述处理器执行时实现权利要求1至8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910978583.8A CN110704453B (zh) | 2019-10-15 | 2019-10-15 | 一种数据查询方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910978583.8A CN110704453B (zh) | 2019-10-15 | 2019-10-15 | 一种数据查询方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110704453A true CN110704453A (zh) | 2020-01-17 |
CN110704453B CN110704453B (zh) | 2022-05-06 |
Family
ID=69199617
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910978583.8A Active CN110704453B (zh) | 2019-10-15 | 2019-10-15 | 一种数据查询方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110704453B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111259060A (zh) * | 2020-02-18 | 2020-06-09 | 北京百度网讯科技有限公司 | 数据查询的方法及装置 |
CN111274274A (zh) * | 2020-02-06 | 2020-06-12 | 北京百度网讯科技有限公司 | 规则匹配方法、装置、电子设备及存储介质 |
CN111309549A (zh) * | 2020-02-03 | 2020-06-19 | 北京字节跳动网络技术有限公司 | 监控方法、系统、可读介质及电子设备 |
CN112069185A (zh) * | 2020-09-10 | 2020-12-11 | 工银科技有限公司 | 索引构建方法、装置、电子设备和介质 |
CN112380275A (zh) * | 2021-01-15 | 2021-02-19 | 北京金山云网络技术有限公司 | 数据查询方法、装置及电子设备 |
CN112597152A (zh) * | 2020-12-04 | 2021-04-02 | 国创新能源汽车智慧能源装备创新中心(江苏)有限公司 | 基于跳跃表的带特征的时序数据的索引方法、索引装置 |
CN112632304A (zh) * | 2020-12-31 | 2021-04-09 | 广州文远知行科技有限公司 | 基于索引的数据查找方法、装置、服务器及存储介质 |
CN113347094A (zh) * | 2021-06-22 | 2021-09-03 | 深圳壹账通智能科技有限公司 | 分片路由方法、装置、设备及存储介质 |
CN113434518A (zh) * | 2021-08-26 | 2021-09-24 | 西安热工研究院有限公司 | 时序数据库查询方法、系统、设备及存储介质 |
CN113645304A (zh) * | 2021-08-13 | 2021-11-12 | 恒生电子股份有限公司 | 数据服务处理方法及相关设备 |
CN113656634A (zh) * | 2021-08-03 | 2021-11-16 | 深圳邦企邦信息技术有限公司 | 非通话类录音文件的智能查询方法及装置 |
US11544597B2 (en) | 2020-04-30 | 2023-01-03 | International Business Machines Corporation | Problem manipulators for language-independent computerized reasoning |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5781906A (en) * | 1996-06-06 | 1998-07-14 | International Business Machines Corporation | System and method for construction of a data structure for indexing multidimensional objects |
CN1897629A (zh) * | 2006-06-30 | 2007-01-17 | 南京联创科技股份有限公司 | 基于内存的海量话单快速交叉排重方法 |
CN102169507A (zh) * | 2011-05-26 | 2011-08-31 | 厦门雅迅网络股份有限公司 | 一种分布式实时搜索引擎 |
CN102609530A (zh) * | 2012-02-14 | 2012-07-25 | 江苏新大诚信息技术有限公司 | 一种分区域双树结构的空间数据库索引方法 |
CN103795811A (zh) * | 2014-03-06 | 2014-05-14 | 焦点科技股份有限公司 | 一种基于元数据保存存储信息及统计管理数据的方法 |
CN104142958A (zh) * | 2013-05-10 | 2014-11-12 | 华为技术有限公司 | 一种键值对系统中数据的存储方法和相关装置 |
CN104243425A (zh) * | 2013-06-19 | 2014-12-24 | 深圳市腾讯计算机系统有限公司 | 一种在内容分发网络中进行内容管理的方法、装置及系统 |
US20170147646A1 (en) * | 2015-11-23 | 2017-05-25 | Sap Se | Conversion of Model Views Into Relational Models |
CN107526550A (zh) * | 2017-09-06 | 2017-12-29 | 中国人民大学 | 一种基于日志结构合并树的两阶段合并方法 |
CN108446357A (zh) * | 2018-03-12 | 2018-08-24 | 浙江大学 | 一种基于二维地理位置的海量数据空间范围查询方法 |
CN109033248A (zh) * | 2018-07-05 | 2018-12-18 | 华为技术有限公司 | 存储数据记录的方法与装置、查询数据记录的方法和装置 |
CN109582677A (zh) * | 2018-12-03 | 2019-04-05 | 东北大学 | 基于孩子节点的多粒度分布式读写锁的r树索引优化方法 |
CN110019080A (zh) * | 2017-07-14 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 数据访问方法和装置 |
CN110059090A (zh) * | 2019-04-19 | 2019-07-26 | 阿里巴巴集团控股有限公司 | 一种位图索引的写入/转储/合并/查询方法和装置 |
CN110231977A (zh) * | 2018-03-05 | 2019-09-13 | 中兴通讯股份有限公司 | 数据库的处理方法、装置、存储介质及电子装置 |
-
2019
- 2019-10-15 CN CN201910978583.8A patent/CN110704453B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5781906A (en) * | 1996-06-06 | 1998-07-14 | International Business Machines Corporation | System and method for construction of a data structure for indexing multidimensional objects |
CN1897629A (zh) * | 2006-06-30 | 2007-01-17 | 南京联创科技股份有限公司 | 基于内存的海量话单快速交叉排重方法 |
CN102169507A (zh) * | 2011-05-26 | 2011-08-31 | 厦门雅迅网络股份有限公司 | 一种分布式实时搜索引擎 |
CN102609530A (zh) * | 2012-02-14 | 2012-07-25 | 江苏新大诚信息技术有限公司 | 一种分区域双树结构的空间数据库索引方法 |
CN104142958A (zh) * | 2013-05-10 | 2014-11-12 | 华为技术有限公司 | 一种键值对系统中数据的存储方法和相关装置 |
CN104243425A (zh) * | 2013-06-19 | 2014-12-24 | 深圳市腾讯计算机系统有限公司 | 一种在内容分发网络中进行内容管理的方法、装置及系统 |
CN103795811A (zh) * | 2014-03-06 | 2014-05-14 | 焦点科技股份有限公司 | 一种基于元数据保存存储信息及统计管理数据的方法 |
US20170147646A1 (en) * | 2015-11-23 | 2017-05-25 | Sap Se | Conversion of Model Views Into Relational Models |
CN110019080A (zh) * | 2017-07-14 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 数据访问方法和装置 |
CN107526550A (zh) * | 2017-09-06 | 2017-12-29 | 中国人民大学 | 一种基于日志结构合并树的两阶段合并方法 |
CN110231977A (zh) * | 2018-03-05 | 2019-09-13 | 中兴通讯股份有限公司 | 数据库的处理方法、装置、存储介质及电子装置 |
CN108446357A (zh) * | 2018-03-12 | 2018-08-24 | 浙江大学 | 一种基于二维地理位置的海量数据空间范围查询方法 |
CN109033248A (zh) * | 2018-07-05 | 2018-12-18 | 华为技术有限公司 | 存储数据记录的方法与装置、查询数据记录的方法和装置 |
CN109582677A (zh) * | 2018-12-03 | 2019-04-05 | 东北大学 | 基于孩子节点的多粒度分布式读写锁的r树索引优化方法 |
CN110059090A (zh) * | 2019-04-19 | 2019-07-26 | 阿里巴巴集团控股有限公司 | 一种位图索引的写入/转储/合并/查询方法和装置 |
Non-Patent Citations (1)
Title |
---|
陈红: "基于Hadoop 的分布式SQL 数据库索引设计与实践", 《舰船电子工程》 * |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111309549A (zh) * | 2020-02-03 | 2020-06-19 | 北京字节跳动网络技术有限公司 | 监控方法、系统、可读介质及电子设备 |
CN111309549B (zh) * | 2020-02-03 | 2023-04-21 | 北京字节跳动网络技术有限公司 | 监控方法、系统、可读介质及电子设备 |
CN111274274A (zh) * | 2020-02-06 | 2020-06-12 | 北京百度网讯科技有限公司 | 规则匹配方法、装置、电子设备及存储介质 |
CN111274274B (zh) * | 2020-02-06 | 2023-08-15 | 北京百度网讯科技有限公司 | 规则匹配方法、装置、电子设备及存储介质 |
CN111259060A (zh) * | 2020-02-18 | 2020-06-09 | 北京百度网讯科技有限公司 | 数据查询的方法及装置 |
CN111259060B (zh) * | 2020-02-18 | 2023-08-15 | 北京百度网讯科技有限公司 | 数据查询的方法及装置 |
US11544597B2 (en) | 2020-04-30 | 2023-01-03 | International Business Machines Corporation | Problem manipulators for language-independent computerized reasoning |
CN112069185A (zh) * | 2020-09-10 | 2020-12-11 | 工银科技有限公司 | 索引构建方法、装置、电子设备和介质 |
CN112069185B (zh) * | 2020-09-10 | 2024-04-23 | 中国工商银行股份有限公司 | 索引构建方法、装置、电子设备和介质 |
CN112597152A (zh) * | 2020-12-04 | 2021-04-02 | 国创新能源汽车智慧能源装备创新中心(江苏)有限公司 | 基于跳跃表的带特征的时序数据的索引方法、索引装置 |
CN112597152B (zh) * | 2020-12-04 | 2022-08-23 | 国创移动能源创新中心(江苏)有限公司 | 基于跳跃表的带特征的时序数据的索引方法、索引装置 |
CN112632304A (zh) * | 2020-12-31 | 2021-04-09 | 广州文远知行科技有限公司 | 基于索引的数据查找方法、装置、服务器及存储介质 |
CN112632304B (zh) * | 2020-12-31 | 2024-05-03 | 广州文远知行科技有限公司 | 基于索引的数据查找方法、装置、服务器及存储介质 |
CN112380275B (zh) * | 2021-01-15 | 2021-07-23 | 北京金山云网络技术有限公司 | 数据查询方法、装置及电子设备 |
CN112380275A (zh) * | 2021-01-15 | 2021-02-19 | 北京金山云网络技术有限公司 | 数据查询方法、装置及电子设备 |
CN113347094B (zh) * | 2021-06-22 | 2022-05-20 | 深圳壹账通智能科技有限公司 | 分片路由方法、装置、设备及存储介质 |
CN113347094A (zh) * | 2021-06-22 | 2021-09-03 | 深圳壹账通智能科技有限公司 | 分片路由方法、装置、设备及存储介质 |
CN113656634A (zh) * | 2021-08-03 | 2021-11-16 | 深圳邦企邦信息技术有限公司 | 非通话类录音文件的智能查询方法及装置 |
CN113645304A (zh) * | 2021-08-13 | 2021-11-12 | 恒生电子股份有限公司 | 数据服务处理方法及相关设备 |
CN113645304B (zh) * | 2021-08-13 | 2023-06-16 | 恒生电子股份有限公司 | 数据服务处理方法及相关设备 |
CN113434518A (zh) * | 2021-08-26 | 2021-09-24 | 西安热工研究院有限公司 | 时序数据库查询方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110704453B (zh) | 2022-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704453B (zh) | 一种数据查询方法、装置、存储介质及电子设备 | |
US8126997B2 (en) | Hot data management method based on hit counter | |
CN103631924B (zh) | 一种分布式数据库平台的应用方法和系统 | |
JP5375972B2 (ja) | 分散ファイルシステム、そのデータ選択方法およびプログラム | |
US20170193039A1 (en) | Servicing queries of an event log | |
CN108460041A (zh) | 数据的处理方法和装置 | |
CN108694188B (zh) | 一种索引数据更新的方法以及相关装置 | |
WO2014110940A1 (en) | A method, apparatus and system for storing, reading the directory index | |
CN111917834A (zh) | 一种数据同步方法、装置、存储介质及计算机设备 | |
WO2016169237A1 (zh) | 数据处理方法及装置 | |
CN111400334A (zh) | 数据处理方法、装置、存储介质及电子装置 | |
CN110737663A (zh) | 一种数据存储方法、装置、设备及存储介质 | |
CN114610680A (zh) | 分布式文件系统元数据管理方法、装置、设备及存储介质 | |
CN109947759A (zh) | 一种数据索引建立方法、索引检索方法及装置 | |
CN111274004B (zh) | 进程实例管理方法、装置及计算机存储介质 | |
JPH05241934A (ja) | 計算機システム | |
CN111767282A (zh) | 基于MongoDB的存储系统及数据插入方法和存储介质 | |
CN111666302A (zh) | 用户排名的查询方法、装置、设备及存储介质 | |
CN108595482B (zh) | 一种数据索引方法及装置 | |
JP2013242675A (ja) | 分散情報制御装置、分散情報検索方法、データ分散配置方法、及びプログラム | |
CN107291875B (zh) | 一种基于元数据图的元数据组织管理方法和系统 | |
Bao et al. | Query optimization of massive social network data based on hbase | |
CN111324800B (zh) | 业务事项展示方法、装置和计算机可读存储介质 | |
Lu et al. | Content sharing graphs for deduplication-enabled storage systems | |
CN111782150A (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 |