常见的数据检索算法有哪些?数据库都采用什么样的检索方式?如何提高检索的效率

常见的数据检索算法有哪些?数据库都采用什么样的检索方式?如何提高检索的效率,第1张

您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!信息检索方法包括:普通法、追溯法和分段法。1、普通法是利用书目、文摘、索引等检索工具进行文献资料查找的方法。运用这种方法的关键在于熟悉各种检索工具的性质、特点和查找过程,从不同角度查找。普通法又可分为顺检法和倒检法。2、追溯法是利用已有文献所附的参考文献不断追踪查找的方法,在没有检索工具或检索工具不全时,此法可获得针对性很强的资料,查准率较高,查全率较差。3、分段法是追溯法和普通法的综合,它将两种方法分期、分段交替使用,直至查到所需资料为止。扩展资料检索原因信息检索是获取知识的捷径美国普林斯顿大学物理系一个年轻大学生名叫约瀚·菲利普,在图书馆里借阅有关公开资料,仅用四个月时间,就画出一张制造原子d的设计图。他设计的原子d,体积小(棒球大小)、重量轻(7.5公斤)、威力大(相当广岛原子d3/4的威力),造价低(当时仅需两千美元),致使一些国家(法国、巴基斯坦等)纷纷致函美国大使馆,争相购买他的设计拷贝。二十世纪七十年代,美国核专家泰勒收到一份题为《制造核d的方法》的报告,他被报告精湛的技术设计所吸引,惊叹地说:“至今我看到的报告中,它是最详细、最全面的一份。”但使他更为惊异的是,这份报告竟出于哈佛大学经济专业的青年学生之手,而这个四百多页的技术报告的全部信息来源又都是从图书馆那些极为平常的、完全公开的图书资料中所获得的。参考资料来源:百度百科——信息检索,非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!

B+、B- Tree(mysql,oracle,mongodb)

主要用在关系数据库的索引中,如oracle,mysql innodb;mongodb中的索引也是B-树实现的;还有HBase中HFile中的DataBlock的索引等等。

动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree),红黑树(Red-Black Tree ),B-tree/B+-tree/ B*-tree (B~Tree)。前三者是典型的二叉查找树结构,其查找的时间复杂度O(log2N)与树的深度相关,那么降低树的深度自然会提高查找效率。

但是咱们有面对这样一个实际问题:就是大规模数据存储中,实现索引查询这样一个实际背景下,树节点存储的元素数量是有限的(如果元素数量非常多的话,查找就退化成节点内部的线性查找了),这样导致二叉查找树结构由于树的深度过大而造成磁盘I/O读写过于频繁,进而导致查询效率低下,那么如何减少树的深度(当然是不能减少查询的数据量),一个基本的想法就是:采用多叉树结构(由于树节点元素数量是有限的,自然该节点的子树数量也就是有限的)。

也就是说,因为磁盘的 *** 作费时费资源,如果过于频繁的多次查找势必效率低下。那么如何提高效率,即如何避免磁盘过于频繁的多次查找呢?根据磁盘查找存取的次数往往由树的高度所决定,所以,只要我们通过某种较好的树结构减少树的结构尽量减少树的高度,那么是不是便能有效减少磁盘查找存取的次数呢?那这种有效的树结构是一种怎样的树呢?

这样我们就提出了一个新的查找树结构——多路查找树。根据平衡二叉树的启发,自然就想到平衡多路查找树结构,也就是B~tree,即B树结构(后面,我们将看到,B树的各种 *** 作能使B树保持较低的高度,从而达到有效避免磁盘过于频繁的查找存取 *** 作,从而有效提高查找效率)。

Hash表+桶(redis)

mysql中的adaptive hash index,redis中的数据存储实现都是采用hash,可以高效的进行数据的查询。

哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

哈希表的做法其实很简单,就是把Key通过一个固定的算法函数既所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将value存储在以该数字为下标的数组空间里。

而当使用哈希表进行查询的时候,就是再次使用哈希函数将key转换为对应的数组下标,并定位到该空间获取value,如此一来,就可以充分利用到数组的定位性能进行数据定位

数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。综合两者特性,设计一种寻址容易,插入删除也容易的数据结构,如拉链法实现的哈希表。

Booleam Filter(HBase)

HBase中的rowkey设置建立Booleam Filter映射,用于快速判断rowkey是否在一个HFile中。在分布式数据库中用的比较多。

基于BitMap的存储结构,采用的是哈希函数的方法,将一个元素映射到一个 m 长度的阵列上的一个点,当这个点是 1 时,那么这个元素在集合内,反之则不在集合内。这个方法的缺点就是当检测的元素量很多时候可能有冲突,解决方法就是使用 k 个哈希 函数对应 k 个点,如果所有点都是 1 的话,那么元素在集合内,如果有 0 的话,元素则不再集合内。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6689159.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存