CN102725754B - 一种索引数据处理方法及设备 - Google Patents
一种索引数据处理方法及设备 Download PDFInfo
- Publication number
- CN102725754B CN102725754B CN201180003412.5A CN201180003412A CN102725754B CN 102725754 B CN102725754 B CN 102725754B CN 201180003412 A CN201180003412 A CN 201180003412A CN 102725754 B CN102725754 B CN 102725754B
- Authority
- CN
- China
- Prior art keywords
- index
- data
- segment
- unit
- segmentation
- 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.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims abstract description 76
- 238000000034 method Methods 0.000 title claims abstract description 29
- 230000011218 segmentation Effects 0.000 claims description 98
- 230000008569 process Effects 0.000 claims description 8
- 238000003672 processing method Methods 0.000 claims description 8
- 230000005012 migration Effects 0.000 claims description 4
- 238000013508 migration Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 11
- 230000003993 interaction Effects 0.000 description 9
- 238000013500 data storage Methods 0.000 description 7
- 238000012217 deletion Methods 0.000 description 6
- 230000037430 deletion Effects 0.000 description 6
- 230000008520 organization Effects 0.000 description 6
- 230000006978 adaptation Effects 0.000 description 2
- 238000013467 fragmentation Methods 0.000 description 2
- 238000006062 fragmentation reaction Methods 0.000 description 2
- 238000013499 data model Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种索引数据处理方法,其中,至少一种属性信息的索引数据存储在一个索引结构中,所述索引结构包括一头索引和至少一块索引,所述至少一块索引的索引存储在所述头索引中,所述至少一块索引的索引包括存储在所述块索引中的索引数据的属性信息,所述方法包括:接收对指定索引数据的处理指令,所述处理指令中包括指定索引数据的属性信息;若根据所述索引结构中的头索引和所述指定索引数据的属性信息能确定一块索引的索引,则根据所述块索引的索引定位所述块索引,并对所述块索引中匹配所述索引数据的数据项进行处理。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种索引数据处理方法及设备。
背景技术
Key-Value数据库提供键值对<Key,Value>的存储,一般的Key-Value***仅提供基于Key的操作。对于根据Value中的属性进行检索的应用,需要在Key-value***的基础上构建适配层来提供结构化的数据检索,通过适配层,将不同Key的Value包含的数据模型表格化,即将Value抽象为属性名称和属性值的方式(或者称为列和值),这样不同的Key对应的Value可能具有相同的属性名称,因此可以为按照属性名称进行检索创造了前提。为了提高检索的效率,可以对属性的值建立索引。
现有技术中可以采用B+树或前缀哈希树的形式来组织索引数据。其中,B+树结构如图1a所示,其中内部节点保存范围的信息,如内部节点1中表示小于等于0110的属性值在其左边的子树中,大于0110的属性值在其右边的子树中;叶子节点中保存真实的索引数据。前缀哈希树构建一个基于字典树的数据结构,其原理是利用字符串的公共前缀来组织数据,以包括0和1的字符集为例的前缀哈希树如图1b所示,每个节点的前缀为从根到此节点的字符组成的字符串,中间节点仅存储了和子节点的关系,叶子节点存储真实的索引数据。
然而,无论是B+树还是前缀哈希树的索引数据组织形式,对于每一个需要建立索引的属性信息,都需要单独组织一颗B+树或前缀哈希树结构来存储该属性的索引数据,同时树中的每一个节点对应Key-Value数据库中的一个键值对,因此,在当对索引数据进行相关数据操作时,例如定位或增加或删除某一索引数据,都需要先从众多B+树或前缀哈希树中确定该索引数据的属性信息所对应的B+树或前缀哈希树,然后再从最上级的内部节点或中间节点向下遍历,直到它到达一个叶子节点。因此,基于现有技术中的索引数据组织形式,在对索引数据进行处理时,均需要与Key-Value***进行多次交互,效率较低。
发明内容
本发明实施例提供一种索引数据处理方法及设备,能够在对索引数据进行处理时,减少与Key-Value***的交互,提高效率。
为了解决上述技术问题,本发明实施例的技术方案如下:
一种索引数据处理方法,至少一种属性信息的索引数据存储在一个索引结构中,所述索引结构包括一头索引和至少一块索引,所述至少一块索引的索引存储在所述头索引中,所述至少一块索引的索引包括存储在所述块索引中的索引数据的属性信息,所述方法包括:
接收对指定索引数据的处理指令,所述处理指令中包括指定索引数据的属性信息;
若根据所述索引结构中的头索引和所述指定索引数据的属性信息能确定一块索引的索引,则根据所述块索引的索引定位所述块索引,并对所述块索引中匹配所述索引数据的数据项进行处理。
一种索引数据处理设备,至少一种属性信息的索引数据存储在一个索引结构中,所述索引结构包括一头索引和至少一块索引,所述至少一块索引的索引存储在所述头索引中,所述至少一块索引的索引包括存储在所述块索引中的索引数据的属性信息,所述设备包括:
指令接收模块,用于接收对指定索引数据的处理指令,所述处理指令中包括指定索引数据的属性信息;
数据处理模块,用于当根据所述索引结构中的头索引和所述指定索引数据的属性信息能确定一块索引的索引时,根据所述块索引的索引定位所述块索引,并对所述块索引中匹配所述索引数据的数据项进行处理。
本发明实施例通过将具有不同属性信息的索引数据存储在一个索引结构中,使得数据存储更为紧凑,从而一次Key-Value访问可以获取或者更新更多的数据,所以可以减少数据处理时与Key-Value***之间的交互,从而提高了索引建立和查询的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1a是现有技术中索引数据以B+树结构形式组织的示意图;
图1b是现有技术中索引数据以前缀哈希树形式组织的示意图;
图2是本发明实施例一种索引数据处理方法的流程图;
图3是图2所示实施例中索引结构的示意图;
图4a是一种索引结构的示意图;
图4b是本发明实施例另一种索引数据处理方法的流程图;
图5是本发明实施例一种删除索引数据的流程图;
图6是图5所示实施例中索引结构的示意图;
图7是本发明另一实施例中块索引的结构示意图;
图8是本发明实施例一种增加索引数据的流程图;
图9是本发明另一实施例索引结构的示意图;
图10是本发明实施例一种索引数据处理设备的结构示意图;
图11是本发明实施例另一种索引数据处理设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图2,为本发明实施例一种索引数据处理方法的流程图。
本实施例中,至少一种属性信息的索引数据存储在一个索引结构中,如图3所示,该索引结构包括一头索引(head index)31和至少一块索引(blockindex)32,该块索引32可以用于存储数据项数量较大的索引数据,该至少一块索引的索引(block index reference)33存储在头索引31中,至少一块索引的索引33包括存储在块索引32中的索引数据的属性信息。
基于上述索引结构,当指定一索引数据时,对该索引数据的处理方法可以包括:
步骤201,接收对指定索引数据的处理指令,该处理指令中包括指定索引数据的属性信息。
本发明实施例中所有的实施方法可以由PC机等终端或服务器执行,该索引结构可以存储在PC机等终端或服务器的内部或外部的数据库中。
其中,索引数据中可以包括属性名称(attr)、属性值(value)等属性信息,还包括具体的数据项(item),例如<Attrn,Valuen,Itemn>。
步骤202,若根据索引结构中的头索引和指定索引数据的属性信息能确定一块索引的索引,则根据块索引的索引定位块索引,并对块索引中匹配索引数据的数据项进行处理。
PC机等终端或服务器查找头索引31中存储的块索引的索引33中的属性信息,如果其中包括指定索引数据的属性信息,则可定位块索引32,进而可以对该块索引32中与该指定索引数据匹配的索引数据的数据项进行处理。
在本发明的另一实施例中,该索引结构可以包括至少一个存储单元,在存储单元中,如图4a所示,除了可以包括块索引41外,还可以包括至少一分段索引(segment index)42,用于存储数据项数量较小的索引数据,头索引43中存储有块索引的索引44和分段索引的索引(segment index reference)45,分段索引的索引45包括存储在分段索引42中的索引数据的属性信息。索引数据根据各自数据项数量的多少,分配在块索引41和分段索引(segmentindex)42中存储,例如当索引数据的数据项数量大于一个预设值时,可以将该索引数据存储在块索引41中,当小于该预设值时,可以将索引数据存储在分段索引42中,其中,块索引41和分段索引42可以用于区分存储索引数据,当然,在另一实施例中索引数据也可以根据其他信息,例如索引数据的属性信息等,分配在块索引和分段索引中存储。本发明实施例中该属性信息可以包括属性名称及属性值等。当然,在另一实施例中,该索引结构中也可以只包括其中的分段索引。
需要说明的是,本发明所有实施例中的存储单元可以是一种计算机可读存储介质,也可以是一种数据库***,该数据库***可以是分布式的数据库***。上述索引结构可以是存储在上述计算机可读存储介质或数据库***中的数据结构。
若根据该索引结构中的头索引和指定索引数据的属性信息能确定一分段索引的索引,则根据分段索引的索引定位分段索引,并对分段索引中匹配索引数据的数据项进行处理。具体的,PC机等终端或服务器查找头索引中存储的分段索引的索引中的属性信息,如果其中包括指定索引数据的属性信息,则可定位分段索引,进而可以对该分段索引中与该指定索引数据匹配的索引数据的数据项进行处理。
在确定指定索引数据的属性信息位于分段索引的索引还是块索引的索引时,该确定过程可以是:先查找块索引的索引44中是否存在指定索引数据的属性信息;若是,则确定该指定索引数据的属性信息属于块索引的索引44;若否,则确定指定索引数据的属性信息属于分段索引的索引45。当然,也可以先查找分段索引的索引45是否存在指定索引数据的属性信息。
本发明实施例通过将具有不同属性信息的索引数据存储在一个索引结构中,使得数据存储更为紧凑,从而一次Key-Value访问可以获取或者更新更多的数据,所以可以减少数据处理时与Key-Value***之间的交互,从而提高了索引建立和查询的性能。
参见图4b,为本发明实施例另一种索引数据处理方法的流程图。
本实施例中,基于图4a所示的索引结构,当指定一索引数据时,对该索引数据的处理方法可以包括:
步骤401,接收对指定索引数据的处理指令,该处理指令中包括指定索引数据的属性信息。
本发明实施例中所有的实施方法可以由PC机等终端或服务器执行。该索引结构可以存储在PC机等终端或服务器的内部数据库,或存储在独立于PC机等终端或服务器的外部数据库中。
步骤402,确定指定索引数据的属性信息位于头索引中分段索引的索引还是块索引的索引。
本发明实施例中,索引数据中可以包括属性名称(attr)、属性值(value)等属性信息,还包括具体的数据项(item),例如<Attrn,Valuen,Itemn>。当给出一指定索引数据时,首先可以根据其属性信息,确定该指定索引数据的属性信息是属于头索引43中的块索引的索引44还是分段索引的索引45。
该确定过程可以是:先查找块索引的索引44中是否存在指定索引数据的属性信息;若是,则确定该指定索引数据的属性信息属于块索引的索引44;若否,则确定指定索引数据的属性信息属于分段索引的索引45。当然,也可以先查找分段索引的索引45是否存在指定索引数据的属性信息。
若该指定索引数据的属性信息属于块索引的索引44,则执行步骤403;若该指定索引数据的属性信息属于分段索引的索引45,则执行步骤404。
步骤403,在块索引中,根据指定索引数据的数据项,对匹配索引数据的数据项进行数据处理。
其中,块索引中的匹配索引数据具有与指定索引数据相同的属性信息。
该对匹配索引数据中的数据项进行的数据处理可以是指:
在匹配索引数据的数据项中,定位指定索引数据的数据项;或者,
在匹配索引数据的数据项中,删除指定索引数据的数据项;或者,
在匹配索引数据的数据项中,增加指定索引数据的数据项。
在经过上述数据处理后,还可以进一步对处理后的块索引中的索引数据进行删除,或合并,或划分,或迁移等处理。
步骤404,在分段索引中,根据指定索引数据的数据项,对匹配索引数据的数据项进行数据处理。
其中,分段索引中的匹配索引数据具有与指定索引数据相同的属性信息。
该对匹配索引数据中的数据项进行的数据处理可以是指:
在匹配索引数据的数据项中,定位指定索引数据的数据项;或者,
在匹配索引数据的数据项中,删除指定索引数据的数据项;或者,
在匹配索引数据的数据项中,增加指定索引数据的数据项。
在经过上述数据处理后,还可以进一步对处理后的分段索引中的索引数据进行删除,或合并,或划分,或迁移等处理。
在另一实施例中,如果索引结构为图3所示的结构,即其中只包括块索引,则在进行索引数据的处理时,可以在接收到对指定索引数据的处理指令后,查找头索引中存储的块索引的索引中的属性信息,如果其中包括指定索引数据的属性信息,则可定位块索引,进而可以对该块索引中与该指定索引数据匹配的索引数据的数据项进行处理,例如,定位、删除、增加等。
本发明实施例通过将具有不同属性信息的索引数据存储在一个索引结构中,使得数据存储更为紧凑,从而一次Key-Value访问可以获取或者更新更多的数据,所以可以减少数据处理时与Key-Value***之间的交互,从而提高了索引建立和查询的性能。
参见图5,为本发明实施例一种删除索引数据的流程图。本实施例中,对索引数据进行的处理以删除一指定的索引数据为例进行说明。
其中,多个属性的索引数据仍以图4a所示的组织形式进行存储,更具体的,如图6所示,分段索引42中包括至少一个分段索引单元,以分段索引单元421、422为例,分段索引单元421、422并列存储,每个分段索引单元中包含多个索引数据,其中的索引数据可以按照属性信息进行排序,具体过程可以是,先将分段索引42中的索引数据按照属性信息进行排序,然后再划分为多个分段索引单元,按属性信息进行排序的过程可以是通过比较不同的属性名称和属性值进行排序,具体的排序方法如下,以(Attr1,Value1),(Attr2,Value2)两个属性信息对为例,首先判断Attr1是否大于Attr2,如果不相等,则两个属性信息对的大小和Attr1和Attr2的次序相同,否则两个属性信息对的大小和Value1和Value2的大小次序相同。
块索引41中具有相同属性信息的索引数据的数据项划分为至少一个分段单元,且分段单元之间链式连接形成分段单元链,例如分段单元链411、412,分段单元链的相邻两分段单元中,上一分段单元存储有下一分段单元的访问信息,如key值等。
在另一实施例中,如图7所示,该块索引41中,对具有相同属性信息的索引数据的数据项所划分的至少一个分段单元之间还可以并列存储,块索引41中还存储有各分段单元的分段信息,例如分段信息413。
该删除指定索引数据的方法可以包括:
步骤501,判断该指定索引数据的属性信息是否位于块索引的索引中。
在PC机等终端或服务器接收对指定索引数据的处理指令后,在本步骤中,可以首先查看块索引的索引44中的属性信息是否包含指定索引数据的属性信息(Attrn,Valuen),如果否,则说明分段索引的索引45中包含该指定索引数据的属性信息,也即分段索引42中存储有该指定索引数据,执行步骤502~506;若是,则说明块索引41中存储有该指定索引数据,执行步骤507~509。
步骤502,在分段索引的匹配索引数据的数据项中,删除该指定索引数据的数据项。
该匹配索引数据具有与指定索引数据相同的属性信息(Attrn,Valuen),可以首先在分段索引的索引45中查找该属性信息(Attrn,Valuen),以确定该匹配索引数据所在的分段索引单元,例如分段索引单元421,在确定分段索引单元421中的匹配索引数据后,将指定索引数据的数据项Itemn从匹配索引数据的数据项中删除。
步骤503,判断删除数据项后的匹配索引数据的数据项数量是否为0。
如果该匹配索引数据中的数据项完全等同于指定索引数据的数据项,则删除该数据项后,该匹配索引数据的数据项即为0个,此时需要执行步骤504。
步骤504,在分段索引单元中删除该匹配索引数据。
若删除数据项后,匹配索引数据的数据项为0,则可直接在分段索引单元421中删除该匹配索引数据。之后,还可以对分段索引单元421执行后续步骤505。
步骤505,若该分段索引单元中的索引数据为空,则删除该分段索引单元。
删除匹配索引数据后,判断该分段索引单元421中是否还存在索引数据,若不存在,则可以直接将该分段索引单元421删除,并修改分段索引的索引45。进一步,还可以执行步骤506。
步骤506,若分段索引中不存在索引数据,则将该分段索引的索引从头索引中删除。
删除上述分段索引单元421后,判断该分段索引42中是否还存在索引数据,如果不存在,也即不存在任何分段索引单元,则可进一步将该分段索引42删除,并将分段索引的索引45从其所在的头索引43中删除。
在另一实施例中,在执行上述删除操作后,如果相邻两分段索引单元中索引数据的数量和小于阈值a(第一阈值)时,还可以将该相邻两分段索引单元进行合并,即合并为一个分段索引单元,并可进一步修改分段索引的索引。其中,阈值a可以根据索引结构的具体情况设定,此处不作限定。
步骤507,在块索引中,在匹配索引数据的数据项中,删除指定索引数据的数据项。
如果在步骤501中判断的结果是该指定索引数据的属性信息位于块索引的索引44中,则说明该指定索引数据位于块索引41中,则进一步确定块索引41中与该指定索引数据的属性信息相同的匹配索引数据,在匹配索引数据的数据项中删除该指定索引数据的数据项。
在本实施例中,以块索引41中的分段单元之间链式连接为例进行说明,如图6所示,可以首先根据指定索引数据的属性信息(Attrn,Valuen),确定该匹配索引数据所在的分段单元链411,再确定需要删除的数据项所在的分段单元,假设为分段单元411a,然后在确定的分段单元411a中删除该指定索引数据的数据项Itemn。进一步执行步骤508。
在另一实施例中,如果块索引41中的分段单元为并列存储,如图7所示,则可以首先根据指定索引数据的属性信息确定该匹配索引数据所属的分段信息,假设为分段信息413,进一步在确定的分段信息413对应的分段单元中,确定该需要删除的数据项所在的分段单元413a,然后在确定的分段单元413a中删除该指定索引数据的数据项,并更新该分段信息413。
步骤508,判断块索引中,指定索引数据的数据项所在的分段单元是否为空。
在上述分段单元411a中删除数据项Itemn后,如果该分段单元411a中不存在其它数据项,则执行步骤509。
步骤509,将该空的分段单元从其所在的分段单元链中删除。
删除该分段单元411a后,还可以重新建立分段单元链,只需要将原分段单元链411中分段单元411a的上一分段单元中的访问信息修改为对该分段单元411a的下一分段单元的访问信息即可。
在另一实施例中,如果块索引41中的分段单元为并列存储,则若删除数据项Itemn后,该数据项所在的分段单元413a为空,则可以直接将该分段单元413a删除,并更新其对应的分段信息413。
在步骤508后,在另一实施例中,如果该数据项Itemn所在的分段单元中的数据项数量不为0,而且,如果在块索引41中,该匹配索引数据的数据项只划分为一个分段单元,则无论块索引41中的分段单元以链式形式存储,还是以分段式并列存储,在删除数据项Itemn后,均可以判断该数据项所在的分段单元中的数据项数量是否小于阈值b(第五阈值)且不为0(该阈值b可以根据索引结构进行设置,此处不作具体限定),若是,则将删除数据项后的匹配索引数据从块索引41迁移至分段索引42中,并更新头索引43中分段索引的索引45以及块索引的索引44。进一步的,在该删除数据项的匹配索引数据迁移至分段索引42后,可以将该删除数据项的匹配索引数据增加至某一分段索引单元中,也可以另外增设一分段索引单元来存储该删除数据项的匹配索引数据。
在步骤508后,在另一实施例中,如果该数据项Itemn所在的分段单元中的数据项数量不为0,对于块索引41中分段单元以链式存储的方式,当删除该数据项后,如果其所在的分段单元链411中,相邻两分段单元中数据项的数量和小于阈值c(第四阈值),则将相邻两分段单元合并,还可以进一步更新该分段单元链411中各分段单元中的访问信息,其中,该阈值c可以根据该索引结构进行设置,具体不作限定。对于块索引41中分段单元并列存储的方式,当删除该数据项后,如果相邻两分段单元的数据项的数量和小于阈值c,则将该相邻两分段单元进行合并,并更新对应的分段信息413,其中,阈值c可以根据该索引结构进行设置,具体不作限定。
在另一实施例中,如果索引结构为图3所示的结构,即其中只包括块索引,则在进行索引数据的删除操作时,可以在接收到对指定索引数据的处理指令后,查找头索引中存储的块索引的索引中的属性信息,如果其中包括指定索引数据的属性信息,则可定位块索引,进而可以对该块索引中与该指定索引数据匹配的索引数据的数据项进行删除。
本发明实施例通过将具有不同属性信息的索引数据存储在一个索引结构中,使得数据存储更为紧凑,从而在执行索引数据的删除操作时,可以减少与Key-Value***之间的交互,从而提高了索引建立和查询的性能。
参见图8,为本发明实施例一种增加索引数据的流程图。
本实施例中,对索引数据进行的处理以增加一指定的索引数据为例进行说明。
其中,多个属性的索引数据仍以图4a所示的组织形式进行存储,具体的块索引41和分段索引42中的索引数据仍以图6、7所示的方式存储。
该增加指定索引数据的方法可以包括:
步骤801,判断该指定索引数据的属性信息是否位于块索引的索引中。
本步骤中,可以首先查看块索引的索引44中的属性信息是否包含指定索引数据的属性信息(Attrn,Valuen),如果否,则说明分段索引的索引45中包含该指定索引数据的属性信息,也即该指定索引数据需要增加至分段索引42中,执行步骤802~803;若是,则说明块索引的索引44中包含该指定索引数据的属性信息,也即该指定索引数据需要增加至块索引41中,执行步骤804~806。
步骤802,在分段索引的匹配索引数据的数据项中,增加该指定索引数据的数据项。
该匹配索引数据具有与指定索引数据相同的属性信息(Attrn,Valuen),可以首先在分段索引的索引45中查找该属性信息(Attrn,Valuen),以确定该匹配索引数据所在的分段索引单元,例如分段索引单元421,在确定分段索引单元421中的匹配索引数据后,将指定索引数据的数据项Itemn增加至匹配索引数据的数据项中。
803,判断增加数据项后的匹配索引数据的数据项的数量是否大于阈值d。
其中,阈值d(第二阈值)用于划分索引数据适于存储于分段索引还是块索引,其具体数值可以根据索引结构进行设置,具体不作限定。
若增加数据项后的匹配索引数据中,数据项数量超过该阈值d,则执行步骤8031,若否,不超过该阈值d,则执行步骤8032。
步骤8031,将增加数据项后的匹配索引数据从分段索引迁移至块索引中,并更新头索引中分段索引的索引以及块索引的索引。
首先,将该匹配索引数据从分段索引42的分段索引单元421中删除,修改该分段索引的索引45,然后将该增加数据项的匹配索引数据增加至块索引中。
在增加至块索引41时,首先根据预设的分段单元的数据项数量,将该增加数据项的匹配索引数据划分为一个或多个分段单元,如果该块索引41中的分段单元以链式方式存储,则建立该分段单元间的链式连接,即增加各分段单元的访问信息,创建分段单元链进行存储,并修改该块索引的索引44;如果该块索引41中的分段单元以并列方式存储,则将划分后的分段单元并列存储,并在块索引41中增设该匹配索引数据对应的分段信息,并修改该块索引的索引44。
步骤8032,判断增加数据项后的匹配索引数据所在的分段索引单元的大小是否大于阈值e,若是,则将该分段索引单元划分为两个新的分段索引单元。
该阈值e(第三阈值)用于确定分段索引单元的大小,如果存储在该分段索引单元中的索引数据大于该阈值e,则需要将该分段索引单元进行划分,否则无需划分。该阈值e可以根据索引结构进行设置,具体数值,此处不作限定。
在增加数据项后,如果该匹配索引数据所在的分段索引单元421内的数据过多,占据空间过大,超过阈值e,则需要将该分段索引单元421重新划分为两个新的分段索引单元来替代原分段索引单元421,划分后,还可进一步更新该分段索引的索引45。
步骤804,在块索引中,在匹配索引数据的数据项中,增加指定索引数据的数据项。
如果在步骤801中判断的结果是该指定索引数据的属性信息位于块索引的索引44中,则说明需要将该指定索引数据增加至块索引41中,则进一步确定块索引41中与该指定索引数据的属性信息相同的匹配索引数据,在匹配索引数据的数据项中增加该指定索引数据的数据项。
在本实施例中,以块索引41中的分段单元之间链式连接为例进行说明,如图6所示,首先根据指定索引数据的属性信息(Attrn,Valuen),确定该匹配索引数据所在的分段单元链411,再确定需要增加的数据项所在的分段单元,假设为分段单元411a,然后在确定的分段单元411a中增加该指定索引数据的数据项Itemn。进一步执行步骤805。
在另一实施例中,如果块索引41中的分段单元为并列存储,如图7所示,则可以首先根据指定索引数据的属性信息确定该匹配索引数据所属的分段信息,假设为分段信息413,进一步在确定的分段信息413对应的分段单元中,确定该需要增加的数据项所在的分段单元413a,然后在确定的分段单元413a中增加该指定索引数据的数据项,并更新该分段信息413。
步骤805,判断指定索引数据的数据项所在的分段单元中,数据项的数量是否超过阈值f。
在分段单元411a中增加数据项Itemn后,判断该分段单元411a中的数据项数量是否超过阈值f(第六阈值),若超过,则执行步骤806,若不超过,则增加数据项操作结束。
该阈值f用于确定分段单元的大小,如果存储在该分段单元中的数据项大于该阈值f,则需要将该分段单元进行划分,否则无需划分。该阈值f可以根据索引结构进行设置,具体数值,此处不作限定。
步骤806,将指定索引数据的数据项所在的分段单元划分为两个新的分段单元,并更新所在的分段单元链中分段单元之间的访问信息。
在本步骤中,需要将分段单元411a划分为两个新的分段单元,然后将两个新的分段单元替换分段单元链411中的分段单元411a,并更新该分段单元链411中各分段单元的访问信息。
在另一实施例中,如果该块索引41中的分段单元以并列方式存储,则增加数据项Itemn后的分段单元413a,如果其数据项的数量超过阈值f,则将该增加数据项后的分段单元413a划分为两个新的分段单元来替代原分段单元413a,两个新的分段单元并列存储,并更新块索引41中的分段信息413。
在另一实施例中,如果索引结构为图3所示的结构,即其中只包括块索引,则在进行索引数据的增加操作时,可以在接收到对指定索引数据的处理指令后,查找头索引中存储的块索引的索引中的属性信息,如果其中包括指定索引数据的属性信息,则可定位块索引,进而可以在该块索引中与该指定索引数据匹配的索引数据里增加指定索引数据的数据项。
本发明实施例通过将具有不同属性信息的索引数据存储在一个索引结构中,使得数据存储更为紧凑,从而在执行索引数据的增加操作时,可以减少与Key-Value***之间的交互,从而提高了索引建立和查询的性能。
本发明实施例中,基于上述索引结构,在进行数据处理后,对于块索引中的任何分段单元或索引数据均可执行以下操作:当分段单元中的数据项为空时,删除该分段单元;当相邻两分段单元中数据项的数量和小于第四阈值时,将所述相邻两分段单元合并;当索引数据的数据项只划分为一个分段单元时,若该分段单元中的数据项数量小于第五阈值,则将该索引数据从块索引迁移至分段索引中;当分段单元中数据项的数量大于第六阈值时,将该分段单元划分为两个新的分段单元。
本发明实施例中,基于上述索引结构,在进行数据处理后,对于分段索引中的任何分段索引单元或索引数据均可执行以下操作:当分段索引单元中的索引数据为0时,删除该分段索引单元;当相邻两分段索引单元中索引数据的数量和小于第一阈值时,将所述相邻两分段索引单元进行合并;当分段索引单元中索引数据的数据项数量超过第二阈值时,将该索引数据从其所在的分段索引单元迁移至块索引中;当分段索引单元的大小大于第三阈值时,将该分段索引单元划分为两个新的分段索引单元。
在本发明的另一实施例中,该索引结构被存储在多个如图4a所示的存储单元中,该索引结构中还包括多个存储单元的存储信息,具体的如图9所示,各存储单元91之间可以并列存储,该索引结构中还可以包括各存储单元的存储信息92,存储信息92与其下级存储单元91之间形成级联结构,该存储信息91可以是各存储单元的存储数据的属性信息等,该存储信息92用于在确定指定索引数据位置时,首先根据指定索引数据的属性信息查找各存储单元91的存储信息92,以确定指定索引数据所在存储单元91,然后再在确定的存储单元91中根据前述实施例的方法进行数据处理。而且,当存储信息92为多个时,存储信息92之间可以并列存储,并与其上一级的索引节点93形成级联结构,该索引节点93中可以包括其下级存储信息92的索引信息,例如存储信息92中的属性信息等,该索引结构还可以是由包括存储单元91、存储信息92、索引节点93在内的多级节点形成的大规模级联结构。基于该索引结构,在进行数据处理时,如定位、删除、增加数据等,在根据该数据的属性信息等确定该数据处理所针对的存储单元后,即可基于该存储单元执行与前述实施例类似的步骤,进行数据处理,此处不再重复描述。
以上是对本发明方法实施例的描述,下面对实现上述方法的设备进行介绍。
参见图10,为本发明实施例一种索引数据处理设备的结构示意图。
本实施例中,至少一种属性信息的索引数据存储在一个索引结构中,该索引结构包括一头索引和至少一块索引,所述至少一块索引的索引存储在所述头索引中,所述至少一块索引的索引包括存储在所述块索引中的索引数据的属性信息。上述索引结构可以存储在PC机等终端或服务器的内部或外部的数据库中。基于上述索引结构,该设备可以包括:
指令接收模块1001,用于接收对指定索引数据的处理指令,所述处理指令中包括指定索引数据的属性信息。
数据处理模块1002,用于当根据所述索引结构中的头索引和所述指定索引数据的属性信息能确定一块索引的索引时,根据所述块索引的索引定位所述块索引,并对所述块索引中匹配所述索引数据的数据项进行处理。
指令接收模块1001接收到指定索引数据的指令后,由数据处理模块1002根据指定索引数据的属性信息,对指定索引数据所在的位置进行定位,然后对其中与指定索引数据匹配的索引数据的数据项进行数据处理,。该数据处理可以是定位、删除、增加指定索引数据的数据项等,其具体操作请参见前述图5~8对应的实施例。
在另一实施例中,该索引结构也还可以包括至少一分段索引,该至少一分段索引的索引存储在所述头索引中,至少一分段索引的索引包括存储在分段索引中的索引数据的属性信息,数据处理模块,还可以用于当根据索引结构中的头索引和指定索引数据的属性信息能确定一分段索引的索引时,根据分段索引的索引定位分段索引,并对分段索引中匹配索引数据的数据项进行处理,该索引结构可以才采用如图3或图4a或图9中的形式等。
本发明实施例通过将具有不同属性信息的索引数据存储在一个索引结构中,使得数据存储更为紧凑,从而通过上述模块可以在一次Key-Value访问中获取或者更新更多的数据,所以可以减少数据处理时与Key-Value***之间的交互,从而提高了索引建立和查询的性能。
参见图11,为本发明实施例另一种索引数据处理设备的结构示意图。
本发明实施例的索引结构中,分段索引中包括至少一个分段索引单元,分段索引单元并列存储,每个分段索引单元中包含多个索引数据;块索引中,具有相同属性信息的索引数据的数据项划分为至少一个分段单元。分段单元之间链式连接形成分段单元链,该分段单元链的相邻两分段单元中,上一分段单元存储有下一分段单元的访问信息;或者,分段单元之间并列存储,块索引中还存储有各分段单元的分段信息。
该设备也可以包括指令接收模块1101和数据处理模块1102,其中指令接收模块1101与指令接收模块1001类似。
本实施例中,该数据处理模块1102可以进一步包括:
第一合并单元11021,用于当相邻两分段索引单元中索引数据的数量和小于第一阈值时,将所述相邻两分段索引单元进行合并;
第一迁移单元11022,用于当分段索引单元中索引数据的数据项数量超过第二阈值时,将该索引数据从其所在的分段索引单元迁移至块索引中;
第一划分单元11023,用于当分段索引单元的大小大于第三阈值时,将该分段索引单元划分为两个新的分段索引单元。
第二合并单元11024,用于当相邻两分段单元中数据项的数量和小于第四阈值时,将所述相邻两分段单元合并;
第二迁移单元11025,用于当索引数据的数据项只划分为一个分段单元时,若该分段单元中的数据项数量小于第五阈值,则将该索引数据从块索引迁移至分段索引中;
第二划分单元11026,用于当分段单元中数据项的数量大于第六阈值时,将该分段单元划分为两个新的分段单元。
在该实施例中,该数据处理模块1102可以包括以上单元的任意组合,不作具体限定。
在本发明的另一实施例中,该数据处理模块1102还可以进一步包括如下单元:
定位单元,用于在所述匹配索引数据的数据项中,定位所述指定索引数据的数据项;
第一删除单元,用于在所述匹配索引数据的数据项中,删除所述指定索引数据的数据项;
增加单元,用于在所述匹配索引数据的数据项中,增加所述指定索引数据的数据项。
第二删除单元,用于当分段索引单元中的索引数据为0时,删除该分段索引单元;
第三删除单元,用于当分段单元中的数据项为空时,删除该分段单元。
该数据处理模块可以同时包括上述单元的任意组合。
在另一实施例中,若该索引结构中存储有多个存储单元,则存储单元之间可以并列存储,该索引结构中还包括各存储单元的存储信息,以形成大规模数据的级联结构。在该索引结构下,数据处理模块在进行数据处理时,如定位、删除、增加数据等,在根据该数据的属性信息等确定该数据处理所针对的存储单元后,即可基于该存储单元执行与前述实施例类似的步骤,进行数据处理,此处不再重复描述。
通过上述本发明实施例的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明实施例或者实施例的某些部分所述的方法。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本发明实施例通过将具有不同属性信息的索引数据存储在一个索引结构中,使得数据存储更为紧凑,从而通过上述模块可以在一次Key-Value访问中获取或者更新更多的数据,所以可以减少数据处理时与Key-Value***之间的交互,从而提高了索引建立和查询的性能。
以上设备中各模块及单元的具体实现过程请参见前述方法实施例的相应描述,此处不再赘述。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。
Claims (8)
1.一种索引数据处理方法,其特征在于,至少一种属性信息的索引数据存储在一个索引结构中,所述索引结构包括一头索引和至少一块索引,所述至少一块索引的索引存储在所述头索引中,所述至少一块索引的索引包括存储在所述块索引中的索引数据的属性信息,所述方法包括:
接收对指定索引数据的处理指令,所述处理指令中包括指定索引数据的属性信息;
若根据所述索引结构中的头索引和所述指定索引数据的属性信息能确定一块索引的索引,则根据所述块索引的索引定位所述块索引,并对所述块索引中匹配所述索引数据的数据项进行处理;
所述索引结构还包括至少一分段索引,所述至少一分段索引的索引存储在所述头索引中,所述至少一分段索引的索引包括存储在所述分段索引中的索引数据的属性信息;
若根据所述索引结构中的头索引和所述指定索引数据的属性信息能确定一分段索引的索引,则根据所述分段索引的索引定位所述分段索引,并对所述分段索引中匹配所述索引数据的数据项进行处理;
所述分段索引中包括至少一个分段索引单元,所述分段索引单元并列存储,每个分段索引单元中包含多个索引数据;
所述块索引中,具有相同属性信息的索引数据的数据项划分为至少一个分段单元;
所述分段单元之间链式连接形成分段单元链,该分段单元链的相邻两分段单元中,上一分段单元存储有下一分段单元的访问信息;或者,
所述分段单元之间并列存储,所述块索引中还存储有各分段单元的分段信息。
2.根据权利要求1所述的方法,其特征在于,所述索引结构被存储在多个存储单元中,所述索引结构中还包括所述多个存储单元的存储信息。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当相邻两分段索引单元中索引数据的数量和小于第一阈值时,将所述相邻两分段索引单元进行合并;或者,
当分段索引单元中索引数据的数据项数量超过第二阈值时,将该索引数据从其所在的分段索引单元迁移至块索引中;或者,
当分段索引单元中索引数据的数据项数量大小大于第三阈值时,将该分段索引单元划分为两个新的分段索引单元。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当相邻两分段单元中数据项的数量和小于第四阈值时,将所述相邻两分段单元合并;或者,
当索引数据的数据项只划分为一个分段单元时,若该分段单元中的数据项数量小于第五阈值,则将该索引数据从块索引迁移至分段索引中;或者,
当分段单元中数据项的数量大于第六阈值时,将该分段单元划分为两个新的分段单元。
5.一种索引数据处理设备,其特征在于,至少一种属性信息的索引数据存储在一个索引结构中,所述索引结构包括一头索引和至少一块索引,所述至少一块索引的索引存储在所述头索引中,所述至少一块索引的索引包括存储在所述块索引中的索引数据的属性信息,所述设备包括:
指令接收模块,用于接收对指定索引数据的处理指令,所述处理指令中包括指定索引数据的属性信息;
数据处理模块,用于当根据所述索引结构中的头索引和所述指定索引数据的属性信息能确定一块索引的索引时,根据所述块索引的索引定位所述块索引,并对所述块索引中匹配所述索引数据的数据项进行处理;
所述索引结构还包括至少一分段索引,所述至少一分段索引的索引存储在所述头索引中,所述至少一分段索引的索引包括存储在所述分段索引中的索引数据的属性信息;
所述数据处理模块,还用于当根据所述索引结构中的头索引和所述指定索引数据的属性信息能确定一分段索引的索引时,根据所述分段索引的索引定位所述分段索引,并对所述分段索引中匹配所述索引数据的数据项进行处理;
所述分段索引中包括至少一个分段索引单元,所述分段索引单元并列存储,每个分段索引单元中包含多个索引数据;
所述块索引中,具有相同属性信息的索引数据的数据项划分为至少一个分段单元;
所述分段单元之间链式连接形成分段单元链,该分段单元链的相邻两分段单元中,上一分段单元存储有下一分段单元的访问信息;或者,
所述分段单元之间并列存储,所述块索引中还存储有各分段单元的分段信息。
6.根据权利要求5所述的设备,其特征在于,所述索引结构被存储在多个存储单元中,所述索引结构中还包括所述多个存储单元的存储信息。
7.根据权利要求5所述的设备,其特征在于,所述数据处理模块包括如下至少一项:
第一合并单元,用于当相邻两分段索引单元中索引数据的数量和小于第一阈值时,将所述相邻两分段索引单元进行合并;
第一迁移单元,用于当分段索引单元中索引数据的数据项数量超过第二阈值时,将该索引数据从其所在的分段索引单元迁移至块索引中;
第一划分单元,用于当分段索引单元中索引数据的数据项数量大小大于第三阈值时,将该分段索引单元划分为两个新的分段索引单元。
8.根据权利要求5所述的设备,其特征在于,所述数据处理模块包括如下至少一项:
第二合并单元,用于当相邻两分段单元中数据项的数量和小于第四阈值时,将所述相邻两分段单元合并;
第二迁移单元,用于当索引数据的数据项只划分为一个分段单元时,若该分段单元中的数据项数量小于第五阈值,则将该索引数据从块索引迁移至分段索引中;
第二划分单元,用于当分段单元中数据项的数量大于第六阈值时,将该分段单元划分为两个新的分段单元。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2011/084609 WO2013097065A1 (zh) | 2011-12-26 | 2011-12-26 | 一种索引数据处理方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102725754A CN102725754A (zh) | 2012-10-10 |
CN102725754B true CN102725754B (zh) | 2014-08-13 |
Family
ID=46950465
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180003412.5A Expired - Fee Related CN102725754B (zh) | 2011-12-26 | 2011-12-26 | 一种索引数据处理方法及设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102725754B (zh) |
WO (1) | WO2013097065A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970739B (zh) * | 2013-01-24 | 2017-04-26 | 中兴通讯股份有限公司 | 一种存储信息的处理方法及装置 |
CN104346347A (zh) * | 2013-07-25 | 2015-02-11 | 深圳市腾讯计算机***有限公司 | 数据存储方法、装置、服务器及*** |
CN107688567B (zh) * | 2016-08-03 | 2021-02-09 | 腾讯科技(深圳)有限公司 | 一种索引存储方法及相关装置 |
CN106570093B (zh) * | 2016-10-24 | 2020-03-27 | 南京中新赛克科技有限责任公司 | 一种基于独立元数据组织结构的海量数据迁移方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4841433A (en) * | 1986-11-26 | 1989-06-20 | American Telephone And Telegraph Company, At&T Bell Laboratories | Method and apparatus for accessing data from data attribute tables |
CN101055589A (zh) * | 2007-05-30 | 2007-10-17 | 北京航空航天大学 | 嵌入式数据库的存储管理方法 |
CN101853283A (zh) * | 2010-05-21 | 2010-10-06 | 南京邮电大学 | 面向多维数据的语义索引对等网络的构建方法 |
-
2011
- 2011-12-26 WO PCT/CN2011/084609 patent/WO2013097065A1/zh active Application Filing
- 2011-12-26 CN CN201180003412.5A patent/CN102725754B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4841433A (en) * | 1986-11-26 | 1989-06-20 | American Telephone And Telegraph Company, At&T Bell Laboratories | Method and apparatus for accessing data from data attribute tables |
CN101055589A (zh) * | 2007-05-30 | 2007-10-17 | 北京航空航天大学 | 嵌入式数据库的存储管理方法 |
CN101853283A (zh) * | 2010-05-21 | 2010-10-06 | 南京邮电大学 | 面向多维数据的语义索引对等网络的构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102725754A (zh) | 2012-10-10 |
WO2013097065A1 (zh) | 2013-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20150278268A1 (en) | Data encoding and corresponding data structure | |
KR101617696B1 (ko) | 데이터 정규표현식의 마이닝 방법 및 장치 | |
CN111324577B (zh) | 一种Yml文件读写的方法及装置 | |
EP3435256A2 (en) | Optimal sort key compression and index rebuilding | |
JP2017526021A (ja) | データ検索におけるエラー修正装置及びその方法 | |
US10664459B2 (en) | Database managing method, database managing system, and database tree structure | |
CN102725754B (zh) | 一种索引数据处理方法及设备 | |
CN114780502B (zh) | 基于压缩数据直接计算的数据库方法、***、设备和介质 | |
CN113239365B (zh) | 一种基于知识图谱的漏洞修复方法 | |
US11074133B2 (en) | Method, electronic device and computer readable medium of file management | |
US20220005546A1 (en) | Non-redundant gene set clustering method and system, and electronic device | |
CN111666468A (zh) | 一种基于团簇属性在社交网络中搜索个性化影响力社区的方法 | |
US9715525B2 (en) | Method and system for searching and storing data | |
Kopelowitz et al. | Dynamic weighted ancestors | |
CN110502611A (zh) | 字符串检索方法和装置 | |
CN109254962B (zh) | 一种基于t-树的索引优化方法、装置及存储介质 | |
CN112711649A (zh) | 一种数据库多字段匹配方法、装置、设备及存储介质 | |
CN106569986A (zh) | 字符串替换方法和装置 | |
CN104991963B (zh) | 文件处理方法和装置 | |
Liu et al. | Rare itemsets mining algorithm based on RP-Tree and spark framework | |
CN115801020B (zh) | 确定有限状态自动机压缩方法、匹配方法、设备及介质 | |
KR102013839B1 (ko) | 데이터베이스 관리 방법, 시스템 및 데이터베이스 트리 구조 | |
CN109885733B (zh) | 针对目标生成树查询的图数据压缩方法及装置 | |
EP4198761A1 (en) | Branching for tree structure in database system | |
CN117729176B (zh) | 基于网络地址和响应体的应用程序接口聚合方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140813 Termination date: 20191226 |
|
CF01 | Termination of patent right due to non-payment of annual fee |