MongoDB简介
数据库管理系统
数据的定义:文字、图像、地理位置信息(坐标、经纬度)等。
数据库管理系统的定义:建立、存取和管理数据,保证数据安全和完整性的软件。
常见的数据库管理系统:
- 关系型:MySQL、Oracle、SQL Server、Db2等
- 非关系型:MongoDB、Redis、HBase等
NOSQL简介
NoSQL=Not Only SQL,支持类似SQL的功能, 与Relational Database相辅相成。
其适用于性能较高,不使用SQL意味着没有结构化的存储要求(SQL为结构化的查询语句),没有约束之后架构更加灵活。
NoSQL数据库四大家族
- 列存储:Hbase
- 键值(Key-Value)存储:Redis
- 图像存储:Neo4J
- 文档存储:MongoDB
NoSQL的优势
高可扩展性、分布式计算、没有复杂的关系、低成本、架构灵活、半结构化数据。
MongoDB
MongoDB特性
MongoDB与RDBMS的最大区别:没有固定的行列组织数据结构,即无需将不同类的数据放入多张表中建立对应关系并分别存储其数据,而是直接放入一份文档进行存储。
数据存储格式
JSON
MongoDB使用JSON(JavaScript ObjectNotation)文档存储记录
JSON数据库语句容易被解析
Web应用大量使用
NAME-VALUE配对
BSON
二进制的JSON,JSON文档的二进制编码存储格式
BSON有JSON没有的Date和BinData
MongoDB中document以BSON形式存放
{
_id: ObjectID("1"),
username: “Silence”,
regDate: “10-10-2015”,
scores: {
math: "80",
english: "200"
}
}
数据逻辑结构
文档(document)、集合(collection)、数据库(database)
MongoDB与RDBMS数据结构逻辑对比:
MongoDB |
RDBMS |
集合Collection |
表Table |
文档Document |
行Row |
数据库Database |
数据库Database |
索引值Index |
索引值Index |
嵌入式文件Embedded Document |
合并Join |
引用Reference |
外键Foreign Key |
分片Shard |
分区Partition |
MongoDB适用场景
- 网站数据:MongoDB 非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性
- 缓存:由于性能很高,MongoDB 也适合作为信息基础设施的缓存层。在系统重启之后,由 MongoDB 搭建的持久化缓存层可以避免下层的数据源过载
- 大尺寸,低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储
- 高伸缩性的场景:MongoDB 非常适合由数十或数百台服务器组成的数据库。MongoDB的路线图中已经包含对 MapReduce 引擎的内置支持
- 用于对象及 JSON 数据的存储:MongoDB 的 BSON 数据格式非常适合文档化格式的存储及查询
我的数据量是有亿万级或者需要不断扩容
需要2000-3000以上的读写每秒
新应用,需求会变,数据模型无法确定
我需要整合多个外部数据源
我的系统需要99.999%高可用
我的系统需要大量的地理位置查询
我的系统需要提供最小的latency
我要管理的主要数据对象 <10
以上条件满足一个可以考虑MongoDB,满足两个选择MongoDB不会后悔。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!