B树(B-tree)数据结构是现代数据库管理系统的基础组件,涵盖了 MySQL、Postgres、MongoDB 和 Dynamo 等多种系统。
工程师利用这种结构构建索引,从而实现高效的数据查询。通过将数据组织成树状层级结构,系统无需扫描整个数据集,即可精准定位特定信息。
PlanetScale 的 Ben Dicken 表示,B树非常适合存储在长期物理磁盘上的大规模数据。这种结构允许开发者将节点大小与磁盘块(如 4k 或 16k 单位)进行对齐。
针对磁盘存储进行优化
与可以按字节寻址的内存(RAM)不同,硬盘和 SSD 是以固定块的形式进行数据读写的。B树充分利用了这一特性,通过调整节点大小使其与硬件块匹配。
这种对齐机制最大限度地减少了查找键值时所需的磁盘访问次数。如果节点大小设置得当,一个仅有三层的树结构理论上可以管理超过 3 亿个键值对。
在 B树中进行搜索,需要从根节点开始,逐层经过中间节点,直到到达目标位置。由于每个节点内都存储着有序的键,系统能够迅速判断并追踪正确的子节点指针。
许多现代数据库采用了更先进的变体——B+树。在 B+树中,所有的实际键值对都仅存在于叶子节点中,而非叶子节点则仅负责存储键和指针。
这种分离设计使得范围扫描更加高效,并简化了导航过程。该结构确保所有叶子节点都处于同一层级,从而保证了数据检索深度的可预测性。