作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。
MySQL
PostgreSQL
Redis
Etcd
这个是我们讲的第三个数据库:MongoDB,他和前面讲解的MySQL和PostgreSQL最大的区别是他不再是关系型数据库,一般叫NoSQL数据库或者文档数据库。
MongoDB 是一个开源的、面向文档的 NoSQL 数据库。它由 C++ 语言编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。与传统的关系型数据库(如 MySQL、PostgreSQL)使用表和行的结构不同,MongoDB 使用 JSON-like 格式的文档(BSON) 来存储数据,这使得数据结构非常灵活。
为了更好理解,我们将其与熟悉的 MySQL 进行对比:
RDBMS (MySQL) | MongoDB | 说明 |
|---|---|---|
数据库 Database | 数据库 Database | 概念一致,用于存储数据集合。 |
表Table | 集合 Collection | 在 RDBMS 中是表;在 MongoDB 中是一组文档的容器。 |
行 Row | 文档 Document | RDBMS 中的一行记录;MongoDB 中是一个键值对集合,是数据的基本单元。 |
列 Column | 字段 Field | RDBMS 中的列名;MongoDB 中文档的键。 |
主键 Primary Key | _id 字段 | 每个 MongoDB 文档都有一个唯一的 _id 作为主键,如果未提供,系统会自动创建。 |
表联接 Joins | 嵌入文档/引用 | MongoDB 通常通过嵌入文档或手动引用($lookup)来处理数据关系。 |
其实从这里某些特性来看,他和我我们前面讲的Elasticsearch有点类似。
面向文档(Document-Oriented):
{
"_id": ObjectId("5f9d1b2c3a7e6c1234567890"),
"name": "张三",
"age": 30,
"hobbies": ["阅读", "游泳", "编程"],
"address": {
"city": "北京",
"street": "朝阳区某街道"
}
}灵活的 schema:
ALTER TABLE 操作。这非常适合快速迭代的开发模式。高性能:
高可用性&水平扩展: