CN107688567B - 一种索引存储方法及相关装置 - Google Patents
一种索引存储方法及相关装置 Download PDFInfo
- Publication number
- CN107688567B CN107688567B CN201610628322.XA CN201610628322A CN107688567B CN 107688567 B CN107688567 B CN 107688567B CN 201610628322 A CN201610628322 A CN 201610628322A CN 107688567 B CN107688567 B CN 107688567B
- Authority
- CN
- China
- Prior art keywords
- index
- node
- stored
- value
- mapping
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
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/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
技术领域
本发明涉及数据处理技术领域,具体涉及一种索引存储方法及相关装置。
背景技术
索引是对数据库中一列或多列的值进行排序的一种数据结构,在大规模分布式存储引擎中,通过索引访问数据库中的数据的方式已经被广泛应用,用户通过建立索引,在索引中找到符合查询条件的索引值,通过符合查询条件的索引值找到数据库中对应的待检索数据。由于通过索引查询数据时,是在索引列表中找到符合查询条件的索引值,通过索引值就能够准确定位到数据库中待检索数据的位置,减少了对数据库进行遍历匹配的次数,从而大大提高了数据的检索速度。
然而,由于索引是存储在磁盘空间中的,磁盘空间的容量是有限的,如何能够减少索引对于磁盘空间的占用,成为目前亟待解决的问题。
发明内容
有鉴于此,本发明实施例提供一种索引存储方法及相关装置,能够减少索引在磁盘中的存储空间,从而减少索引对于磁盘空间的占用。
为实现上述目的,本发明实施例提供如下技术方案:
一种索引存储方法,包括:
将至少一个待存储索引的索引值转换为树形结构;所述树形结构包括多层节点,一层节点中包含的节点数量为至少一个,中间层各节点中一个节点对应的内容为一个待存储索引的索引值段,且由根节点至一叶子节点的上一节点的路径所关联的节点的内容,与一个待存储索引的索引值相应;中间层为所述树形结构中非根节点与叶子节点所在层;
按照预设映射规则,确定所述树形结构的中间层各节点的内容相应的映射值,一个节点的内容的长度大于相应的映射值的长度;
将中间层各节点的内容替换为相应的映射值,存储替换后的所述树形结构。
一种索引存储装置,包括:
树形结构转换模块,用于将至少一个待存储索引的索引值转换为树形结构;所述树形结构包括多层节点,一层节点中包含的节点数量为至少一个,中间层各节点中一个节点对应的内容为一个待存储索引的索引值段,且由根节点至一叶子节点的上一节点的路径所关联的节点的内容,与一个待存储索引的索引值相应;中间层为所述树形结构中非根节点与叶子节点所在层;
映射值确定模块,用于按照预设映射规则,确定所述树形结构的中间层各节点的内容相应的映射值,一个节点的内容的长度大于相应的映射值的长度;
映射值替换模块,用于将中间层各节点的内容替换为相应的映射值,存储替换后的所述树形结构。
一种应用服务器,包括:
如上所述的索引存储装置。
基于上述技术方案,本发明实施例公开了一种索引存储方法及相关装置,通过将至少一个待存储索引的索引值转换为树形结构;所述树形结构包括多层节点,一层节点中包含的节点数量为至少一个,中间层各节点中一个节点对应的内容为一个待存储索引的索引值段,且由根节点至一叶子节点的上一节点的路径所关联的节点的内容,与一个待存储索引的索引值相应;中间层为所述树形结构中非根节点与叶子节点所在层;按照预设映射规则,确定所述树形结构的中间层各节点的内容相应的映射值,一个节点的内容的长度大于相应的映射值的长度;将中间层各节点的内容替换为相应的映射值,存储替换后的所述树形结构。由于本发明实施例中将待存储索引对应的树形结构中间层中存储的索引值映射并替换为长度小于所述索引值的映射值,并存储在磁盘空间中,从而压缩了索引在磁盘中的存储空间,减少索引对于磁盘空间的占用。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的索引存储方法的流程图;
图2为本发明实施例提供的将中间层各节点的内容替换为相应的映射值后,得到的新的树形结构示意图;
图3为本发明实施例提供的将至少一个待存储索引的索引值转换为树形结构的方法流程图;
图4为本发明实施例提供的冗余信息节点层生成方法流程图;
图5为本发明实施例提供的冗余信息节点层删除方法流程图;
图6为本发明实施例提供的含有冗余信息节点层,并且中间层各节点上的内容为映射值的树形结构示意图;
图7为本发明实施例提供的去除冗余信息节点层,中间层各节点上的内容为映射值的树形结构示意图;
图8为本发明实施例提供的按照预设映射规则,确定所述树形结构的中间层各节点的内容相应的映射值的方法流程图;
图9为本发明实施例提供的待存储索引的索引值为由字母构成的树形结构示意图;
图10为本发明实施例提供的待存储索引的索引值为由字母构成的,中间层各节点上的内容为映射值树形结构示意图;
图11为本发明实施例提供的另一种按照预设映射规则,确定所述树形结构的中间层各节点的内容相应的映射值的方法流程图;
图12为本发明实施例提供的另一种待存储索引的索引值为由字母构成的,中间层各节点上的内容为映射值树形结构示意图;
图13为本发明实施例提供的索引存储装置的结构框图;
图14为本发明实施例提供的索引存储装置的硬件结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图对本发明实施例中公开的一种索引存储方法的具体实施方式做详细的说明。图1为本发明实施例提供的索引存储方法的流程图,该方法可应用于能够提供索引存储的服务器,服务器具体可为集群服务器,该服务器具备通过网络与客户端进行通信的功能。参照图1,所述方法可以包括:
S101:将至少一个待存储索引的索引值转换为树形结构;
需要说明的是,所述树形结构包括多层节点,一层节点中包含的节点数量为至少一个,中间层各节点中一个节点对应的内容为一个待存储索引的索引值段,所述索引值段为所述待存储索引的索引值的一部分,中间层为所述树形结构中非根节点与叶子节点所在层。
由根节点至一叶子节点的上一节点的路径所关联的节点的内容,与一个待存储索引的索引值相应;即由根节点至一叶子节点的路径上的中间层各节点上所有索引值段组成所述叶子节点上的索引值。
S102:按照预设映射规则,确定所述树形结构的中间层各节点的内容相应的映射值;一个节点的内容的长度大于相应的映射值的长度;
本发明实施例中是按照预设映射规则,确定所述树形结构的中间层各节点存储的索引值段对应的映射值,一个节点的索引值段的长度大于相应的映射值的长度。
可选的,本发明实施例中可以采用无字符串映射的方式或者哈希映射的方式,将一段由字符串构成的索引值段映射为长度小于字符串长度的映射值。
其中,由于采用哈希映射的方式是通过散列算法,变换成固定长度并且长度小于字符串长度的映射值,得到的映射值相对于被映射字符串,成散列分布,例如通过哈希映射的方式将两个比较相似的字符串分别散列映射为两个不同的映射值,存储在中间层节点中,分别指向两个不同的叶子节点,即将两个比较相似的字符串保存在两个不同的叶子节点中,使得叶节点中保存的信息足够均匀。
而如果采用其他的映射方式,由于两个字符串比较相似,有可能就被映射为同一个映射值,从而指向同一个叶子节点,即将两个比较相似的字符串保存在了同一个叶子节点中,造成叶子节点中保存的信息不均匀。
S103:将中间层各节点的内容替换为相应的映射值,存储替换后的所述树形结构。
如图2所示,为本发明实施例中公开的将中间层各节点的内容替换为相应的映射值后,得到的新的树形结构,所述新的树形结构中第一层Root为根节点,第二层至第三层为中间层,存储待存储索引的索引值段对应的映射值,第四层为叶子节点,存储待存储索引的索引值。
由于本发明实施例中将待存储索引对应的树形结构中间层中存储的索引值映射并替换为长度小于所述索引值的映射值,并存储在磁盘空间中,从而压缩了索引在磁盘中的存储空间,减少索引对于磁盘空间的占用。
可选的,图3示出了本发明实施例提供的将至少一个待存储索引的索引值转换为树形结构的方法流程图,该方法可以包括:
S201:按照预设切分规则,将各待存储索引的索引值进行等长切分,得到各待存储索引对应的至少两个长度相等的索引值段;
具体的,本发明实施例中公开了按照预设切分规则,将各待存储索引的索引值进行等长切分,得到各待存储索引对应的至少两个长度相等的索引值段的过程包括:分别确定各待存储索引的索引值的长度;获取各待存储索引对应的预先设定的子树的树高;按照各待存储索引对应的所述子树的树高以及所述索引值的长度,分别确定所述各待存储索引对应的等长切分的长度;按照所述各待存储索引对应的等长切分的长度,分别对各待存储索引的索引值进行等长切分,得到各待存储索引对应的至少两个长度相等的索引值段。
可选的,本发明实施例中预先设定各待存储索引对应的子树的树高,所述待存储索引对应的子树的树高是由技术人员依据待存储索引的索引值的长度以及待存储索引对应的子树的叶子节点的个数确定的。
当限制了子树树高不超过4的时候,对于待存储索引的索引值长度在9个字符以内的(包括9个字符),则确定中间层分为三层,每层的字符串可以均为3个字符,10-15个字符以内的(包括15个字符),确定中间层分为三层,每层的字符串可以均为5个字符,同理,15-30个字符以内的(包括30个字符),确定中间层分为三层,每层的字符串可以均为10个字符,以此类推。
对于每层字符串不够所划分的字符个数的情况,则选择空格填充,空格可以填充在字符串的前部或尾部,本发明实施例不做具体限定。
本发明实施例通过限制子树树高的方式,即限定了树形结构中间层的层数,从而在依据中间各层的索引值段进行索引落盘的情况下,能够限定访问磁盘的IO次数。
需要说明的是,本发明实施例中还可以将各待存储索引的索引值进行不等长切分,得到各待存储索引对应的至少两个长度不相等的索引值段。
S202:对于各待存储索引,按照切分后的各索引值段在相应待存储索引中的排列顺序,确定所述切分后的各索引值段在中间层的分层;
其中,一待存储索引的各索引值段对应的分层不同。
S203:对于各待存储索引,将切分后的各索引值段按照所确定的分层,分层存储在中间层中;
需要说明的是,本发明实施例中,按照切分后的各索引值段在相应待存储索引中的排列顺序,依次获取切分后的各索引值段;按照从根节点开始的中间层中各层的排列顺序,将依次获取的切分后的各索引值段分层存储在中间层各层节点中。
S204:在树形结构的叶子节点层的叶子节点中存储一待存储索引的索引值。
其中,由根节点至任一叶子节点的上一节点的路径所关联的节点的内容,与一个待存储索引的索引值相应,即由根节点至任一叶子节点的上一节点的路径所关联的节点的内容指向该叶子节点中存储的待存储索引的索引值。
可选的,在对于各待存储索引,按照切分后的各索引值段在相应待存储索引中的排列顺序,确定所述切分后的各索引值段在中间层的分层之前,还包括:冗余信息节点层生成的过程,图4示出了本发明实施例提供的冗余信息节点层生成方法流程图,该方法可以包括:
S301:在树形结构根节点所在层与中间层之间插入冗余信息节点层;
S302:将各待存储索引所对应的一个索引值段的长度信息,存储在冗余信息节点层的节点中;
需要说明的是,冗余信息节点层的一节点对应存储一待存储索引的一索引值段的长度信息,例如一字符串的长度信息等。
本发明实施例中,还包括:对所述树形结构的冗余信息节点层中各节点中存储的索引值段的长度信息分别进行哈希映射,得到每个索引值段的长度信息对应的哈希映射值;所述树形结构的冗余信息节点层中各节点中存储的索引值段的长度信息分别替换为相应的哈希映射值,相应的哈希映射值的长度小于冗余信息节点层中各节点中存储的索引值段的长度,从而减小冗余信息节点层中各节点中存储的信息的长度,进一步节省磁盘空间。
S303:将一待存储索引的索引值段所在节点与该待存储索引对应的冗余信息节点层中的节点相关联。
本发明实施例中将冗余信息节点层中的节点与与之对应的待存储索引的索引值段所在的中间层的节点相关联。
本发明实施例中在按照预设映射规则,确定所述树形结构的中间层各节点的内容相应的映射值之后,还包括:冗余信息节点层删除的过程,图5示出了本发明实施例提供的冗余信息节点层删除方法流程图,该方法可以包括:
S401:判断由根节点至任一叶子节点之间所关联路径上的中间层各节点的映射值是否相同;如果是,则执行S402,否则结束处理;
S402:将由根节点至任一叶子节点之间所关联路径上的中间层各节点的映射值相同的路径上的冗余信息节点层删除;
S403:将映射值相同的中间层各节点所在的由根节点至叶子节点之间路径合并为一条路径,合并后得到的叶子节点中存储映射值相同的中间层各节点对应的待存储索引的索引值。
对于长度不同的索引值,由于所截取的索引值段的长度不同,但可能使用相同的映射值表示,基于此,本发明实施例中,在将由根节点至任一叶子节点之间所关联路径上的中间层各节点的映射值相同的路径上的冗余信息节点层删除之后,将映射值相同的中间层各节点所在的由根节点至叶子节点之间路径合并为一条路径,只用一条路径就能够表示由根节点至任一叶子节点之间所关联路径上的中间层各节点的映射值相同的索引值,再将长度不同的索引值存储在同一个叶子节点中,因此,本发明实施例中的技术方案,仅仅用一条路径就能够指向同一个叶子节点中存储的两个长度不同的索引值,节省了路径条数与节点个数,并且,叶子节点中可以存储多个长度不同的索引值,提高了各层节点的复用率。
下面以一个具体的例子详细说明上述实施例的具体过程:
含有冗余信息节点层,并且中间层各节点上的内容为映射值的树形结构如图6所示,第一层Root为根节点,第二层为冗余信息节点层,存储索引值段的长度信息;第三层至第四层为中间层,存储索引值对应的索引值段;第五层为叶子节点,存储索引值;
冗余信息介电层中的左边节点2为待存储索引best所对应的一个索引值段的长度信息,待存储索引best被划分为两个索引值段:be与st,两个索引值段的长度信息为2;
冗余信息介电层中的右边节点3为待存储索引baasic所对应的一个索引值段的长度信息,待存储索引baasic被划分为两个索引值段:baa与sic,两个索引值段的长度信息为3;
从根节点分别至两个叶子节点之间所关联路径上的中间层各节点的映射值均为1和18,则将由根节点至任一叶子节点之间所关联路径上的中间层各节点的映射值相同的路径上的冗余信息节点层删除,即将第二层删除;
将映射值相同的中间层各节点1和18所在的由根节点至叶子节点之间路径合并为一条路径,合并后得到的叶子节点中存储映射值相同的中间层各节点对应的待存储索引的索引值,即合并后的叶子节点中存储索引值best与baasic,合并后的树形结构如图7所示。
可选的,图8示出了本发明实施例提供的按照预设映射规则,确定所述树形结构的中间层各节点的内容相应的映射值的方法流程图,该方法可以包括:
S501:确定所述树形结构的中间层各节点中存储的部分字符串的首字母;
本发明实施例提供的技术方案是当所述待存储索引的索引值为由字母构成的字符串的情况下提出的,所述索引值段为部分字符串。
S502:按照预设的不同字母与数字映射值的对应关系,确定所述部分字符串的首字母对应的数字映射值,所述一个节点的部分字符串的长度大于所述数字映射值的长度;
需要说明的是,本发明实施例中可以按照首字母在字母表中的排列顺序,对每个不同的首字母进行等分切分,每个首字母均对应不同的数字映射值,对于待存储索引的索引值中字母分布不均匀的字符串,则可以对每个不同的首字母进行非等分切分,对于分布比较密集的几个首字母对应一个数字映射值。例如,字符串在首字母a-c之间分布比较密集,则将首字母a-c对应一个数字映射值,而不是首字母a-c分别对应不同的3个数字映射值。
S503:将所述部分字符串的首字母对应的数字映射值,作为所述树形结构的中间层各节点的内容相应的映射值。
下面以一个具体的例子详细说明上述实施例的具体过程:
一个待存储索引的索引值为由8位小写字母构成的字符串,例如:abfgsrch,中间层总共分为两层,每层存储的部分字符串长度均为4,则待存储索引的索引值分成的两个部分字符串为:abfg与srch,形成的树形结构如图9所示;
将由任意的小写字母构成的长度为4所有字符串进行26份的等分切分:0表示字符串序列介于["aaaa","baaa")之间的字符串,1表示字符串序列介于["baaa","caaa")之间的字符串....,25表示字符串序列介于["zaaa","zzzz"]之间的字符串;
需要说明的是,本发明实施例中也可以对其他长度的由任意的小写字母构成的字符串采用上述方式进行切分,本发明实施例中不做具体限定。
按照上述不同字母与数字映射值的对应关系,确定部分字符串abfg与srch的首字母对应的数字映射值分别为1与18,索引值段abfg与srch的长度大于对应的哈希映射值1与18的长度;
将数字映射值1与18作为所述树形结构的中间层各节点的内容相应的映射值,将中间层各节点的内容替换为相应的映射值,得到的具有映射值的树形结构如图10所示。
可选的,图11示出了本发明实施例提供的另一种按照预设映射规则,确定所述树形结构的中间层各节点的内容相应的映射值的方法流程图,该方法可以包括:
S601:确定所述树形结构的中间层各节点中存储的索引值段对应的哈希映射值,所述一个节点中存储的索引值段的长度大于所述哈希映射值的长度;
采用哈希映射的方式是通过散列算法,变换成固定长度并且长度小于字符串长度的映射值,得到的映射值相对于被映射字符串,成散列分布,例如通过哈希映射的方式将两个比较相似的字符串分别散列映射为两个不同的映射值,存储在中间层节点中,分别指向两个不同的叶子节点,即将两个比较相似的字符串保存在两个不同的叶子节点中,使得叶节点中保存的信息足够均匀。
S602:将所述索引值段对应的哈希映射值,作为所述树形结构的中间层各节点的内容相应的映射值。
下面以一个具体的例子详细说明上述实施例的具体过程:
确定上述附图9所示的树形结构的中间层各节点中存储的索引值段abfg与srch对应的哈希映射值分别为ab与sr,索引值段abfg与srch的长度大于对应的哈希映射值ab与sr的长度;
将数字映射值ab与sr作为所述树形结构的中间层各节点的内容相应的映射值,将中间层各节点的内容替换为相应的映射值,得到的具有映射值的树形结构如图12所示。
下面对本发明实施例提供的索引存储装置进行介绍,下文描述的索引存储装置可与上文索引存储方法相互对应参照。
图13为本发明实施例提供的索引存储装置的结构框图,该索引存储装置具体可以为应用服务器,参照图13,该索引存储装置可以包括:
树形结构转换模块11,用于将至少一个待存储索引的索引值转换为树形结构;所述树形结构包括多层节点,一层节点中包含的节点数量为至少一个,中间层各节点中一个节点对应的内容为一个待存储索引的索引值段,且由根节点至一叶子节点的上一节点的路径所关联的节点的内容,与一个待存储索引的索引值相应;中间层为所述树形结构中非根节点与叶子节点所在层;
映射值确定模块12,用于按照预设映射规则,确定所述树形结构的中间层各节点的内容相应的映射值,一个节点的内容的长度大于相应的映射值的长度;
映射值替换模块13,用于将中间层各节点的内容替换为相应的映射值,存储替换后的所述树形结构。
可选的,所述树形结构转换模块11包括:
切分模块,用于按照预设切分规则,将各待存储索引的索引值进行等长切分,得到各待存储索引对应的至少两个长度相等的索引值段;
分层确定模块,用于对于各待存储索引,按照切分后的各索引值段在相应待存储索引中的排列顺序,确定所述切分后的各索引值段在中间层的分层,一待存储索引的各索引值段对应的分层不同;
索引值段存储模块,用于对于各待存储索引,将切分后的各索引值段按照所确定的分层,分层存储在中间层中;
索引值存储模块,用于在树形结构的叶子节点层的叶子节点中存储一待存储索引的索引值,由根节点至任一叶子节点的上一节点的路径所关联的节点的内容,与一个待存储索引的索引值相应。
还包括:
冗余信息节点层插入模块,用于在树形结构根节点所在层与中间层之间插入冗余信息节点层;
长度信息存储模块,用于将各待存储索引所对应的一个索引值段的长度信息,存储在冗余信息节点层的节点中,冗余信息节点层的一节点对应存储一待存储索引的一索引值段的长度信息;
关联模块,用于将一待存储索引的索引值段所在节点与该待存储索引对应的冗余信息节点层中的节点相关联。
所述切分模块包括:
索引值长度确定模块,用于分别确定各待存储索引的索引值的长度;
树高获取模块,用于获取各待存储索引对应的预先设定的子树的树高;
等长切分长度确定模块,用于按照各待存储索引对应的所述子树的树高以及所述索引值的长度,分别确定所述各待存储索引对应的等长切分的长度;
等长切分模块,用于按照所述各待存储索引对应的等长切分的长度,分别对各待存储索引的索引值进行等长切分,得到各待存储索引对应的至少两个长度相等的索引值段。
还包括:
映射值判断模块,用于判断由根节点至任一叶子节点之间所关联路径上的中间层各节点的映射值是否相同;
冗余信息节点层删除模块,用于在映射值判断模块判断出由根节点至任一叶子节点之间所关联路径上的中间层各节点的映射值相同时,将由根节点至任一叶子节点之间所关联路径上的中间层各节点的映射值相同的路径上的冗余信息节点层删除;
合并模块,用于将映射值相同的中间层各节点所在的由根节点至叶子节点之间路径合并为一条路径,合并后得到的叶子节点中存储映射值相同的中间层各节点对应的待存储索引的索引值。
还包括:
第一哈希映射模块,用于对所述树形结构的冗余信息节点层中各节点中存储的索引值段的长度信息分别进行哈希映射,得到每个索引值段的长度信息对应的哈希映射值;
第一哈希映射值替换模块,用于将所述树形结构的冗余信息节点层中各节点中存储的索引值段的长度信息分别替换为相应的哈希映射值。
所述映射值确定模块包括:
首字母确定模块,用于确定所述树形结构的中间层各节点中存储的部分字符串的首字母,所述待存储索引的索引值为由字母构成的字符串,所述索引值段为部分字符串;
数字映射值确定模块,用于按照预设的不同字母与数字映射值的对应关系,确定所述部分字符串的首字母对应的数字映射值,所述一个节点的部分字符串的长度大于所述数字映射值的长度;
数字映射值替换模块,用于将所述部分字符串的首字母对应的数字映射值,作为所述树形结构的中间层各节点的内容相应的映射值。
所述映射值确定模块包括:
第二哈希映射模块,确定所述树形结构的中间层各节点中存储的索引值段对应的哈希映射值,所述一个节点中存储的索引值段的长度大于所述哈希映射值的长度;
第二哈希映射值替换模块,用于将所述索引值段对应的哈希映射值,作为所述树形结构的中间层各节点的内容相应的映射值。
一种应用服务器,包括:
如上所述的索引存储装置。
可选的,索引存储装置可以为硬件设备,上文描述的模块可以设置于索引存储装置内的功能模块。图14示出了索引存储装置的硬件结构框图,参照图14,索引存储装置可以包括:处理器1,通信接口2,存储器3和通信总线4;其中处理器1、通信接口2、存储器3通过通信总线4完成相互间的通信;可选的,通信接口2可以为通信模块的接口,如GSM模块的接口;
处理器1,用于执行程序;存储器3,用于存放程序;程序可以包括程序代码,所述程序代码包括计算机操作指令;
处理器1可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路;存储器3可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
其中,程序可具体用于:
将至少一个待存储索引的索引值转换为树形结构;所述树形结构包括多层节点,一层节点中包含的节点数量为至少一个,中间层各节点中一个节点对应的内容为一个待存储索引的索引值段,且由根节点至一叶子节点的上一节点的路径所关联的节点的内容,与一个待存储索引的索引值相应;中间层为所述树形结构中非根节点与叶子节点所在层;
按照预设映射规则,确定所述树形结构的中间层各节点的内容相应的映射值,一个节点的内容的长度大于相应的映射值的长度;
将中间层各节点的内容替换为相应的映射值,存储替换后的所述树形结构。
综上所述:
本发明实施例公开了一种索引存储方法及相关装置,通过将至少一个待存储索引的索引值转换为树形结构;所述树形结构包括多层节点,一层节点中包含的节点数量为至少一个,中间层各节点中一个节点对应的内容为一个待存储索引的索引值段,且由根节点至一叶子节点的上一节点的路径所关联的节点的内容,与一个待存储索引的索引值相应;中间层为所述树形结构中非根节点与叶子节点所在层;按照预设映射规则,确定所述树形结构的中间层各节点的内容相应的映射值,一个节点的内容的长度大于相应的映射值的长度;将中间层各节点的内容替换为相应的映射值,存储替换后的所述树形结构。由于本发明实施例中将待存储索引对应的树形结构中间层中存储的索引值映射并替换为长度小于所述索引值的映射值,并存储在磁盘空间中,从而压缩了索引在磁盘中的存储空间,减少索引对于磁盘空间的占用。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (19)
1.一种索引存储方法,其特征在于,包括:
将至少一个待存储索引的索引值转换为树形结构;所述树形结构包括多层节点,一层节点中包含的节点数量为至少一个,中间层各节点中一个节点对应的内容为一个待存储索引的索引值段,且由根节点至一叶子节点的上一节点的路径所关联的节点的内容,与一个待存储索引的索引值相应;由根节点至一叶子节点的路径上的中间层各节点上所有索引值段组成所述叶子节点上的索引值,中间层为所述树形结构中非根节点与叶子节点所在层;
按照预设映射规则,确定所述树形结构的中间层各节点的内容相应的映射值,一个节点的内容的长度大于相应的映射值的长度;
将中间层各节点的内容替换为相应的映射值,存储替换后的所述树形结构。
2.根据权利要求1所述的方法,其特征在于,所述将至少一个待存储索引的索引值转换为树形结构的过程包括:
按照预设切分规则,将各待存储索引的索引值进行等长切分,得到各待存储索引对应的至少两个长度相等的索引值段;
对于各待存储索引,按照切分后的各索引值段在相应待存储索引中的排列顺序,确定所述切分后的各索引值段在中间层的分层,一待存储索引的各索引值段对应的分层不同;
对于各待存储索引,将切分后的各索引值段按照所确定的分层,分层存储在中间层中;
在树形结构的叶子节点层的叶子节点中存储一待存储索引的索引值,由根节点至任一叶子节点的上一节点的路径所关联的节点的内容,与一个待存储索引的索引值相应。
3.根据权利要求2所述的方法,其特征在于,在对于各待存储索引,按照切分后的各索引值段在相应待存储索引中的排列顺序,确定所述切分后的各索引值段在中间层的分层之前,还包括:
在树形结构根节点所在层与中间层之间插入冗余信息节点层;
将各待存储索引所对应的一个索引值段的长度信息,存储在冗余信息节点层的节点中,冗余信息节点层的一节点对应存储一待存储索引的一索引值段的长度信息;
将一待存储索引的索引值段所在节点与该待存储索引对应的冗余信息节点层中的节点相关联。
4.根据权利要求2所述的方法,其特征在于,所述按照预设切分规则,将各待存储索引的索引值进行等长切分,得到各待存储索引对应的至少两个长度相等的索引值段的过程包括:
分别确定各待存储索引的索引值的长度;
获取各待存储索引对应的预先设定的子树的树高;
按照各待存储索引对应的所述子树的树高以及所述索引值的长度,分别确定所述各待存储索引对应的等长切分的长度;
按照所述各待存储索引对应的等长切分的长度,分别对各待存储索引的索引值进行等长切分,得到各待存储索引对应的至少两个长度相等的索引值段。
5.根据权利要求1-3任意一项所述的方法,其特征在于,所述方法还包括:
判断由根节点至任一叶子节点之间所关联路径上的中间层各节点的映射值是否相同;
如果是,则将由根节点至任一叶子节点之间所关联路径上的中间层各节点的映射值相同的路径上的冗余信息节点层删除;
将映射值相同的中间层各节点所在的由根节点至叶子节点之间路径合并为一条路径,合并后得到的叶子节点中存储映射值相同的中间层各节点对应的待存储索引的索引值。
6.根据权利要求3所述的方法,其特征在于,还包括:
对所述树形结构的冗余信息节点层中各节点中存储的索引值段的长度信息分别进行哈希映射,得到每个索引值段的长度信息对应的哈希映射值;
将所述树形结构的冗余信息节点层中各节点中存储的索引值段的长度信息分别替换为相应的哈希映射值。
7.根据权利要求1所述的方法,其特征在于,所述按照预设映射规则,确定所述树形结构的中间层各节点的内容相应的映射值的过程具体包括:
确定所述树形结构的中间层各节点中存储的部分字符串的首字母,所述待存储索引的索引值为由字母构成的字符串,所述索引值段为部分字符串;
按照预设的不同字母与数字映射值的对应关系,确定所述部分字符串的首字母对应的数字映射值,所述一个节点的部分字符串的长度大于所述数字映射值的长度;
将所述部分字符串的首字母对应的数字映射值,作为所述树形结构的中间层各节点的内容相应的映射值。
8.根据权利要求1所述的方法,其特征在于,所述按照预设映射规则,确定所述树形结构的中间层各节点的内容相应的映射值的过程具体包括:
确定所述树形结构的中间层各节点中存储的索引值段对应的哈希映射值,所述一个节点中存储的索引值段的长度大于所述哈希映射值的长度;
将所述索引值段对应的哈希映射值,作为所述树形结构的中间层各节点的内容相应的映射值。
9.一种索引存储装置,其特征在于,包括:
树形结构转换模块,用于将至少一个待存储索引的索引值转换为树形结构;所述树形结构包括多层节点,一层节点中包含的节点数量为至少一个,中间层各节点中一个节点对应的内容为一个待存储索引的索引值段,且由根节点至一叶子节点的上一节点的路径所关联的节点的内容,与一个待存储索引的索引值相应;由根节点至一叶子节点的路径上的中间层各节点上所有索引值段组成所述叶子节点上的索引值,中间层为所述树形结构中非根节点与叶子节点所在层;
映射值确定模块,用于按照预设映射规则,确定所述树形结构的中间层各节点的内容相应的映射值,一个节点的内容的长度大于相应的映射值的长度;
映射值替换模块,用于将中间层各节点的内容替换为相应的映射值,存储替换后的所述树形结构。
10.根据权利要求9所述的装置,其特征在于,所述树形结构转换模块包括:
切分模块,用于按照预设切分规则,将各待存储索引的索引值进行等长切分,得到各待存储索引对应的至少两个长度相等的索引值段;
分层确定模块,用于对于各待存储索引,按照切分后的各索引值段在相应待存储索引中的排列顺序,确定所述切分后的各索引值段在中间层的分层,一待存储索引的各索引值段对应的分层不同;
索引值段存储模块,用于对于各待存储索引,将切分后的各索引值段按照所确定的分层,分层存储在中间层中;
索引值存储模块,用于在树形结构的叶子节点层的叶子节点中存储一待存储索引的索引值,由根节点至任一叶子节点的上一节点的路径所关联的节点的内容,与一个待存储索引的索引值相应。
11.根据权利要求10所述的装置,其特征在于,还包括:
冗余信息节点层插入模块,用于在树形结构根节点所在层与中间层之间插入冗余信息节点层;
长度信息存储模块,用于将各待存储索引所对应的一个索引值段的长度信息,存储在冗余信息节点层的节点中,冗余信息节点层的一节点对应存储一待存储索引的一索引值段的长度信息;
关联模块,用于将一待存储索引的索引值段所在节点与该待存储索引对应的冗余信息节点层中的节点相关联。
12.根据权利要求10所述的装置,其特征在于,所述切分模块包括:
索引值长度确定模块,用于分别确定各待存储索引的索引值的长度;
树高获取模块,用于获取各待存储索引对应的预先设定的子树的树高;
等长切分长度确定模块,用于按照各待存储索引对应的所述子树的树高以及所述索引值的长度,分别确定所述各待存储索引对应的等长切分的长度;
等长切分模块,用于按照所述各待存储索引对应的等长切分的长度,分别对各待存储索引的索引值进行等长切分,得到各待存储索引对应的至少两个长度相等的索引值段。
13.根据权利要求9-11任意一项所述的装置,其特征在于,还包括:
映射值判断模块,用于判断由根节点至任一叶子节点之间所关联路径上的中间层各节点的映射值是否相同;
冗余信息节点层删除模块,用于在映射值判断模块判断出由根节点至任一叶子节点之间所关联路径上的中间层各节点的映射值相同时,将由根节点至任一叶子节点之间所关联路径上的中间层各节点的映射值相同的路径上的冗余信息节点层删除;
合并模块,用于将映射值相同的中间层各节点所在的由根节点至叶子节点之间路径合并为一条路径,合并后得到的叶子节点中存储映射值相同的中间层各节点对应的待存储索引的索引值。
14.根据权利要求11所述的装置,其特征在于,还包括:
第一哈希映射模块,用于对所述树形结构的冗余信息节点层中各节点中存储的索引值段的长度信息分别进行哈希映射,得到每个索引值段的长度信息对应的哈希映射值;
第一哈希映射值替换模块,用于将所述树形结构的冗余信息节点层中各节点中存储的索引值段的长度信息分别替换为相应的哈希映射值。
15.根据权利要求9所述的装置,其特征在于,所述映射值确定模块包括:
首字母确定模块,用于确定所述树形结构的中间层各节点中存储的部分字符串的首字母,所述待存储索引的索引值为由字母构成的字符串,所述索引值段为部分字符串;
数字映射值确定模块,用于按照预设的不同字母与数字映射值的对应关系,确定所述部分字符串的首字母对应的数字映射值,所述一个节点的部分字符串的长度大于所述数字映射值的长度;
数字映射值替换模块,用于将所述部分字符串的首字母对应的数字映射值,作为所述树形结构的中间层各节点的内容相应的映射值。
16.根据权利要求9所述的装置,其特征在于,所述映射值确定模块包括:
第二哈希映射模块,确定所述树形结构的中间层各节点中存储的索引值段对应的哈希映射值,所述一个节点中存储的索引值段的长度大于所述哈希映射值的长度;
第二哈希映射值替换模块,用于将所述索引值段对应的哈希映射值,作为所述树形结构的中间层各节点的内容相应的映射值。
17.一种应用服务器,其特征在于,包括:
如权利要求9至权利要求16任意一项所述的索引存储装置。
18.一种索引存储装置,其特征在于,包括:存储器和处理器;
所述存储器用于存储计算机程序;
所述处理器用于执行所述存储器中存储的计算机程序;
所述计算机程序用于执行权利要求1-8任一项所述的索引存储方法。
19.一种计算机可读存储介质,其特征在于,所述存储介质中存储有计算机程序,所述计算机程序用于执行权利要求1-8任一项所述的索引存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610628322.XA CN107688567B (zh) | 2016-08-03 | 2016-08-03 | 一种索引存储方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610628322.XA CN107688567B (zh) | 2016-08-03 | 2016-08-03 | 一种索引存储方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107688567A CN107688567A (zh) | 2018-02-13 |
CN107688567B true CN107688567B (zh) | 2021-02-09 |
Family
ID=61151320
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610628322.XA Active CN107688567B (zh) | 2016-08-03 | 2016-08-03 | 一种索引存储方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107688567B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108509514A (zh) * | 2018-03-09 | 2018-09-07 | 史玉成 | 一种基于区块链的大数据分析方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101082918A (zh) * | 2006-06-02 | 2007-12-05 | 凌阳科技股份有限公司 | 一种利用字母索引表查询电子词典单词的方法及其系统 |
CN101315628A (zh) * | 2007-06-01 | 2008-12-03 | 华为技术有限公司 | 内存数据库系统及实现内存数据库的方法和装置 |
CN102004769A (zh) * | 2010-11-12 | 2011-04-06 | 成都市华为赛门铁克科技有限公司 | 文件管理方法、设备及存储系统 |
CN102725754A (zh) * | 2011-12-26 | 2012-10-10 | 华为技术有限公司 | 一种索引数据处理方法及设备 |
CN104156407A (zh) * | 2014-07-29 | 2014-11-19 | 华为技术有限公司 | 索引数据的存储方法、装置及存储设备 |
CN104750859A (zh) * | 2015-04-16 | 2015-07-01 | 成都影泰科技有限公司 | 一种网络存储方法 |
CN105653668A (zh) * | 2015-12-29 | 2016-06-08 | 武汉理工大学 | 云环境中基于DOMTree的网页内容分析提取优化方法 |
-
2016
- 2016-08-03 CN CN201610628322.XA patent/CN107688567B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101082918A (zh) * | 2006-06-02 | 2007-12-05 | 凌阳科技股份有限公司 | 一种利用字母索引表查询电子词典单词的方法及其系统 |
CN101315628A (zh) * | 2007-06-01 | 2008-12-03 | 华为技术有限公司 | 内存数据库系统及实现内存数据库的方法和装置 |
CN102004769A (zh) * | 2010-11-12 | 2011-04-06 | 成都市华为赛门铁克科技有限公司 | 文件管理方法、设备及存储系统 |
CN102725754A (zh) * | 2011-12-26 | 2012-10-10 | 华为技术有限公司 | 一种索引数据处理方法及设备 |
CN104156407A (zh) * | 2014-07-29 | 2014-11-19 | 华为技术有限公司 | 索引数据的存储方法、装置及存储设备 |
CN104750859A (zh) * | 2015-04-16 | 2015-07-01 | 成都影泰科技有限公司 | 一种网络存储方法 |
CN105653668A (zh) * | 2015-12-29 | 2016-06-08 | 武汉理工大学 | 云环境中基于DOMTree的网页内容分析提取优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107688567A (zh) | 2018-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102266756B1 (ko) | Kvs 트리 | |
US9519687B2 (en) | Minimizing index maintenance costs for database storage regions using hybrid zone maps and indices | |
JP5798503B2 (ja) | ファイルリスト生成方法及びシステム、ファイルリスト生成装置並びにプログラム | |
CN107153647B (zh) | 进行数据压缩的方法、装置、系统和计算机程序产品 | |
US10073876B2 (en) | Bloom filter index for device discovery | |
TW201837720A (zh) | 用於多串流儲存裝置之串流選擇 | |
TW201841123A (zh) | 用於維護操作之合併樹修改 | |
US10127254B2 (en) | Method of index recommendation for NoSQL database | |
CN114077680B (zh) | 一种图数据的存储方法、系统及装置 | |
WO2015054877A1 (en) | Method and apparatus for data storage and retrieval | |
CN112988908B (zh) | 区块链数据存储方法及装置、电子设备 | |
CN107688567B (zh) | 一种索引存储方法及相关装置 | |
CN109254962B (zh) | 一种基于t-树的索引优化方法、装置及存储介质 | |
Pibiri et al. | Dynamic elias-fano representation | |
US20150213092A1 (en) | Optimized data condenser and method | |
CN108647243B (zh) | 基于时间序列的工业大数据存储方法 | |
CN112597318B (zh) | 图谱节点收缩方法、图谱节点收缩装置及电子设备 | |
CN112639761B (zh) | 一种为数据建立索引的方法以及装置 | |
CN111538730B (zh) | 一种基于哈希桶算法的数据统计的方法及其系统 | |
CN110502611A (zh) | 字符串检索方法和装置 | |
CN111966691B (zh) | 一种分布式存储系统快速查询对象所属目录的配置方法及系统 | |
CN113515517B (zh) | 一种基于树形结构数据查询数据集的方法和计算机设备 | |
CN110427345B (zh) | 一种网络层级地图数据的快速缓存方法 | |
CN112468395B (zh) | 边界网关协议bgp路由的处理方法和装置 | |
CN115422426A (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 |