paip.索引的种类以及实现attilax 总结

paip.索引的种类以及实现attilax 总结

1. 索引的类型 1

2. Btree索引(分块索引) 1

3. Hash 索引(编号索引) 1

4. 倒排索引 2

5. 对大型文本文件做索引 2

6. 索引文件的合并问题 2

作者Attilax  艾龙,  EMAIL:1466519819@qq.com 
来源:attilax的专栏
地址:http://blog.csdn.net/attilax 

1. 索引的类型

按查找方式分,两种,一种是分块》分块类型。。

一种是不分块,编号顺序排列类型

2. Btree索引(分块索引)

B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点,,需要这样多次的io访问

常见的Btree索引:

书籍的分类索引,就是一种Btree索引..把每一大类分成若干小类,按你的分类详细程度一级一级分下去,在整理出来就行了...

字典的部首查字法

字典的笔画查字法

 许多数据库默认的建立的索引也是B-Tree 索引

我们整理家庭物品时,按分类分箱装纳,这中索引也是属于Btree索引

 

3. Hash 索引(编号索引)

Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位 

常见Hash 索引的实现:

字典的拼音索引,也是属于Hash 索引

四角号码查字法  

书籍中的大事记表等应该是属于HASH索引。。

我们整理家庭物品时,将其编号存放,属于HASH索引。

数据库默认btree索引,也能建立Hash 索引

4. 倒排索引

全文索引,以及书籍中的人物名称索引都是倒排索引

 

5. 对大型文本文件做索引

有时候,需要快速寻找时候,需要对大型文本文件做索引,一般,来说普通PC机器上,单核cpu 2.8g, 当文件大于3W行的时候,使用JAVA,顺序扫描的时间就需要10s,应该是需要做索引了...当然,要是使用C++,性能会有10倍以上的提升,可以大于30W行时再做索引。。

要是是多核cpu, 根据cpu数量,也能可以大幅度的提升性能..2cpu核可以大概提升2,4个核4,以此类推..

根据文本的类型,以及特点,可以做Btree索引/HASH索引,有时候可能也需要做倒排索引

使用TREEMAP, HASHMAP等等结构 先扫描文件,然后序列化,保存为索引文件...

6. 索引文件的合并问题

当索引文件越来越大时候,就需要分布式存储在多个增量索引文件上..到时合并或者不合并.....

或者使用2进制方式增量存储..

 

 

原文地址:https://www.cnblogs.com/attilax/p/15199410.html