数据结构---B树

0.简介

B树对我来说,是一个比较陌生的数据结构,正是因为陌生,越是陌生就越抵触,索性来研究一下,其中能学到的不仅仅是B树,还会有别是收获。

1.磁盘

说到B树,基本所有资料都会介绍说其与磁盘上的读写和查找数据有关,所以B树有了这么个独特的限制,如果说平衡二叉树是抽象层面的思想,B树已经混入一些实际应用的限制了,这个限制主要在于B树的结点数据结构。磁盘和内存区别很大,但是本质差不多,都是存数据,由于磁盘读写都很慢,所以磁盘每次读取的单元块就比较大,这样减少连续数据反复读写磁盘,早期的读写单位是512字节,现在我不确定是多少,有些可能会更大,但是通常都是512字节为一个读写单位,这也就是一个扇区的大小,同样,内存也有类似的地方,例如数据数据总线数目就限制了一次读写的数据量,和磁盘一次读写一个扇区的效果是类似的。

磁盘在没有存储数据的时候,或者说刚买回来的时候,就像是一张白纸,纸上写什么语言,符号,怎么去读纸上的字,都是后来人为决定的,这样就产生了许多不同的文件系统,或者叫磁盘格式,例如FAT系列,NTFS,EXT系列,HPFS等。

前面我们研究过的平衡二叉树,是为了能快速查找数据而诞生的,B树也是如此,B树更适合用在磁盘数据组织。因为B树可以让树高很低,B树每向下走一层,就要进行一次磁盘读写,所以层数越低越好,当然有人非要较真也没办法。相比平衡二叉树对于同样的数据量,层数要多一些,呈现瘦高的形状,n叉树的层数就会少很多,呈现矮胖的形状。在磁盘中查询数据到时候,不能将磁盘所有数据都加载到内存去查找,需要几次读写来查找,读写次数越少,查找速度越快。

到这里,我们还没有见到B树的样子,目前就先认为是一种多叉树平衡树吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章