MongoDB的历史和体系架构
2024-08-14 11:27 abce 阅读(74) 评论(0) 编辑 收藏 举报MongoDB 是基于文档的开源数据库,旨在高效地存储大量数据。与在表中存储数据的传统关系型数据库不同,MongoDB 采用灵活的无 schema 设计,在类似 JSON 的文档中存储数据。
历史与版本
历史
MongoDB 由 Dwight Merriman、Eliot Horowitz 和 Kevin P.Ryan 创建的 10Gen 公司(现为 MongoDB 公司)于 2007 年开发。MongoDB 这个名字源于 "humongous"(巨大的),意指其处理海量数据的能力。
版本
·MongoDB 1.0 - 2009年2月
·MongoDB 2.0 - 2011年9月
·MongoDB 3.0 - 2015年3月
·MongoDB 4.0 - 2018年6月
·MongoDB 5.0 - 2021年7月
·MongoDB 6.0 - 2022年7月
·MongoDB 7.3 - 2024年7月
环境
·MongoDB Atlas: 在云中部署的 MongoDB 的全面托管服务。
·MongoDB Enterprise: 基于订购的自我管理版。
·MongoDB 社区版: 免费使用、可获取源代码的版本。
MongoDB与RDBMS的区别
MongoDB |
RDBMS |
非关系型、向文档的数据库 |
关系型数据库 |
适合分层数据存储 |
不适合分层数据存储 |
单个记录存储为文档 |
单个记录存储为表中的行 |
使用 MongoDB 查询语言 (MQL) |
使用结构化查询语言 (SQL) |
动态 schema |
预定义 schema |
以 CAP理论为中心 |
以 ACID 属性为中心 |
不支持外键 |
支持外键 |
不支持 JOIN 操作 |
支持 JOIN 操作 |
对于大型数据集,速度通常比 RDBMS 快 |
对于大型数据集,速度通常比 MongoDB 慢 |
横向扩展 |
纵向扩展 |
无 schema,可灵活处理各种数据类型 |
有schema限制,需要预定义的数据结构 |
支持复制和分片,实现高可用性和可扩展性 |
主要支持复制;分片可能很复杂 |
体系架构
MongoDB 的架构设计旨在实现高性能、高可用性和易扩展性。该架构由以下组件组成:
安全
MongoDB 提供强大的安全功能,包括身份验证、授权、加密、审计和加固。
驱动程序
不同编程语言(Java、Python、.NET、Node.js 等)的客户端库,处理 BSON(二进制 JSON)和应用程序格式之间的数据转换。
查询引擎
解析、计划和优化等阶段处理查询。
MongoDB 数据模型
管理如何执行查询、检索数据以及执行过滤和排序等操作。
存储引擎
MongoDB 支持不同的存储引擎
MMAPv1:基于内存映射文件的传统存储引擎。它为读取操作提供了高性能,但对写入操作有限制,而且不支持压缩。
Wired Tiger: MongoDB 3.0 以后的默认存储引擎。它提供文档级并发、压缩和静态加密功能。与 MMAPv1 相比,它能提供更好的性能和效率。
In Memory: 将数据存储在内存中,而不持久化到磁盘上,从而提供更快的读写操作。适用于不需要数据持久性的场景。
包含的内容
在 MongoDB 中,数据存储在集合和文档中。下面是数据结构的简要概述:
·数据库: 包含集合,集合类似于关系数据库中的表。
·集合: 包含多个文档。
·文档: 由字段(键值对)组成。
数据以 BSON(二进制 JSON)格式存储,可实现高效存储和检索。