树与存储

标签: 未分类 | 发表时间:2012-07-31 13:46 | 作者:shiming
出处:http://rdc.taobao.com/team/jm
二叉树:

一个根节点,每个节点下挂着最多2个子节点。、

概念:

度:结点的分支数,二叉树度为2。

深度:树的层次。

二叉排序树:

二叉树的基础上,每个节点上都有一个数字,节点上的数字都比右节点上的大。

应用场景:

基于内存的排序数据结构,写入时将数据写入到对应的位置。数据可能会出现倾斜,可以想到数字写入顺序如果不是50-20-60-18-55,而是18-20-50-55-60,那么二叉树就会退变为链表。

B-树:

B-树每个节点上包含着数据和指针,每个指针指向其一个子节点的位置,并且数据的个数为指针的2d-1个。这里的d是指针的个数,同时也是树的“度”。

B-树的查找需要一次对每个节点进行二分查找,直至找到或返回null。通常,可以引入布朗过滤器等方式加速查找。

B-树的写入、删除时要进行分裂、合并、转移等操作,越是非顺序的插入就越容易碰到这些高性能消耗的操作。

应用场景:

一般B-树常常作为磁盘的查找的数据结构使用。

一般磁盘为了减少寻道时间,往往会进行预读,一次读入1个或多个page的数据。我们只要将B-树的每个节点控制在一个page大小,就可以保证,磁盘一次的查找只需要一次IO。一个page大小一般在4k,可以存储不少的数据,假设一个节点存储数据量为100,深度为3的B-树,即可保存100w数据量(100*100*100),而100的数据一般用不了4k的存储空间。

当然,这里节点中存储的东西主要包括data和指针,指针大小是固定的,而数据有大有小。只要控制好每个数据块的大小,就可以提高B-树的性能。

另外,一般情况下非叶子节点占用空间一般较小,上面的例子中,非叶子节点数据量只有1w,完全可以缓存至内存中,这点也是在实际数据库实现中常常使用到的优化。

B+树:

B+树完全是对B-树的工程级优化,非叶子节点不在存储data,只有根节点才存储数据。最大程度的加大了单个page中指针的个数,增加数的度。减少了树的层次。

另外相比较于B-树,其key的个数变为指针个数的2d个。

应用场景:

实际在数据库系统中使用时,往往每个叶子节点都会存储一个其相邻节点的一个指针,用来在范围查找时有更好的性能。

相关 [未分类 ] 推荐:

网络图谱论“知乎”

- oxygen - 采铜学心录
引言:写这篇文章的初衷是为了让自己“读懂”知乎. 知乎是一个颇有吸引力的产品,甚至一度转移了我对微博的兴趣,由此我更想搞清楚知乎背后的逻辑是什么,它是如何运作的. 当然谈知乎很可能就是在谈Quora,可惜我还没用过Quora所以没有发言权,所以只能就知乎作一番分析. 一论:知乎是一种混合网络,由个人结点和知识结点两种结点构成.

Bigtable:一个分布式的结构化数据存储系统[中文版]

- Bian Jiang - Alex && OpenCould
Bigtable:一个分布式的结构化数据存储系统. Bigtable是一个分布式的结构化数据存储系统,它被设计用来处理海量数据:通常是分布在数千台普通服务器上的PB级的数据. Google的很多项目使用Bigtable存储数据,包括Web索引、Google Earth、Google Finance.

我是个多么喜欢顺竿爬的人啊

- 我爱小老虎 - 不许联想
今天,一个朋友的SMN被盗了,晚上在跟一个朋友聊天的时候,另一个朋友打电话给我,说安东尼奥尼的妹妹安安尼奥尼在MSN跟他要钱,我一听就知道骗子盗用密码.

Facebook’s architecture(转)

- Adam - 淘宝JAVA中间件团队博客
Facebook’s HipHop [1] then converts it to C++ and compiles it using g++, thus providing a high performance templating and Web logic execution layer. Some of these services are implemented in PHP, C++ or Java depending on service requirements (some other languages are probably used…).

求答案

- baomian - 不许联想
好多人跑过来质问我,我该不该因为写了《股沟挖了一条沟》感到惭愧,尤其是百度侵权之后,又有人拿出来说事儿. 现在我需要证据证明——我错在哪里,股沟正确在哪里. 欢迎留言,多长都可以(不要贴链接,后台会自动屏蔽),如果前面有人贴过了,不要重复. 也可以发邮件到我的邮箱,邮箱你可以通过股沟搜索到.

被称之为“神作”的:《红领巾》

- belltoy - 横戈.home
  我觉得从老师到每个学生,演的简直出神入化,这是一部向我们伟大的社会主义祖国敬礼的神作.

Web不会死,Internet倒是会永生

- cgeek - Beta Show
最近美国连线杂志主编Chris Anderson的《Web已死,Internet永生》这篇文章着实引发了很多大虾的思考,有很多人站在了对立面,并不支持Chris的“论调”. 我看完后倒是没有那么强烈的反应,毕竟,媒体习惯“标题党”,喜欢用极端的言论吸引眼球,我想在接下来的5到10年里,Chris Anderson也不会抛弃他认为已经死掉的Web(浏览器),100%拥抱Apps....

是否记得,曾经的梦想

- Leeall - 横戈.home
  最近看到一些事,想起了一些人,遂想刻下一个痕迹,写篇长的blog,以为记.   十一年前的时候,和一群在网上最早认识的朋友泡在一个论坛,其中有个ID叫“革命战士李建国”,我们叫他小李.   “那时候你家里的亲戚朋友都反对你复读,但你还是坚持了自己的选择,在他们看来,工大还不如西邮,然而我知道你考上工大之后并没有气馁也没有自暴自弃,而是暑假还去读新东方去体验一下不同的感受...有些话一直想见面对你说:无论那些嘲笑,惋惜或者同情,其实他们都没有资格——你的人生是你自己的,听从自己内心,选择自己的人生,是否值得在于你自己而不在于其他的任何人.

[转贴]您住在逻辑大厦的哪一层?

- Leeall - 不许联想
楼主:刚才看见一个东北男人打老婆,鄙视. 2楼:对啊,你凭什么说他是东北人. 3楼:我本来对楼主挺有好感的,没想到他还搞地域歧视,失望ing,取消关注. 4楼:楼主,你偏激了,东北确实有男人打老婆,可是也有不打老婆的好男人. 有本事以后别到东北,否则我见你一次打你一次. 7楼:我女朋友刚看了这条,说要跟我分手,唉.

一条名叫三文的鱼

- leeking001 - 不许联想
冰激凌三文鱼 这是我挪威之行的最后一篇,关于三文鱼. 我是个三文鱼爱好者,都是吃日本料理养成的不良嗜好. 所谓不良嗜好,就是在中国吃三文鱼成本高,这东西不能连续吃,会家破人.