我对B树非常熟悉,主要是必须使数据库充满电力,空调和硬盘空间。我与一个双(doubl [ie,ey]?)链接列表相关联。
今天,午餐时的一位开发人员提到了R树。
我跳上维基百科,开始阅读。这听起来像高大的B树。不幸的是,由于缺乏深厚的数学背景,很难理解我的一些同事在谈论什么。
我希望有人能阐明B树和R树之间的一些区别。无论如何,我可能最终都会问这些家伙,但是不能保证他们会回答我的问题。他们很有可能会开始对上帝God不休,知道什么。。。
我对B树非常熟悉,主要是必须使数据库充满电力,空调和硬盘空间。我与一个双(doubl [ie,ey]?)链接列表相关联。
今天,午餐时的一位开发人员提到了R树。
我跳上维基百科,开始阅读。这听起来像高大的B树。不幸的是,由于缺乏深厚的数学背景,很难理解我的一些同事在谈论什么。
我希望有人能阐明B树和R树之间的一些区别。无论如何,我可能最终都会问这些家伙,但是不能保证他们会回答我的问题。他们很有可能会开始对上帝God不休,知道什么。。。
Answers:
R树可以被认为是b树的一般化。b树在其包含的键的“有界范围”内提供O(log n)访问,而R树在其包含的键的“ K维区域”内提供O(log n)访问。
如果您想将邮政编码映射到县名,则可以使用B树,因为您可能会问:“邮政编码在60000到61000之间的所有县都在哪里?” 但是,B树不适合将GPS坐标映射到县名,以进行诸如“芝加哥100英里内的所有县都在哪个县?”之类的查询,因为它仅在一个维度上订购键。R-Tree根据重叠的边界框将其键分解,因此,当您需要在多个维度上进行查询时,这是一种自然的存储键的方法。
只要您忽略列表的构造方式(具体而言,如何添加和删除元素以及如何重新平衡节点),就可以将大多数树结构简化为某种形式的链接列表。本质上是将一个数据结构与另一个数据结构区分开的插入/删除/检索算法。
R树中的节点通常包含一个边界框,使您可以有效地索引位置,如果要搜索“靠近”特定位置的记录,可能会需要。B树中的元素具有更简单的排序。您可以直接比较某事物是否大于或等于另一个元素。在R树中,每个条目的目的是确定边界框中包含哪些元素。
B树可让您有效地搜索辅助存储器(如硬盘)中的可订购项,R树可让您有效地搜索“在”特定点或边界框“附近”的元素。在辅助存储器中。