【学习笔记】什么是MongoDB

文章目录

MongoDB 简介

学习一个东西就跟认识一个人一样,下面有情MongoDB来做个自我介绍

大家好,俺是MongoDB,是一个开源 、高性能 、无模式的文档型 数据库,当初的设计俺就是用于简化开发 和方便扩展。

俺是NoSQL数据库产品中的一种,是最像关系型数据库(MySQL)的非关系型数据库。

俺支持的数据结构非常松散,是一种类似于JSON 的格式叫BSON,所以俺既可以存储比较复杂的数据类型,又相当的灵活。

俺的记录是一个文档,它是一个由字段 和值对(field:value)组成的数据结构。

俺的文档类似于JSON对象,即一个文档认为就是一个对象。字段的数据类型是字符型,俺的值除了使用基本的一些类型外,还可以包括其他文档、普通数组和文档数组。

体系结构

听完MongoDB的自我介绍,我稍微对他有了一定的了解。为了更加方便我们的理解,有请出我们的老成员Mysql

Mysql和MongoDB的对比:

Mysql中有多个数据库,数据库中包含多个数据表,数据表中包含多个行数据。

而MongoDB中同样有多个数据库,但是不同的是,数据库中包含的是集合 ,集合中包含多个文档。

我们知道mysql中有字段这一概念,MongoDB与之不同的是域这一概念。

区别最大的一点莫过于表连接了,mysql中支持table joins来实现表连接,MongoDB 没有像关系型数据库那样直接的表连接概念。

MongoDB是通过嵌入式文档来代替多表连接。

数据模型

MongoDB的最小存储单位就是文档 (document)。文档(document)对应于关系型数据库的行。数据在MongoDB中以BSON (Binary-JSON)文档的格式存储在磁盘上。

BSON(Binary Serialized Document Format)是一种类json的一种二进制形式 的存储格式,简称BinaryJSON.BSON和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。

MongoDB 的特点

那么讲了这么多了,MongoDB有什么特点吗?

MongoDB主要有如下特点:

  1. 高性能 :
    MongoDB提供高性能的数据持久性。特别是对嵌入式数据模型的支持减少了数据库系统上的I/O活动。索引支持更快的查询,并且可以包含来自嵌入式文档和数组的键,(文本索引解决搜索的需求、TTL索引解决历史数据自动过期的需求、地理位置索引可用于构建各种 020 应用)mmapv1、wiredtiger、mongorocks(rocksdb)、in·memory等多引擎支持满足各种场景需求Gridfs解决文件存储的需求。
  2. 高可用性 :
    MongoDB的复制工具称为副本集(replicaset),它可提供自动故障转移和数据冗余。
  3. 高扩展性 :
    MongoDB提供了水平可扩展性作为其核心功能的一部分。分片将数据分布在一组集群的机器上。(海量数据存储,服务能力水平扩展)从3.4开始,MongoDB支持基于片键创建数据区域。在一个平衡的集群中,MongoDB将一个区域所覆盖的读写只定向到该区域内的那些片。
  4. 丰富的查询支持 :
    MongoDB支持丰富的查询语言,支持读和写操作(CRUD),比如数据聚合、文本搜索和地理空间查询等。
  5. 其他特点:如无模式(动态模式)、灵活的文档模型
相关推荐
敬往事一杯酒哈6 小时前
海康 AGV 导航读码器学习
学习
qq_284274058 小时前
机械原理笔记:平面机构自由度计算(复合铰链、局部自由度、虚约束)与四杆机构入门(含考点)
笔记·学习·平面·自动化·制造
qq_284274059 小时前
数控铣床与加工中心笔记:铣刀与刀柄系统、G54试切对刀、镜像加工指令、孔加工工艺(钻扩铰镗)与固定循环G73/G83/G81/G76/G87/G84
笔记·学习·自动化·制造
Titan202410 小时前
MySQL访问个人学习笔记
笔记·学习·mysql
小雪崩11 小时前
嵌入式学习 day64:字符设备驱动
学习
深圳老胡11 小时前
STM32CubeMX 生成 CMake 工程,用 VSCode 编译与调试的完整流程
笔记·stm32·单片机·代码规范
个 人 练 习 生11 小时前
C++ string 类模拟实现:从底层理解字符串(上)
开发语言·c++·经验分享·学习·程序人生
坤坤子吖11 小时前
C++智能指针:RAII、shared_ptr与内存泄漏
开发语言·c++·笔记·学习
乐橙开放平台12 小时前
智慧连锁客流检测和离岗检测怎么对接
大数据·人工智能·笔记·物联网·自动化·音视频·智能家居
零基础12312 小时前
FinalShell 使用教程:从安装到高效运维
运维·经验分享·笔记·finalshell