MongoDB 简介
关系数据库的不足
那么,企业这样做的动机是什么?为何开发互联网 Web 应用的企业要抛弃 MySQL,而青睐 MongoDB 呢?
-
互联网有很多非结构化数据
关系数据库(如 MySQL)适合存储结构固定不变的数据(结构化数据),也就是二维表。但是,互联网中很多数据并不是结构化的,而是半结构化(如 XML 和 JSON)或非结构化数据(如文档、邮件、图片、音频、视频等),这些数据很难设计关系数据库表来存储。
-
互联网要求高性能、易于扩展
关系数据库表超过一定的容量(如 10w 行记录),读写性能就会急剧下降,而互联网中每天都将产生海量的数据,这对关系数据库而言很容易出现性能瓶颈,而其关系数据库难以通过集群增加主机扩展以提升性能,维护困难
MongoDB 是为快速开发互联网 Web 应用而专门设计的一种 NoSQL 数据库
什么是 MongoDB
MongoDB 是一种通用的、基于文档的分布式 NoSQL 数据库 ,这种数据库比关系型数据库更 易于使用、易于扩展、更高的性能(由C++语言编写)
MongoDB 与MySQL对比
MySQL | MongoDB | 说明 |
---|---|---|
database | database | 数据库 |
table | collection(集合) | 表/集合 |
row | document(文档) | 数据记录 |
primary key | primary key | 主键 |
fields | fields | 字段 |
index | index | 索引 |
table join | 无 | 表的关系 |
-
不再有关系数据库表(table)的概念,取而代之的是集合(collection)
-
不再有关系数据库行(row)的概念,取而代之是更为灵活的文档(document)
-
一个文档(document)由 键(Key) 和 值( Value)组成,且没有固定的类型和大小
MongoDB 主要功能特征
特点:高性能、易部署、易使用,存储数据非常方便
-
面向集合存储,易存储对象类型的数据
-
模式自由
-
支持动态查询
-
支持完全索引,包含内部对象
-
支持查询
-
支持主从复制和故障恢复
-
使用高效的二进制数据存储,包括大型对象(如视频等)
-
支持集群
-
支持RUBY,PYTHON,JAVA,C++,PHP等多种语言
-
支持 BSON 文件存储格式(一种JSON的扩展)
-
可通过网络访问
MongoDB 的设计采用横向扩展,基于文档的数据模型使它能很容易地在多台服务器之间进行数据分割。如果一个集群需要更大的存储容量,只需要向集群添加新服务器,MongoDB 就会自动将现有数据向新服务器传送。
MongoDB 就是为大数据而生
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现