代码改变世界

MongoDB的历史和体系架构

2024-08-14 11:27  abce  阅读(7)  评论(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)格式存储,可实现高效存储和检索。