首页 > 数据库 >【学习日志】MongoDB为什么选择B树,而MySQL选择B+树实现索引

【学习日志】MongoDB为什么选择B树,而MySQL选择B+树实现索引

时间:2023-01-13 10:56:05浏览次数:50  
标签:MongoDB 查询 MySQL 日志 type 节点

先说B树和B+树的区别

B树:非叶子节点也存储数据

B+树:只有叶子节点存储数据,且所有叶子节点通过指针相连接。

为什么MongoDB选择B树而,MySQL选择B+树呢?两种数据结构的区别摆在上面了,那就看MongoDB和MySQL的需求

首先:

MongoDB属于文档型存储的NoSQL,意味着它并不是关系型数据库,既然如此,基本不会出现批量连续数据的查询,那么B+树的叶子节点通过指针相连接对于MongoDB来说,就没多少价值了。

再看看B树的优缺点(相对于B+树):

优点:数据直接存在于非叶子节点上,最近查询时间复杂度为O(1)

缺点:叶子节点不通过指针连接,不适合范围查询

到这里,基本已经清楚了为什么MongoDB选择B树而不是B+树了。

解释一下为什么文档型NoSQL为什么基本不会出现连续数据查询:

关系型数据库的数据结构

id type
1 a
2 a
3 b

 

 

 

 

如果通过type构建索引,查询是:

SELECT id FROM t1 WHERE type='a';

是不是查找一段连续的数据呢?或者包含join的查询同理

那么MongoDB就不会有这种查询吗?

不是不会有这种查询,而是一般不会这样设计

MongoDB中的设计

{
    "_id":"1",
    "type":"a",
    "id":[
        1,
        2,
        3
    ]
}

看到了吗?用type建立索引,查询一条数据就拿到想要的结果了。

引发思考(私货):

MongoDB很多情况下用来存储日志,如果需要将日志分类存储,且对查询速度要求较高,可以通过物化视图,将同类的日志内容合并,提高查询速度。

标签:MongoDB,查询,MySQL,日志,type,节点
From: https://www.cnblogs.com/maerpao/p/17048880.html

相关文章

  • python-备份mysql数据库
    python-备份mysql数据库1.python-备份mysql数据库源码安装python3环境下载版本:https://www.python.org/downloads/source/wgethttps://www.python.org/ftp/pyth......
  • Mysql索引失效场景
    Mysql索引失效场景 序言 众所周知在Mysql中,通过使用索引的方式可以加快查询速度,从而避免全文搜索;而索引本身就像图书馆中所有书籍目录,通过查询关键字就能快速找......
  • python-pymysql-基本使用
    python-pymysql-基本使用1.pymysql-基本使用创建表[root@pythontmp]#mysql-h127.0.0.1-utest-p'Test@963852'WelcometotheMariaDBmonitor.Comma......
  • python-pymysql安装和数据库安装
    python-pymysql安装和数据库安装1.pymysql安装安装python连接数据库pymysql模块[root@python~]#pip3installPyMySQlLookinginindexes:http://mirror......
  • python-pymysql模块介绍
    python-pymysql模块介绍1.pymysql模块介绍pymysql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。但目前pymysql支持python3.x而后者不支持3.x版本。pymysql......
  • python pymysql-增删改查
    pymysql-增删改查1.pymysql-增删改查#!/usr/bin/envpython3#_*_coding:utf-8_*_#Author:shichao#File:.pyimportpymysqlconn=pymysql.connect(host='1......
  • python pymysql-参数使用
    pymysql-参数使用1.pymysql-参数使用connect()函数常用参数:方法描述host数据库主机地址user数据库账户passwd账户密码db使用的数据库port......
  • 记录实体操作日志--通过DbContext单次批量记录本次数据库操作中所有实体的更新情况
    一、先看需求需求就是在我们的业务中存在查看修改日志的情况,比如:甲修改了乙的身份证号,丙想知道是谁修改了乙的信息,修改了哪些信息。二、常规方案在修改乙的信息的方法中......
  • MongoDB 数据类型
    MongoDB数据类型MongoDB将json格式的字符串转化为bson格式的数据进行存储,目的是节省存储空间,但同时不会改变json的样式。BSONisabinaryserializationformat......
  • 基于AD Event日志识别SID History后门
    01、简介每个用户都有一个关联的安全标识符(SID),SIDHistory的作用是在域迁移过程中保持域用户的访问权限,即如果迁移后用户的SID改变了,系统会将其原来的SID添加到迁移后用户......