paip.索引的种类以及实现attilax 总结
作者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数量,也能可以大幅度的提升性能..2个cpu核可以大概提升2倍,4个核4倍,以此类推..
根据文本的类型,以及特点,可以做Btree索引/HASH索引,有时候可能也需要做倒排索引
使用TREEMAP, HASHMAP等等结构 先扫描文件,然后序列化,保存为索引文件...
6. 索引文件的合并问题
当索引文件越来越大时候,就需要分布式存储在多个增量索引文件上..到时合并或者不合并.....
或者使用2进制方式增量存储..