CN112817980A - 一种数据索引处理方法、装置、设备及存储介质 - Google Patents
一种数据索引处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112817980A CN112817980A CN202110162538.2A CN202110162538A CN112817980A CN 112817980 A CN112817980 A CN 112817980A CN 202110162538 A CN202110162538 A CN 202110162538A CN 112817980 A CN112817980 A CN 112817980A
- Authority
- CN
- China
- Prior art keywords
- index
- data
- record
- sub
- index record
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 35
- 238000000034 method Methods 0.000 claims abstract description 39
- 238000012545 processing Methods 0.000 claims abstract description 21
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据处理技术领域,具体是一种数据索引处理方法、装置、设备及存储介质,所述方法包括:当存储第一数据索引时,获取与所述第一数据索引的关键字对应的主索引记录,判断所述主索引记录是否关联有子索引记录;当所述主索引记录未关联有子索引记录时,获取所述主索引记录中所有记录数据的总数据量,判断所述总数据量是否达到第一预设阈值;如果所述总数据量达到第一预设阈值,则创建与所述主索引记录关联的多个子索引记录;将所述主索引记录中的所有记录数据存储至所述多个子索引记录中,删除所述主索引记录中的所有记录数据。本发明的数据索引处理方法可以降低单个索引记录的记录数据量,提高索引记录的读写效率和访问性能。
Description
技术领域
本发明涉及数据处理技术领域,特别涉及一种数据索引处理方法、装置、设备及存储介质。
背景技术
随着信息技术的高速发展,数据海量存储对存储系统提出了新的需求和挑战,为了应对这种挑战,键值(Key-Value,KV)存储系统应运而生。KV存储系统是采用键值对的形式组织、索引和存储数据的计算系统,能够满足对海量数据的高效率存储和访问的需求。KV存储系统非常适合不涉及过多数据关系和业务关系的业务数据,同时能有效减少读写磁盘的次数,比关系型数据库存储拥有更好的读写性能。
相关技术中,KV存储系统的典型存储方式是一个关键字(Key)对应一个记录数据(Value),一个Key和一个Value组成一条索引记录,Value可以是任意不定长记录数据,通过Key可作简单查询和复杂查询(如列表查询、范围查询等),KV存储系统定期进行更新数据和历史数据的合并(该合并操作可以包括添加、删除、修改等操作)以处理过期数据。
但是,当一条索引记录下的记录数据非常大(记录数据的总长度或者总数据量非常大)时,该索引记录的Value将会非常大,进而导致读、写该索引记录的性能非常差。例如,对于Key为名字,Value为QQ号列表的一条索引记录,假设名字相同的QQ号有100万个(假设每个4字节),那么每次查询或更新该索引记录,需要操作4MB的索引记录,访问性能较差。因此,如何有效地存储大索引记录,并提升索引记录的访问性能,成为重点需要考虑的问题。
发明内容
针对现有技术的上述问题,本发明的目的在于提供一种数据索引处理方法、装置、设备及存储介质,可以提高索引记录的读写效率及访问性能。
为了解决上述问题,本发明提供一种数据索引处理方法,包括:
当存储第一数据索引时,获取与所述第一数据索引的关键字对应的主索引记录,判断所述主索引记录是否关联有子索引记录;
当所述主索引记录未关联有子索引记录时,获取所述主索引记录中所有记录数据的总数据量,判断所述总数据量是否达到第一预设阈值;
如果所述总数据量达到第一预设阈值,则创建与所述主索引记录关联的多个子索引记录;
将所述主索引记录中的所有记录数据存储至所述多个子索引记录中,删除所述主索引记录中的所有记录数据。
本发明另一方面提供一种数据索引处理装置,包括:
第一判断模块,用于当存储第一数据索引时,获取与所述第一数据索引的关键字对应的主索引记录,判断所述主索引记录是否关联有子索引记录;
第二判断模块,用于当所述主索引记录未关联有子索引记录时,获取所述主索引记录中所有记录数据的总数据量,判断所述总数据量是否达到第一预设阈值;
创建模块,用于当所述总数据量达到第一预设阈值时,创建与所述主索引记录关联的多个子索引记录;
第一存储模块,用于将所述主索引记录中的所有记录数据存储至所述多个子索引记录中,删除所述主索引记录中的所有记录数据。
本发明另一方面提供一种电子设备,包括处理器和存储器,所述存储器中存储有至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由所述处理器加载并执行以实现如上述的数据索引处理方法。
本发明另一方面提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由处理器加载并执行以实现如上述的数据索引处理方法。
本发明另一方面提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的数据索引处理方法。
由于上述技术方案,本发明具有以下有益效果:
(1)本发明的数据索引处理方法,在主索引记录中记录数据的总数据量达到预设阈值的情况下,创建与所述主索引记录关联的多个子索引记录,并将所述主索引记录中的记录数据存储至所述多个子索引记录中,可以降低单个索引记录的记录数据量,从而可以提高索引记录的读写效率和访问性能。
(2)本发明数据索引处理方法,在子索引记录中记录数据的总数据量达到预设阈值的情况下,将所述子索引记录拆分为多个子索引记录,并将所述第一子索引记录中的所有记录数据存储至拆分得到的多个子索引记录中,可以降低单个索引记录的记录数据量,从而可以进一步提高索引记录的读写效率和访问性能。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本发明一个实施例提供的实施环境示意图;
图2A是本发明一个实施例提供的区块链系统的结构示意图;
图2B是本发明一个实施例提供的区块的结构示意图;
图2C是本发明一个实施例提供的新区块生成示意图;
图3是本发明一个实施例提供的数据索引处理方法的流程图;
图4是本发明一个实施例提供的主索引记录的结构示意图;
图5是本发明另一个实施例提供的主索引记录的结构示意图;
图6是本发明一个实施例提供的子索引记录的结构示意图;
图7是本发明另一个实施例提供的数据索引处理方法的流程图;
图8是本发明一个实施例提供的主索引记录分裂示意图;
图9是本发明另一个实施例提供的数据索引处理方法的流程图;
图10是本发明一个实施例提供的数据索引处理装置的结构示意图;
图11是本发明一个实施例提供的服务器的结构示意图。
具体实施方式
大数据(Big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。随着云时代的来临,大数据也吸引了越来越多的关注,大数据需要特殊的技术,以有效地处理大量的容忍经过时间内的数据。适用于大数据的技术,包括大规模并行处理数据库、数据挖掘、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展的存储系统。具体地,本发明实施例提供的数据索引处理方法涉及大数据领域的云存储技术等。
云存储(Cloud Storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,ID entity)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
参考说明书附图1,其示出了本发明一个实施例提供的实施环境的示意图,如图1所示,该实施环境可以至少包括终端110和服务器120。所述终端110和所述服务器120可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例对此不做限制。
所述终端110可以包括智能手机、平板电脑、电子书阅读器、膝上型便携计算机和台式计算机等,但并不局限于此。所述终端110可以运行有一个或多个客户端,所述客户端可以为一些服务商提供给用户的网页页面,也可以为这些服务商提供给用户的应用。
所述服务器120可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content DeliveryNetwork,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
本发明实施例中,所述客户端可以为各种类型的客户端,例如社交类应用客户端、即时通信客户端、支付类应用客户端、游戏客户端、阅读客户端、专用于线上交易的客户端等。用户使用客户端时产生的各种数据可以发送至所述服务器120,所述服务器120可以将所述数据存储至数据库中,以便于后续进行查询使用,例如可以存储至KV数据库中,并建立对应的数据索引。
需要说明的是,图1仅仅是一种示例。
在一个可能的实施例中,参见图2A所示的数据共享系统200,数据共享系统200是指用于进行节点与节点之间数据共享的系统,该数据共享系统中可以包括多个节201,多个节点201可以是指数据共享系统中各个客户端或者各个服务器。每个节点201在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该数据共享系统内的共享数据。为了保证数据共享系统内的信息互通,数据共享系统中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。例如,当数据共享系统中的任意节点接收到输入信息时,数据共享系统中的其他节点便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得数据共享系统中全部节点上存储的数据均一致。
对于数据共享系统中的每个节点,均具有与其对应的节点标识,而且数据共享系统中的每个节点均可以存储有数据共享系统中其他节点的节点标识,以便后续根据其他节点的节点标识,将生成的区块广播至数据共享系统中的其他节点。每个节点中可维护一个如下表所示的节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为网络之间互联的协议(Internet Protocol,IP)地址以及其他任一种能够用于标识该节点的信息,表1中仅以IP地址为例进行说明。
表1
节点名称 | 节点标识 |
节点1 | 117.114.151.174 |
节点2 | 117.116.189.145 |
… | … |
节点N | 119.123.789.258 |
数据共享系统中的每个节点均存储一条相同的区块链。区块链由多个区块组成,参见图2B,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
在生成区块链中的各个区块时,参见图2C,区块链所在的节点在接收到输入信息时,对输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:
SHA256(SHA256(version+prev_hash+merkle_root+ntime+nbits+x))<TARGET
其中,SHA256为计算特征值所用的特征值算法;版本号(version)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的区块头特征值;merkle_root为输入信息的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;TARGET为特征值阈值,该特征值阈值可以根据nbits确定得到。
这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到当前区块。随后,区块链所在节点根据数据共享系统中其他节点的节点标识,将新生成的区块分别发送给其所在的数据共享系统中的其他节点,由其他节点对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。
本发明提供的数据索引处理方法可以应用于KV数据库中,KV数据库的典型存储方式是一个Key和一个Value,所述KV数据库可以采用Hash索引,提供等值索引查询功能,Hash索引的实现也是一个Key和一个Value。
示例性地,KV数据库中的数据可以存储于数据表中,例如手机QQ的用户信息(包括用户的名字、QQ号和等级等信息)可以存储于表2所示的数据表中。
表2
名字(Name) | 等级(Level) | ... | |
User1 | 1 | 1 | ... |
User2 | 2 | 1 | ... |
User1 | 3 | 1 | ... |
在KV数据库中,通常会将Name+QQ或QQ做为Key,唯一的标识一个用户,其他字段做为Value;当需要查询Name相同的QQ号时,则需要对Name字段建立索引,即如表3所示,生成Key为Name,Value为QQ列表的一条索引记录。
表3
名字(Name) | QQ列表 |
User1 | 1,3 |
User2 | 2 |
当一条索引记录下的记录数非常大时,该索引记录的Value将会非常大,进而导致读、写该索引记录的性能非常差。如名字相同的QQ列表有100万个(假设每个4字节),那么每次查询或更新该索引记录,需要操作4MB的索引记录。本发明提供的数据索引处理方法即为一种大小索引自适应调整方法,使得小索引性能不下降,大索引性能不会随数据量增大而下降,以解决大小索引同时并存的性能问题。下面对本发明提供的数据索引处理方法进行详细描述。
参考说明书附图3,其示出了本发明一个实施例提供的数据索引处理方法的流程,该方法可以应用于图1中的服务器或者图2A中的数据共享系统中。如图3所示,所述方法可以包括以下步骤:
S310:当存储第一数据索引时,获取与所述第一数据索引的关键字对应的主索引记录,判断所述主索引记录是否关联有子索引记录。
本发明实施例中,当获取到待存储数据时,可以生成所述待存储数据的第一数据索引,通过键值对的形式将所述待存储数据存储至KV数据库的数据表中,所述第一数据索引包括关键字和记录数据。示例性地,假设待存储数据为Name为User1,QQ号为1的用户数据,那么可以生成Key为Name(即为User1),Value为QQ(即为1)的数据索引。
本发明实施例中,当获取到多个Key相同的数据索引时,可以将所述多个Key相同的数据索引存储至同一个索引记录中,即为一个主索引记录。当存储第一数据索引时,可以通过所述第一数据索引的关键字确定对应的主索引记录,以使得可以将所述第一数据索引的记录数据存储至对应的主索引记录中。
示例性地,假设获取到Key为User1的数据索引有3个,分别为Key为User1、Valve为1,Key为User1、Valve为2,以及Key为User1、Valve为3的三个数据索引,则可以将这三个数据索引存储至一个索引记录中,得到Key为User1,Valve分别为1、2、3的一个主索引记录。
在一个可能的实施例中,所述主索引记录可以包括路由信息,所述路由信息包括所述主索引记录的记录数据的总数量、记录数据的总长度、号段区间数量以及各个号段区间的号段区间信息。因此,当确定与所述第一数据索引的关键字对应的主索引记录后,判断所述主索引记录是否关联有子索引记录可以包括:
获取所述路由信息中的号段区间数量;
根据所述号段区间数量判断所述主索引记录是否关联有子索引记录。
具体地,如果所述号段区间数量为1,则可以判定所述主索引记录未关联有子索引记录,如果所述号段区间数量大于1,则可以判定所述主索引记录关联有子索引记录。其中,记录数据的总长度是指所述主索引记录对应的所有记录数据(包括所有关联的子索引记录中的记录数据)占用存储空间的大小,例如,假设每个记录数据为固定长度10B,如果一个主索引记录下有1000个记录数据,则所述主索引记录的记录数据的总长度即为10000B。号段是指一致性哈希(Hash)虚拟节点,每个号段区间至少包括一个号段,号段的总数量可以根据实际情况进行设置,例如可以设置为10000个,本发明实施例对此不做限定。
具体地,所述各个号段区间的号段区间信息可以包括各个号段区间的号段起始值以及号段区间中记录数据的总数据量,所述总数据量可以为记录数据的总数量或者总长度。可以理解的是,前一个号段区间的号段结束值(未记录)可以为后一个号段区间的号段起始值减1。当所述主索引记录未关联有子索引记录时,所述主索引记录还可以存储有第一个号段区间中的所有记录数据;当所述主索引记录关联有子索引记录时,所述主索引记录仅包括所述路由信息。
S320:当所述主索引记录未关联有子索引记录时,获取所述主索引记录中所有记录数据的总数据量,判断所述总数据量是否达到第一预设阈值。
本发明实施例中,当所述主索引记录未关联有子索引记录时,如图4所示,所述主索引记录还可以存储有第一个号段区间中所有的记录数据,可以将所述第一数据索引的记录数据直接存储至所述主索引记录中,此时,所述路由信息中记录数据的总数量和总长度也会发生变化。
在一个可能的实施例中,所述主索引记录中所有记录数据的总数据量可以为所有记录数据的总长度,判断所述总数据量是否达到第一预设阈值可以为判断所述总长度是否达到第一预设长度,如果所述总长度达到第一预设长度,则判定所述总数据量达到第一预设阈值,如果所述总长度未达到第一预设长度,则判定所述总数据量未达到第一预设阈值。具体地,可以从所述主索引记录的路由信息中获取所有记录数据的总长度(即第一个号段区间中所有的记录数据的总长度),并判断所述总长度是否达到第一预设长度。其中,所述第一预设长度可以根据实际情况进行设置,例如可以设置为100KB,本发明实施例对此不做限定。
在一个可能的实施例中,所述主索引记录中所有记录数据的总数据量可以为所有记录数据的总数量,判断所述总数据量是否达到第一预设阈值还可以为判断所述总数量是否达到第一预设数量,如果所述总数量达到第一预设数量,则判定所述总数据量达到第一预设阈值,如果所述总数量未达到第一预设数量,则判定所述总数据量未达到第一预设阈值。具体地,可以从所述主索引记录的路由信息中获取所有记录数据的总数量(即第一个号段区间中所有的记录数据的总数量),并判断所述总数量是否达到第一预设数量。其中,所述第一预设数量可以根据实际情况进行设置,例如可以设置为30000个,本发明实施例对此不做限定。
S330:如果所述总数据量达到第一预设阈值,则创建与所述主索引记录关联的多个子索引记录。
本发明实施例中,当判定所述总数据量达到第一预设阈值时,说明所述主索引记录中的记录数据较多,索引记录的访问性能变差,满足索引分裂条件,此时会进行索引分裂。在进行索引分裂时,可以创建多个子索引记录,用于存储所述主索引记录中的所有记录数据,而所述主索引记录中则只保留所述路由信息。其中,创建的子索引记录的个数可以根据实际情况进行设置,例如可以设置为2个,本发明实施例对此不做限定。
在一个可能的实施例中,当判定所述总数据量未达到第一预设阈值时,说明所述主索引记录中的记录数据较少,不满足索引分裂条件,此时不会进行索引分裂,数据索引处理流程结束。
S340:将所述主索引记录中的所有记录数据存储至所述多个子索引记录中,删除所述主索引记录中的所有记录数据。
本发明实施例中,所述多个子索引记录用于存储所述主索引记录中的所有记录数据,所述主索引记录中不再存储记录数据,可以删除所述主索引记录中的所有记录数据。此时,所述路由信息中的一个号段区间也会进行分裂形成多个号段区间,号段区间数量也会发生变化。
具体地,结合参考说明书附图5和图6,创建的子索引记录的个数应与分裂形成的号段区间的数量相等,所述子索引记录与所述号段区间一一对应,所述子索引记录的Key为主索引记录的Key+号段区间的号段起始值,Value为所述主索引记录中对应的号段信息在所述子索引记录对应的号段区间中的记录数据。
在一个可能的实施例中,所述将所述主索引记录中的所有记录数据存储至所述多个子索引记录中可以包括:
针对每个记录数据,确定所述记录数据对应的号段信息;
将所述号段信息分别与每个号段区间信息进行匹配,得到所述记录数据对应的目标号段区间;
根据所述目标号段区间确定所述记录数据对应的第二子索引记录,将所述记录数据存储至所述第二子索引记录中。
具体地,所述记录数据对应的号段信息可以通过下式计算得到:
号段信息=Hash(记录数据)%号段总数量 (1)
具体地,所述将所述号段信息分别与每个号段区间信息进行匹配,具体可以为判断所述号段信息是否被包括在所述号段区间内,如果被包括在所述号段区间的号段内,则为匹配成功,可以将匹配成功的号段区间作为所述目标号段区间。所述将所述记录数据存储至所述第二子索引记录中,具体可以为将所述记录数据存储至所述第二子索引记录的记录数据中。
在一些可能的实施例中,所述子索引记录中还可以包括所述子索引记录中所有记录数据的总数据量,所述总数据量可以为记录数据的总数量或者总长度。
在一个示例中,假设主索引记录为:
Key:张三,Value:10,13,111
当存储Key为张三,Value为14的第一数据索引时,主索引记录变为:
Key:张三,Value:10,13,14,111
所述主索引记录中所有记录数据的总数量达到4(假设第一预设数量为4),即所述主索引记录中所有记录数据的总数据量达到第一预设阈值,假设号段的总数量为200,则可以创建两个子索引记录,按100的号段进行分裂后可以得到3个索引记录,包括:
1个主索引记录,为:
Key:张三,Value:4(总数量),16(总长度,假设每个记录数据占用4个字节),2(号段区间数量),0(第一个号段区间的号段起始值),3(第一个号段区间中记录数据的总数量),100(第二个号段区间的号段起始值),1(第二个号段区间中记录数据的总数量)(即为Key:张三,Value:4,16,2,0,3,100,1)
2个子索引记录,为:
Key:张三+0,Value:10,13,14
Key:张三+100,Value:111
本发明的数据索引处理方法,在主索引记录中记录数据的总数据量达到预设阈值的情况下,创建与所述主索引记录关联的多个子索引记录,并将所述主索引记录中的记录数据存储至所述多个子索引记录中,可以降低单个索引记录的记录数据量,从而可以提高索引记录的读写效率和访问性能。
在一个可能的实施例中,结合参考说明书附图7,所述方法还可以包括以下步骤:
S350:当所述主索引记录关联有子索引记录时,根据所述第一数据索引的记录数据确定对应的第一子索引记录。
本发明实施例中,当所述主索引记录关联有子索引记录时,如图5和图6所示,所述主索引记录只存储有路由信息,所述路由信息中的号段区间至少为两个,所述主索引记录关联的子索引记录也至少为两个,所述子索引记录与所述路由信息中的号段区间一一对应,所述子索引记录的Key为主索引记录的Key+号段区间的号段起始值,Value为所述主索引记录中对应的号段信息在所述子索引记录对应的号段区间中的记录数据。
需要说明的是,当只有一个号段区间(或者子索引记录)时,可以将所述子索引记录中的记录数据直接存储至所述主索引记录的路由信息的后面,因此不会出现只有一个子索引记录的情形。
具体地,根据所述第一数据索引的记录数据确定对应的第一子索引记录,可以通过(1)式计算所述记录数据的号段信息,根据所述号段信息确定与之匹配的号段区间,将所述号段区间对应的子索引记录作为所述第一子索引记录。此时,可以将所述第一数据索引的记录数据存储至所述第一子索引记录中。
S360:获取所述第一子索引记录中所有记录数据的总数据量,判断所述总数据量是否达到第二预设阈值。
在一个可能的实施例中,所述第一子索引记录中所有记录数据的总数据量可以为所有记录数据的总长度,判断所述总数据量是否达到第二预设阈值可以为判断所述总长度是否达到第二预设长度,如果所述总长度达到第二预设长度,则判定所述总数据量达到第二预设阈值,如果所述总长度未达到第二预设长度,则判定所述总数据量未达到第二预设阈值。具体地,每个所述子索引记录还包括该子索引记录中记录数据的总长度,可以直接从所述子索引记录中获取该总长度,并判断所述总长度是否达到第二预设长度。其中,所述第二预设长度可以根据实际情况进行设置,例如可以设置为100KB,本发明实施例对此不做限定。
在一个可能的实施例中,所述第一子索引记录中所有记录数据的总数据量还可以为所有记录数据的总数量,判断所述总数据量是否达到第二预设阈值还可以为判断所述总数量是否达到第二预设数量,如果所述总数量达到第二预设数量,则判定所述总数据量达到第二预设阈值,如果所述总数量未达到第二预设数量,则判定所述总数据量未达到第二预设阈值。具体地,每个所述子索引记录还包括该子索引记录中记录数据的总数量,可以直接从所述子索引记录中获取该总数量,并判断所述总数量是否达到第二预设数量。其中,所述第二预设数量可以根据实际情况进行设置,例如可以设置为30000个,本发明实施例对此不做限定。
S370:如果所述总数据量达到第二预设阈值,则将所述第一子索引记录拆分为多个子索引记录。
本发明实施例中,当判定所述总数据量达到第二预设阈值时,说明所述第一子索引记录中的记录数据较多,索引记录的访问性能变差,满足索引分裂条件,此时会进行索引分裂。在进行索引分裂时,可以将所述第一子索引记录拆分为多个子索引记录,用于存储所述第一子索引记录中的所有记录数据。其中,拆分的子索引记录的个数可以根据实际情况进行设置,例如可以设置为2个,本发明实施例对此不做限定。
在一个可能的实施例中,当判定所述总数据量未达到第二预设阈值时,说明所述第一子索引记录中的记录数据较少,不满足索引分裂条件,此时不会进行索引分裂,数据索引处理流程结束。
S380:将所述第一子索引记录中的所有记录数据存储至拆分得到的多个子索引记录中。
本发明实施例中,拆分得到的多个子索引记录用于存储所述第一子索引记录中的所有记录数据,此时,所述主索引记录的路由信息中与所述第一子索引记录对应的号段区间也会进行分裂形成多个号段区间,号段区间数量也会发生变化。
在一个可能的实施例中,所述将所述第一子索引记录中的所有记录数据存储至拆分得到的多个子索引记录中可以包括:针对所述第一子索引记录中的每个记录数据,确定所述记录数据对应的号段信息;将所述号段信息分别与分裂形成的多个号段区间的号段区间信息进行匹配,得到所述记录数据对应的目标号段区间;根据所述目标号段区间确定所述记录数据对应的目标子索引记录,将所述记录数据存储至所述目标子索引记录中。
其他相关细节可以参考图3所示的方法实施例。
本发明数据索引处理方法,在子索引记录中记录数据的总数据量达到预设阈值的情况下,将所述子索引记录拆分为多个子索引记录,并将所述第一子索引记录中的所有记录数据存储至拆分得到的多个子索引记录中,可以降低单个索引记录的记录数据量,从而可以进一步提高索引记录的读写效率和访问性能。
在一个示例中,假设主索引记录为:
Key:张三,Value:4,16,2,0,3,100,1
2个子索引记录,为:
Key:张三+0,Value:10,13,14
Key:张三+100,Value:111
当存储Key为张三,Value为58的第一数据索引时,所述第一数据索引对应的第一子索引记录为:
Key:张三+0,Value:10,13,14,58
所述第一子索引记录中所有记录数据的总数量达到4(假设第二预设数量为4),即所述第一子索引记录中所有记录数据的总数据量达到第二预设阈值,则可以将所述第一子索引记录按50的号段进行拆分得到2个子索引记录,包括:
Key:张三+0,Value:10,13,14
Key:张三+50,Value:58
此时,所述主索引记录对应的号段区间也会进行分裂形成2个号段区间,号段区间数量也会加1,即所述主索引记录分裂为:
Key:张三,Value:5,20,3,0,3,50,1,100,1
子索引记录Key:张三+100,Value:111保持不变。
下面通过一个具体的实施例对本发明实施例提供的数据索引处理方法进行详细描述。具体地,结合参考说明书附图8,假设30000条记录数据时进行索引分裂,KV存储系统初始状态没有数据,索引的建立和分裂过程如下:
(1)向系统中写入1条Name为“User1”的数据索引,对应的记录数据为1个QQ号,此时系统中有1条记录数据,及1条主索引记录(该主索引记录的Key为“User1”,Value为1个QQ号);
(2)持续向系统中写入29998条Name为“User1”的数据索引,且QQ号不重复,此时系统中有29999条记录数据,及1条主索引记录(该主索引记录的Key为“User1”,Value为29999个QQ号的列表,对应的路由信息如图8中的第1行所示);
(3)继续向系统中写入Name为“User1”的数据索引,且QQ号和之前不重复,此时主索引记录“User1”下有30000条记录数据,达到索引分裂条件,此时索引记录将变为3个,包括:
1个主索引记录,所述主索引记录仅包括如图8中的第2行所示的路由信息,记录了两个号段区间的起始值及对应号段区间中记录数据的总数量。
2个子索引记录:
a)Key为“User1+0”的索引记录,Value为记录数据所属号段落入(0-5000]号段的QQ列表;
b)Key为“User1+5000”的索引记录,Value为记录数据所属号段落入(5000-10000]号段的QQ列表;
c)此时向系统中写入Name为“User1”的数据索引时,且QQ号和之前不重复,此时可以计算Hash(QQ)%10000,看该记录数据(即QQ)落入哪一个号段区间,即决定该数据索引插入到哪一个子索引记录中。
(4)若继续向系统中写入14999条Name为“User1”的数据索引,且QQ号不重复,此时系统中记录数据数量增加到49999条,索引记录保持3条。
(5)若继续向系统中写入1条Name为“User1”的数据索引,且QQ号不重复,假设步骤(4)和(5)中写入的数据索引都落入号段区间(0-5000],则号段区间(0-5000]中有30000条记录数据,将再次发生分裂,分裂为(0-2500]和(2500-5000]两个号段区间。此时索引记录将变为4个,包括:
1个主索引记录,所述主索引记录仅包括如图8中的第3行所示的路由信息,记录了三个号段区间的起始值及对应号段区间中记录数据的总数量。
3个子索引记录:
a)Key为“User1+0”的索引记录,Value为记录数据所属号段落入(0-2500]号段的QQ列表;
b)Key为“User1+2500”的索引记录,Value为记录数据所属号段落入(2500-5000]号段的QQ列表;
c)Key为“User1+5000”的索引记录,Value为记录数据所属号段落入(5000-10000]号段的QQ列表;
(5)依次类推,当一个子索引记录下的记录数据增多时,将不断进行分裂,直到每个号段区间的范围只有1个号段后不再进行分裂。
通过上述过程在KV数据库中存储数据索引,便于高效地定位到索引记录中的任意一个记录数据,进而便于查询使用。具体的,如果想要查询关键字相同的记录数据,可以通过用户输入的查询信息确定对应的关键字,进而读取所述关键字对应的主索引记录,当所述主索引记录关联有子索引记录时,还需读取与之关联的子索引记录,即可得到查询结果。如果想要查询某个记录数据对应的关键字信息是否为特定信息时,可以先确定该特定信息对应的主索引记录,再确定待查询的记录数据对应的号段区间,读取该号段区间对应的子索引记录,即可进行判断。如果想要存储某个数据索引时,可以先确定所述数据索引的关键字对应的主索引记录,再确定所述数据索引的记录数据对应的号段区间,读取该号段区间对应的子索引记录,即可进行存储。
示例性地,假设KV数据库中包括Key为Name,Value为QQ号的以下索引记录:
1个主索引记录:
Key:张三,Value:5,20,3,0,3,50,1,100,1
3个子索引记录:
Key:张三+0,Value:10,13,14
Key:张三+50,Value:58
Key:张三+100,Value:111
(1)当用户想要查询名字为“张三”的QQ号时,用户只需要输入查询信息“张三”,即可查询到对应的主索引记录,读取对应的子索引记录,进而可以快速查找到QQ号10,13,14,58,111。
(2)当用户想要查询QQ号为58的人是否名字叫张三时,可以先确定关键字为“张三”的主索引记录,并且QQ号58对应的号段区间为(50-100],则只需要读取号段区间为(50-100]的子索引记录,即Key:张三+50,Value:58,即可以判断出QQ号为58的人名字是叫张三。
(3)当用户想要存储Key为张三,Value为168的数据索引时,可以先确定关键字为“张三”的主索引记录,并且QQ号168对应的号段区间为(100-200],则只需要读取号段区间为(100-200]的子索引记录,即Key:张三+100,Value:111,即可将记录数据168存储至该子索引记录中。
综上所述,使用本发明实施例的数据索引处理方法处理索引记录后,在小索引情况下,只需要读取一次主索引记录就能定位到记录数据,并且读取性能较佳。在大索引情况下,读取一次主索引记录定位到子索引记录后,再读取一次该子索引记录从而定位到记录数据,而不需要读取全部子索引记录。本发明实施例的数据索引处理方法在小索引情况下,索引记录的访问性能不变,在大索引情况下,将索引记录的访问性能变为一次主索引记录操作及一次子索引记录操作,若触发了分裂和合并,则多一次分裂操作或合并操作,能够从整体上提升索引记录的读写效率及访问性能。
参考说明书附图9,其示出了本发明另一个实施例提供的数据索引处理方法的流程,该方法可以应用于图1中的服务器或者图2A中的数据共享系统中。如图9所示,所述方法可以包括以下步骤:
S910:当删除第二数据索引时,获取所述第二数据索引的关键字对应的主索引记录,判断所述主索引记录是否关联有子索引记录。
S920:当所述主索引记录关联有子索引记录时,根据所述第二数据索引的记录数据确定对应的第三子索引记录。
在一个可能的实施例中,当所述主索引记录未关联有子索引记录时,不采取任何操作,数据索引处理流程结束。
S930:当删除所述第二数据索引后,获取所述第三子索引记录中所有记录数据的第一总数据量。
S940:获取所述第三子索引记录的相邻子索引记录中所有记录数据的第二总数据量。
S950:基于所述第一总数据量和所述第二总数据量对所述第三子索引记录进行处理。
本发明实施例中,当所述主索引记录关联有子索引记录时,在删除所述第二数据索引后,可以获取第三子索引记录以及与之相邻的相邻子索引记录中所有记录数据的总数据量,以判断是否对所述第三子索引记录以及与之相邻的相邻子索引记录进行合并。所述相邻子索引记录可能为一个,也可能为两个,若所述相邻子索引记录为两个,则可以分别对每个相邻子索引记录执行上述获取总数据量及下述对所述第三子索引记录进行处理的过程。
在一个可能的实施例中,所述基于所述第一总数据量和所述第二总数据量对所述第三子索引记录进行处理可以包括:
计算所述第一总数据量与所述第二总数据量之和;
判断所述第一总数据量与所述第二总数据量之和是否小于第三预设阈值;
如果所述第一总数据量与所述第二总数据量之和小于第三预设阈值,则将所述第三子索引记录与所述相邻子索引记录进行合并。
在一个可能的实施例中,所述第三子索引记录中所有记录数据的第一总数据量可以为所有记录数据的总长度,所述相邻子索引记录中所有记录数据的第二总数据量也可以为所有记录数据的总长度。具体地,每个所述子索引记录还包括该子索引记录中记录数据的总长度,可以直接从所述第三子索引记录和所述相邻子索引记录中获取对应的所有记录数据的总长度。判断所述第一总数据量与所述第二总数据量之和是否小于第三预设阈值,可以为判断所述第三子索引记录中所有记录数据的总长度与所述相邻子索引记录中所有记录数据的总长度之和是否小于第三预设长度,如果小于第三预设长度,则判定所述第一总数据量与所述第二总数据量之和小于第三预设阈值,如果大于或者等于第三预设长度,则判定所述第一总数据量与所述第二总数据量之和大于或者等于第三预设阈值。其中,所述第三预设长度可以根据实际情况进行设置,例如可以设置为100KB,本发明实施例对此不做限定。
在一个可能的实施例中,所述第三子索引记录中所有记录数据的第一总数据量可以为所有记录数据的总数量,所述相邻子索引记录中所有记录数据的第二总数据量也可以为所有记录数据的总数量。具体地,每个所述子索引记录还包括该子索引记录中记录数据的总数量,可以直接从所述第三子索引记录和所述相邻子索引记录中获取对应的所有记录数据的总数量。判断所述第一总数据量与所述第二总数据量之和是否小于第三预设阈值,可以为判断所述第三子索引记录中所有记录数据的总数量与所述相邻子索引记录中所有记录数据的总数量之和是否小于第三预设数量,如果小于第三预设数量,则判定所述第一总数据量与所述第二总数据量之和小于第三预设阈值,如果大于或者等于第三预设数量,则判定所述第一总数据量与所述第二总数据量之和大于或者等于第三预设阈值。其中,所述第三预设数量可以根据实际情况进行设置,例如可以设置为30000个,本发明实施例对此不做限定。
本发明实施例中,当判定所述第一总数据量与所述第二总数据量之和小于第三预设阈值时,说明所述第三子索引记录与相邻子索引记录中的记录数据较少,满足索引合并条件,可以进行索引合并。具体地,索引合并过程涉及3条索引记录的变化:
1)主索引记录,需要将所述第三子索引记录对应的号段区间与相邻子索引记录对应的号段区间进行合并,合并后的号段区间的起始值为两个号段区间的起始值中的较小值,合并后的号段区间中记录数据的总数据量为第一总数据量与所述第二总数据量的和。
2)子索引记录,将号段起始值较大的子索引记录中的记录数据追加到号段起始值较小的子索引记录中,并删除号段起始值较大的子索引记录中的记录数据,将号段起始值较大的子索引记录中的记录数据的总数据量追加到号段起始值较小的子索引记录中的记录数据的总数据量中。
示例性地,假设所述第三子索引记录对应的号段区间为(0-2500],所述相邻子索引记录对应的号段区间为(2500-5000],则将所述第三子索引记录对应的号段区间与所述相邻子索引记录对应的号段区间进行合并,可以得到新的号段区间(0-5000]。还需要将所述相邻子索引记录中的记录数据追加到所述第三子索引记录的子索引记录中。
在一个示例中,假设主索引记录为:
Key:张三,Value:5,20,3,0,3,50,1,100,1
3个子索引记录分别为:
Key:张三+0,Value:10,13,14
Key:张三+50,Value:58
Key:张三+100,Value:111
当删除Key为张三,Value为14的第二数据索引后,所述主索引记录变为:
Key:张三,Value:4,16,3,0,2,50,1,100,1
所述第二数据索引对应的第三子索引记录为:
Key:张三+0,Value:10,13
所述第三子索引记录的相邻子索引记录为:
Key:张三+50,Value:58
所述第三子索引记录中所有记录数据的第一总数量为2,所述相邻子索引记录中所有记录数据的第二总数量为1,所述第一总数量与所述第二总数量之和为3,小于4(假设第三预设数量为4),即所述第三子索引记录中所有记录数据的第一总数据量与所述相邻子索引记录中所有记录数据的第二总数据量之和小于第三预设阈值,则可以将所述第三子索引记录与所述相邻子索引记录合并为一个子索引记录,如下:
Key:张三+0,Value:10,13,58
此时,所述主索引记录对应的号段区间也会进行合并,号段区间数量也会减1,即所述主索引记录变为:
Key:张三,Value:4,16,2,0,3,100,1
子索引记录Key:张三+100,Value:111保持不变。
在一个可能的实施例中,当判定所述第一总数据量与所述第二总数据量之和大于或者等于第三预设阈值时,说明所述第三子索引记录与相邻子索引记录中的记录数据较多,不满足索引合并条件,此时不会进行索引合并,数据索引处理流程结束。
在一个可能的实施例中,所述将所述第三子索引记录与所述相邻子索引记录进行合并之后,还可以包括:
确定与所述主索引记录关联的子索引记录;
当有且仅有一个子索引记录与所述主索引记录关联时,将所述子索引记录中的所有记录数据存储至所述主索引记录中,删除所述子索引记录。
具体地,当有且仅有一个子索引记录时,可以将所述子索引记录合并到主索引记录中,之后不再发生合并。例如,当有且仅有一个子索引记录时,所述子索引记录对应的号段区间为(0-10000],则可以直接将所述子索引记录中的记录数据存储至主索引记录中路由信息后面。
其他相关细节可以参考图7所示的方法实施例。
综上所述,本发明的数据索引处理方法,在相邻两个子索引记录的记录数据总数据量小于预设阈值的情况下,将两个子索引记录进行合并,可以减少子索引记录的数量,在保证访问效率的同时减少占用的存储空间。
参考说明书附图10,其示出了本发明一个实施例提供的一种数据索引处理装置1000的结构。如图10所示,所述装置1000可以包括:
第一判断模块1010,用于当存储第一数据索引时,获取与所述第一数据索引的关键字对应的主索引记录,判断所述主索引记录是否关联有子索引记录;
第二判断模块1020,用于当所述主索引记录未关联有子索引记录时,获取所述主索引记录中所有记录数据的总数据量,判断所述总数据量是否达到第一预设阈值;
创建模块1030,用于当所述总数据量达到第一预设阈值时,创建与所述主索引记录关联的多个子索引记录;
第一存储模块1040,用于将所述主索引记录中的所有记录数据存储至所述多个子索引记录中,删除所述主索引记录中的所有记录数据。
在一个可能的实施例中,所述装置1000还可以包括:
第一确定模块,用于当所述主索引记录关联有子索引记录时,根据所述第一数据索引的记录数据确定对应的第一子索引记录;
第三判断模块,用于获取所述第一子索引记录中所有记录数据的总数据量,判断所述总数据量是否达到第二预设阈值;
拆分模块,用于当所述总数据量达到第二预设阈值时,将所述第一子索引记录拆分为多个子索引记录;
第二存储模块,用于将所述第一子索引记录中的所有记录数据存储至拆分得到的多个子索引记录中。
在一个可能的实施例中,所述装置1000还可以包括:
第四判断模块,用于当删除第二数据索引时,获取所述第二数据索引的关键字对应的主索引记录,判断所述主索引记录是否关联有子索引记录;
第二确定模块,用于当所述主索引记录关联有子索引记录时,根据所述第二数据索引的记录数据确定对应的第三子索引记录;
第一获取模块,用于当删除所述第二数据索引后,获取所述第三子索引记录中所有记录数据的第一总数据量;
第二获取模块,用于获取所述第三子索引记录的相邻子索引记录中所有记录数据的第二总数据量;
处理模块,用于基于所述第一总数据量和所述第二总数据量对所述第三子索引记录进行处理。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与相应方法实施例属于同一构思,其具体实现过程详见对应方法实施例,这里不再赘述。
本发明一个实施例还提供了一种电子设备,该电子设备包括处理器和存储器,该存储器中存储有至少一条指令或者至少一段程序,该至少一条指令或者该至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的数据索引处理方法。
存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
本发明实施例所提供的方法实施例可以在终端、服务器或者类似的运算装置中执行,即上述电子设备可以包括终端、服务器或者类似的运算装置。以运行在服务器上为例,如图11所示,其示出了本发明实施例提供的运行数据索引处理方法的服务器的结构示意图。该服务器1100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Unit,CPU)1110(例如,一个或一个以上处理器)和存储器1130,一个或一个以上存储应用程序1123或数据1122的存储介质1120(例如一个或一个以上海量存储设备)。其中,存储器1130和存储介质1120可以是短暂存储或持久存储。存储在存储介质1120的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1110可以设置为与存储介质1120通信,在服务器1100上执行存储介质1120中的一系列指令操作。服务器1100还可以包括一个或一个以上电源1160,一个或一个以上有线或无线网络接口1150,一个或一个以上输入输出接口1140,和/或,一个或一个以上操作系统1121,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
输入输出接口1140可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器1100的通信供应商提供的无线网络。在一个实例中,输入输出接口1140包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口1140可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯,所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global System ofMobilecommunication,GSM)、通用分组无线服务(General Packet Radio Service,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code DivisionMultiple Access,WCDMA)、长期演进(Long Term Evolution,LTE)、电子邮件、短消息服务(ShortMessaging Service,SMS)等。
本领域普通技术人员可以理解,图11所示的结构仅为示意,服务器1100还可包括比图11中所示更多或者更少的组件,或者具有与图11所示不同的配置。
本发明一个实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质可设置于电子设备之中以保存用于实现一种数据索引处理方法相关的至少一条指令或者至少一段程序,该至少一条指令或者该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的数据索引处理方法。
可选地,在本发明实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本发明一个实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现例中提供的数据索引处理方法。
需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据索引处理方法,其特征在于,包括:
当存储第一数据索引时,获取与所述第一数据索引的关键字对应的主索引记录,判断所述主索引记录是否关联有子索引记录;
当所述主索引记录未关联有子索引记录时,获取所述主索引记录中所有记录数据的总数据量,判断所述总数据量是否达到第一预设阈值;
如果所述总数据量达到第一预设阈值,则创建与所述主索引记录关联的多个子索引记录;
将所述主索引记录中的所有记录数据存储至所述多个子索引记录中,删除所述主索引记录中的所有记录数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述主索引记录关联有子索引记录时,根据所述第一数据索引的记录数据确定对应的第一子索引记录;
获取所述第一子索引记录中所有记录数据的总数据量,判断所述总数据量是否达到第二预设阈值;
如果所述总数据量达到第二预设阈值,则将所述第一子索引记录拆分为多个子索引记录;
将所述第一子索引记录中的所有记录数据存储至拆分得到的多个子索引记录中。
3.根据权利要求1或2所述的方法,其特征在于,所述主索引记录包括路由信息,所述路由信息包括所述主索引记录的记录数据的总数量、记录数据的总长度、号段区间数量以及各个号段区间的号段区间信息;
所述判断所述主索引记录是否关联有子索引记录包括:
获取所述路由信息中的号段区间数量;
根据所述号段区间数量判断所述主索引记录是否关联有子索引记录。
4.根据权利要求3所述的方法,其特征在于,所述子索引记录与所述号段区间一一对应;
所述将所述主索引记录中的所有记录数据存储至所述多个子索引记录中包括:
针对每个记录数据,确定所述记录数据对应的号段信息;
将所述号段信息分别与每个号段区间信息进行匹配,得到所述记录数据对应的目标号段区间;
根据所述目标号段区间确定所述记录数据对应的第二子索引记录,将所述记录数据存储至所述第二子索引记录中。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
当删除第二数据索引时,获取所述第二数据索引的关键字对应的主索引记录,判断所述主索引记录是否关联有子索引记录;
当所述主索引记录关联有子索引记录时,根据所述第二数据索引的记录数据确定对应的第三子索引记录;
当删除所述第二数据索引后,获取所述第三子索引记录中所有记录数据的第一总数据量;
获取所述第三子索引记录的相邻子索引记录中所有记录数据的第二总数据量;
基于所述第一总数据量和所述第二总数据量对所述第三子索引记录进行处理。
6.根据权利要求5所述的方法,其特征在于,所述基于所述第一总数据量和所述第二总数据量对所述第三子索引记录进行处理包括:
计算所述第一总数据量与所述第二总数据量之和;
判断所述第一总数据量与所述第二总数据量之和是否小于第三预设阈值;
如果所述第一总数据量与所述第二总数据量之和小于第三预设阈值,则将所述第三子索引记录与所述相邻子索引记录进行合并。
7.根据权利要求6所述的方法,其特征在于,所述将所述第三子索引记录与所述相邻子索引记录进行合并之后,还包括:
确定与所述主索引记录关联的子索引记录;
当有且仅有一个子索引记录与所述主索引记录关联时,将所述子索引记录中的所有记录数据存储至所述主索引记录中,删除所述子索引记录。
8.一种数据索引处理装置,其特征在于,包括:
第一判断模块,用于当存储第一数据索引时,获取与所述第一数据索引的关键字对应的主索引记录,判断所述主索引记录是否关联有子索引记录;
第二判断模块,用于当所述主索引记录未关联有子索引记录时,获取所述主索引记录中所有记录数据的总数据量,判断所述总数据量是否达到第一预设阈值;
创建模块,用于当所述总数据量达到第一预设阈值时,创建与所述主索引记录关联的多个子索引记录;
第一存储模块,用于将所述主索引记录中的所有记录数据存储至所述多个子索引记录中,删除所述主索引记录中的所有记录数据。
9.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如权利要求1-7任意一项所述的数据索引处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或至少一段程序由处理器加载并执行以实现如权利要求1-7任意一项所述的数据索引处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110162538.2A CN112817980A (zh) | 2021-02-05 | 2021-02-05 | 一种数据索引处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110162538.2A CN112817980A (zh) | 2021-02-05 | 2021-02-05 | 一种数据索引处理方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112817980A true CN112817980A (zh) | 2021-05-18 |
Family
ID=75861794
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110162538.2A Pending CN112817980A (zh) | 2021-02-05 | 2021-02-05 | 一种数据索引处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112817980A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023082902A1 (zh) * | 2021-11-10 | 2023-05-19 | 阿里云计算有限公司 | 索引的创建方法、计算设备及存储介质 |
Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5490258A (en) * | 1991-07-29 | 1996-02-06 | Fenner; Peter R. | Associative memory for very large key spaces |
US6778977B1 (en) * | 2001-04-19 | 2004-08-17 | Microsoft Corporation | Method and system for creating a database table index using multiple processors |
US6865577B1 (en) * | 2000-11-06 | 2005-03-08 | At&T Corp. | Method and system for efficiently retrieving information from a database |
CN101231649A (zh) * | 2007-12-27 | 2008-07-30 | 腾讯科技(深圳)有限公司 | 数据分布统计方法 |
CN101419605A (zh) * | 2008-04-30 | 2009-04-29 | 中山大学 | 一种可实现重复单词列表的电子词典三级存储架构 |
US20130103694A1 (en) * | 2011-10-25 | 2013-04-25 | Cisco Technology, Inc. | Prefix and predictive search in a distributed hash table |
US20130339366A1 (en) * | 2012-06-19 | 2013-12-19 | Salesforce.Com, Inc. | Method and system for creating indices and loading key-value pairs for nosql databases |
CN104008111A (zh) * | 2013-02-27 | 2014-08-27 | 深圳市腾讯计算机系统有限公司 | 一种数据的存储管理方法及装置 |
CN104424224A (zh) * | 2013-08-26 | 2015-03-18 | 深圳市腾讯计算机系统有限公司 | 一种文件索引存储方法及装置 |
CN105488050A (zh) * | 2014-09-17 | 2016-04-13 | 阿里巴巴集团控股有限公司 | 一种数据库多索引方法、装置及系统 |
CN106776811A (zh) * | 2016-11-23 | 2017-05-31 | 李天� | 数据索引方法及装置 |
CN108255408A (zh) * | 2016-12-28 | 2018-07-06 | 中国电信股份有限公司 | 数据存储方法以及系统 |
US20190179948A1 (en) * | 2017-12-12 | 2019-06-13 | International Business Machines Corporation | Storing unstructured data in a structured framework |
CN110019080A (zh) * | 2017-07-14 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 数据访问方法和装置 |
US20190266267A1 (en) * | 2018-02-28 | 2019-08-29 | Sap Se | Managing hash indexing |
CN110597852A (zh) * | 2019-09-27 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、终端及存储介质 |
CN110704453A (zh) * | 2019-10-15 | 2020-01-17 | 腾讯音乐娱乐科技(深圳)有限公司 | 一种数据查询方法、装置、存储介质及电子设备 |
CN110851436A (zh) * | 2018-08-03 | 2020-02-28 | Emc Ip控股有限公司 | 具有虚拟编索引的分布式搜索框架 |
US20200372004A1 (en) * | 2019-05-23 | 2020-11-26 | International Business Machines Corporation | Indexing for evolving large-scale datasets in multi-master hybrid transactional and analytical processing systems |
CN112162983A (zh) * | 2020-09-22 | 2021-01-01 | 北京人大金仓信息技术股份有限公司 | 数据库索引建议处理方法、装置、介质和电子设备 |
-
2021
- 2021-02-05 CN CN202110162538.2A patent/CN112817980A/zh active Pending
Patent Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5490258A (en) * | 1991-07-29 | 1996-02-06 | Fenner; Peter R. | Associative memory for very large key spaces |
US6865577B1 (en) * | 2000-11-06 | 2005-03-08 | At&T Corp. | Method and system for efficiently retrieving information from a database |
US6778977B1 (en) * | 2001-04-19 | 2004-08-17 | Microsoft Corporation | Method and system for creating a database table index using multiple processors |
CN101231649A (zh) * | 2007-12-27 | 2008-07-30 | 腾讯科技(深圳)有限公司 | 数据分布统计方法 |
CN101419605A (zh) * | 2008-04-30 | 2009-04-29 | 中山大学 | 一种可实现重复单词列表的电子词典三级存储架构 |
US20130103694A1 (en) * | 2011-10-25 | 2013-04-25 | Cisco Technology, Inc. | Prefix and predictive search in a distributed hash table |
US20130339366A1 (en) * | 2012-06-19 | 2013-12-19 | Salesforce.Com, Inc. | Method and system for creating indices and loading key-value pairs for nosql databases |
CN104008111A (zh) * | 2013-02-27 | 2014-08-27 | 深圳市腾讯计算机系统有限公司 | 一种数据的存储管理方法及装置 |
CN104424224A (zh) * | 2013-08-26 | 2015-03-18 | 深圳市腾讯计算机系统有限公司 | 一种文件索引存储方法及装置 |
CN105488050A (zh) * | 2014-09-17 | 2016-04-13 | 阿里巴巴集团控股有限公司 | 一种数据库多索引方法、装置及系统 |
CN106776811A (zh) * | 2016-11-23 | 2017-05-31 | 李天� | 数据索引方法及装置 |
CN108255408A (zh) * | 2016-12-28 | 2018-07-06 | 中国电信股份有限公司 | 数据存储方法以及系统 |
CN110019080A (zh) * | 2017-07-14 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 数据访问方法和装置 |
US20190179948A1 (en) * | 2017-12-12 | 2019-06-13 | International Business Machines Corporation | Storing unstructured data in a structured framework |
CN111373390A (zh) * | 2017-12-12 | 2020-07-03 | 国际商业机器公司 | 在结构化框架中存储非结构化数据 |
US20190266267A1 (en) * | 2018-02-28 | 2019-08-29 | Sap Se | Managing hash indexing |
CN110851436A (zh) * | 2018-08-03 | 2020-02-28 | Emc Ip控股有限公司 | 具有虚拟编索引的分布式搜索框架 |
US20200372004A1 (en) * | 2019-05-23 | 2020-11-26 | International Business Machines Corporation | Indexing for evolving large-scale datasets in multi-master hybrid transactional and analytical processing systems |
CN110597852A (zh) * | 2019-09-27 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、终端及存储介质 |
CN110704453A (zh) * | 2019-10-15 | 2020-01-17 | 腾讯音乐娱乐科技(深圳)有限公司 | 一种数据查询方法、装置、存储介质及电子设备 |
CN112162983A (zh) * | 2020-09-22 | 2021-01-01 | 北京人大金仓信息技术股份有限公司 | 数据库索引建议处理方法、装置、介质和电子设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023082902A1 (zh) * | 2021-11-10 | 2023-05-19 | 阿里云计算有限公司 | 索引的创建方法、计算设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2019200714A1 (zh) | 服务器连接方法、计算机可读存储介质、终端设备及装置 | |
CN109492019B (zh) | 业务请求响应方法、装置、计算机设备和存储介质 | |
JP2019504412A (ja) | ショートリンクの処理方法、デバイス、及びサーバ | |
CN109299190B (zh) | 分布式存储系统中处理对象的元数据的方法及装置 | |
CN110880147B (zh) | 一种交易处理方法、相关设备及计算机存储介质 | |
US20170031948A1 (en) | File synchronization method, server, and terminal | |
WO2015188750A1 (en) | Method, apparatus and system for implementing location based services | |
CN111611225A (zh) | 数据存储管理方法、查询方法、装置、电子设备及介质 | |
CN110597887B (zh) | 一种基于区块链网络的数据管理方法、装置及存储介质 | |
CN106470150B (zh) | 关系链存储方法及装置 | |
CN110955704A (zh) | 一种数据管理方法、装置、设备及存储介质 | |
CN113687964B (zh) | 数据处理方法、装置、电子设备、存储介质及程序产品 | |
CN107305570B (zh) | 一种数据检索方法及系统 | |
CN108399175B (zh) | 一种数据存储、查询方法及其装置 | |
EP3136261A1 (en) | Method and device for data search | |
CN112817980A (zh) | 一种数据索引处理方法、装置、设备及存储介质 | |
WO2020024446A1 (zh) | 数据的存储方法及装置、存储介质、计算机设备 | |
CN108132759B (zh) | 一种文件系统中管理数据的方法和装置 | |
US11683316B2 (en) | Method and device for communication between microservices | |
CN111367916A (zh) | 一种数据存储方法及装置 | |
CN107977381B (zh) | 数据配置方法、索引管理方法、相关装置以及计算设备 | |
JP6233846B2 (ja) | 可変長ノンスの生成 | |
CN108989245B (zh) | 用户数据存储方法及装置 | |
CN108763498B (zh) | 用户身份识别方法、装置、电子设备及可读存储介质 | |
CN113297164A (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: 40048385 Country of ref document: HK |