B - 树

发布时间 2024-01-13 09:49:50作者: chuangzhou

B树历史

B-树是一种自平衡的树形数据结构,它可以存储大量的数据并且支持高效的查找、插入和删除操作。B树-最初是由RudoIf Bayer 和 Edward McCreight 在1972年提出的,用于解决磁盘存储器上的 数据管理问题。B-树的设计目标是减少磁盘I/O 操作的次数,从而提高数据访问的效率。

B-树的命名中"B"代表 "Balance",即平衡的意思,B-树的平衡性是指树的所有叶子节点都在同一层级上,这样可以保证每个节点的访问时间相同。B-树的平衡性是通过在节点中存储多个关键词来实现的,这些关键词可以用来分割节点中的数据。B树的历史可以追溯到1962年,当时RudoIf Bayer 在IBM工作,他的工作是研究如何在磁带上存储数据。他发现,磁带的读写非常慢,而且每次读写都需要
花费很长时间。为了解决这个问题,他设计了一种树形数据结构,可以将数据存储在磁带上,并且可以高效地访问数据。

后来,B树被Edward McCreight 改进,他将B-树的设计应用到了磁盘存储器上。他发现,B-树可以有效地减少磁盘I/O操作的次数,从而提高数据访问的效率。B-树的设计思想被广泛应用于数据库系统中,成为了数据库系统中最重要的数据

100万数据用AVL树来存储,树高是多少? - 20

import math

def avl_height(data: int):
    return math.ceil(math.log2(data))

print(avl_height(1000000)) # 输出20

100数据用B-树来存储,树高是多少? - 3

树高代表着查找次数,如果磁盘数据用AVL树来存储,读写次数多而且磁盘的读写速度慢,而使用B-树只用读写3次

因此:

  • AVL树:存储内存数据
  • B-树:存储磁盘数据