写点什么

为什么 MongoDB 使用 B 树 (一)

  • 2019-12-26
  • 本文字数:1182 字

    阅读完需:约 4 分钟

为什么 MongoDB 使用 B 树 (一)

为什么这么设计(Why’s THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点、对具体实现造成的影响。如果你有想要了解的问题,可以在文章下面留言。


我们在这一系列前面的文章曾经分析过 为什么 MySQL 使用 B+ 树,有读者在文章下面留言,希望能出一个为什么 MongoDB 使用 B 树的对比文章,这是一个比较好的问题,MySQL 和 MongoDB 两种不同类型的数据库使用了相似却不同的数据结构,为什么 MySQL 选择使用 B+ 树而 MongoDB 使用 B 树呢?

概述

MongoDB 是一个通用的、面向文档的分布式数据库1,这是官方对 MongoDB 介绍。区别于传统的关系型数据库 MySQL、Oracle 和 SQL Server,MongoDB 最重要的一个特点就是『面向文档』,由于数据存储方式的不同,对外提供的接口不再是被大家熟知的 SQL,所以被划分成了 NoSQL,NoSQL 是相对 SQL 而言的,很多我们耳熟能详的存储系统都被划分成了 NoSQL,例如:Redis、DynamoDB2 和 Elasticsearch 等。



NoSQL 经常被理解成没有 SQL(Non-SQL)或者非关系型(Non-Relational)3,不过也有人将其理解成不只是 SQL(Not Only SQL)4,深挖这个词的含义和起源可能没有太多意义,这种二次解读很多时候都是为营销服务的,我们只需要知道 MongoDB 对数据的存储方式与传统的关系型数据库完全不同。


MongoDB 的架构与 MySQL 非常类似,它们底层都使用了可插拔的存储引擎以满足用户的不同需求,用户可以根据数据特征选择不同的存储引擎,最新版本的 MongoDB 使用了 WiredTiger 作为默认的存储引擎5



作为 MongoDB 默认的存储引擎,WiredTiger 使用 B 树作为索引底层的数据结构,但是除了 B 树之外,它还支持 LSM 树作为可选的底层存储结构,LSM 树的全称是 Log-structured merge-tree,你可以在 MongoDB 中使用如下所示的命令创建一个基于 LSM 树的集合(Collection)6:


JavaScript


db.createCollection(    "posts",    { storageEngine: { wiredTiger: {configString: "type=lsm"}}})
复制代码


我们在这篇文章中不仅会介绍 MongoDB 的默认存储引擎 WiredTiger 为什么选择使用 B 树而不是 B+ 树,还会对 B 树和 LSM 树之间的性能和应用场景进行比较,帮助各位读者更全面地理解今天的问题。

设计

既然要比较两个不同数据结构与 B 树的差别,那么在这里我们将分两个小节分别介绍 B+ 树和 LSM 树为什么没有成为 WiredTiger 默认的数据结构:


  • 作为非关系型的数据库,MongoDB 对于遍历数据的需求没有关系型数据库那么强,它追求的是读写单个记录的性能;

  • 大多数的数据库面对的都是读多写少的场景,B 树与 LSM 树在该场景下有更大的优势;


上述的两个场景都是 MongoDB 需要面对和解决的,所以我们会在这两个常见场景下对不同的数据结构进行比较。


本文转载自 Draveness 技术博客。


原文链接:https://draveness.me/whys-the-design-mongodb-b-tree


2019-12-26 17:281388

评论

发布
暂无评论
发现更多内容

基于 Web 的网上物流系统:对接快递鸟开放平台的全链路解决方案

快递鸟

从 Oracle 到 TiDB,通过ETL工具,高效实现数据拉通

谷云科技RestCloud

oracle 数据同步 ETL TiDB 数据集成平台

在LXC容器中安装Bitwarden密码管理器的完整指南

qife122

Docker Bitwarden

AI训练必看!2025年十大最佳数据采集代理推荐

不觉心动

爬虫 数据采集 AI+数据

测试了多款AI智能体,哪款“自动干活”

Techinsight

TDengine IDMP 上线监控,只需几分钟:5 个场景实证

TDengine

人工智能 大数据 tdengine idmp

初识 ASH —— 打开数据库的「月光宝盒」

老纪的技术唠嗑局

运维 oceanbase

什么是安全密钥,它是如何工作的

运维有小邓

mfa 多因素身份验证

特斯拉、智元、宇树、英伟达等,产业链上市公司8月速递

机器人头条

人形机器人 具身智能 宇树科技 智元机器人 特斯拉optimus

[VLDB 2025]阿里云大数据AI平台多篇论文被收录

阿里云大数据AI技术

flink 阿里云 VLDB 多模态慢查询

选型:五大RPA软件对比

Techinsight

使用FIDO2实现LUKS磁盘加密的技术解析

qife122

LUKS 磁盘加密

客户实测第一!智象一体化运维平台脱颖而出

智象科技

ITSM CMDB 智能运维 一体化运维

智能运维新范式:自动化如何提升企业IT效率

智象科技

自动化 智能运维 告警系统 告警规则 一体化智能运维

澳鹏MediGo医疗大模型数据开发平台:解码智慧医疗的数据基因

澳鹏Appen

医疗AI 智慧医疗 医疗大数据

Coze教程 第1章:Coze平台概述与测试应用前景

测试人

通义灵码+支付 MCP:30 分钟实现创作打赏智能体

阿里巴巴云原生

阿里云 云原生 通义灵码

通义灵码+支付 MCP:30 分钟实现创作打赏智能体

阿里云云效

阿里云 云原生 通义灵码

前端热更新驱动下的中国互联网开发范式重构

xuyinyin

实测多家AI智能体感想,哪款能够自动执行任务?

Techinsight

AI 云驱动产业智能化跃迁

Baidu AICLOUD

AI 昆仑芯 百度百舸 具身智能

一体化运维平台自动化模块:3 大场景解放运维双手

智象科技

自动化 智能运维 自动化运维 一体化智能运维平台

CMDB配置漂移治理方案

智象科技

自动化 CMDB IPMI SNMP协议 自动采集

快速看懂财务机器人:案例+趋势,财务人该如何应对?

Techinsight

企业如何选择RPA?一文了解RPA工具

Techinsight

零代码改造!LoongSuite AI 采集套件观测实战

阿里巴巴云原生

阿里云 云原生 LoongSuite

CMDB升级!多插件协同,深度发现资源

智象科技

CMDB 一体化平台 一体化智能运维 深度发现 发现资源

如何让后端工程师愿意写文档?API管理的好处

谷云科技RestCloud

API 集成平台 API文档 API管理 ipaas

为什么 MongoDB 使用 B 树 (一)_语言 & 开发_Draveness_InfoQ精选文章