Skip to content

Commit

Permalink
docs: 更新文档
Browse files Browse the repository at this point in the history
  • Loading branch information
dunwu committed Oct 14, 2024
1 parent 8d482f8 commit 6d0edb4
Show file tree
Hide file tree
Showing 39 changed files with 1,585 additions and 957 deletions.
48 changes: 24 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -373,16 +373,16 @@
>
> MongoDB 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
- [MongoDB 应用指南](docs/12.数据库/04.文档数据库/01.MongoDB/01.MongoDB应用指南.md)
- [MongoDB CRUD 操作](docs/12.数据库/04.文档数据库/01.MongoDB/02.MongoDB的CRUD操作.md)
- [MongoDB 聚合操作](docs/12.数据库/04.文档数据库/01.MongoDB/03.MongoDB的聚合操作.md)
- [MongoDB 事务](docs/12.数据库/04.文档数据库/01.MongoDB/04.MongoDB事务.md)
- [MongoDB 建模](docs/12.数据库/04.文档数据库/01.MongoDB/05.MongoDB建模.md)
- [MongoDB 建模示例](docs/12.数据库/04.文档数据库/01.MongoDB/06.MongoDB建模示例.md)
- [MongoDB 索引](docs/12.数据库/04.文档数据库/01.MongoDB/07.MongoDB索引.md)
- [MongoDB 复制](docs/12.数据库/04.文档数据库/01.MongoDB/08.MongoDB复制.md)
- [MongoDB 分片](docs/12.数据库/04.文档数据库/01.MongoDB/09.MongoDB分片.md)
- [MongoDB 运维](docs/12.数据库/04.文档数据库/01.MongoDB/20.MongoDB运维.md)
- [MongoDB 简介](docs/12.数据库/04.文档数据库/01.MongoDB/MongoDB简介.md)
- [MongoDB CRUD](docs/12.数据库/04.文档数据库/01.MongoDB/MongoDB之CRUD.md)
- [MongoDB 聚合操作](docs/12.数据库/04.文档数据库/01.MongoDB/MongoDB聚合操作.md)
- [MongoDB 事务](docs/12.数据库/04.文档数据库/01.MongoDB/MongoDB事务.md)
- [MongoDB 建模](docs/12.数据库/04.文档数据库/01.MongoDB/MongoDB建模.md)
- [MongoDB 建模示例](docs/12.数据库/04.文档数据库/01.MongoDB/MongoDB建模示例.md)
- [MongoDB 索引](docs/12.数据库/04.文档数据库/01.MongoDB/MongoDB索引.md)
- [MongoDB 复制](docs/12.数据库/04.文档数据库/01.MongoDB/MongoDB复制.md)
- [MongoDB 分片](docs/12.数据库/04.文档数据库/01.MongoDB/MongoDB分片.md)
- [MongoDB 运维](docs/12.数据库/04.文档数据库/01.MongoDB/MongoDB运维.md)

### KV 数据库

Expand Down Expand Up @@ -411,20 +411,20 @@

> Elasticsearch 是一个基于 Lucene 的搜索和数据分析工具,它提供了一个分布式服务。Elasticsearch 是遵从 Apache 开源条款的一款开源产品,是当前主流的企业级搜索引擎。
- [Elasticsearch 面试总结](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/01.Elasticsearch面试总结.md) 💯
- [Elasticsearch 快速入门](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/02.Elasticsearch快速入门.md)
- [Elasticsearch 简介](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/03.Elasticsearch简介.md)
- [Elasticsearch 索引](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/04.Elasticsearch索引.md)
- [Elasticsearch 查询](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/05.Elasticsearch查询.md)
- [Elasticsearch 高亮](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/06.Elasticsearch高亮.md)
- [Elasticsearch 排序](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/07.Elasticsearch排序.md)
- [Elasticsearch 聚合](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/08.Elasticsearch聚合.md)
- [Elasticsearch 分析器](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/09.Elasticsearch分析器.md)
- [Elasticsearch 性能优化](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/10.Elasticsearch性能优化.md)
- [Elasticsearch Rest API](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/11.ElasticsearchRestApi.md)
- [ElasticSearch Java API 之 High Level REST Client](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/12.ElasticsearchHighLevelRestJavaApi.md)
- [Elasticsearch 集群和分片](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/13.Elasticsearch集群和分片.md)
- [Elasticsearch 运维](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/20.Elasticsearch运维.md)
- [Elasticsearch 简介](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/Elasticsearch简介.md)
- [Elasticsearch 索引](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/Elasticsearch索引.md)
- [Elasticsearch 映射](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/Elasticsearch映射.md)
- [Elasticsearch 查询](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/Elasticsearch查询.md)
- [Elasticsearch 高亮](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/Elasticsearch高亮.md)
- [Elasticsearch 排序](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/Elasticsearch排序.md)
- [Elasticsearch 聚合](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/Elasticsearch聚合.md)
- [Elasticsearch 分析器](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/Elasticsearch分析器.md)
- [Elasticsearch 性能优化](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/Elasticsearch性能优化.md)
- [Elasticsearch Rest API](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/ElasticsearchRestApi.md)
- [ElasticSearch Java API 之 High Level REST Client](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/ElasticsearchHighLevelRestJavaApi.md)
- [Elasticsearch 集群和分片](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/Elasticsearch集群和分片.md)
- [Elasticsearch 运维](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/Elasticsearch运维.md)
- [Elasticsearch 面试总结](docs/12.数据库/07.搜索引擎数据库/01.Elasticsearch/Elasticsearch面试.md) 💯

#### Elastic

Expand Down
Binary file modified assets/数据库/KV数据库/Redis面试.xmind
Binary file not shown.
Binary file modified assets/数据库/搜索引擎数据库/Elasticsearch.xmind
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: MongoDB 应用指南
title: MongoDB 简介
date: 2020-09-07 07:54:19
order: 01
categories:
Expand All @@ -13,22 +13,45 @@ tags:
permalink: /pages/9eca06f6/
---

# MongoDB 应用指南
# MongoDB 简介

## 简介
## 什么是 MongoDB

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案
MongoDB 是一个分布式文档数据库,由 C++ 语言编写。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
### 面向文档

### MongoDB 发展
面向文档的数据库使用更灵活的“文档”模型取代了“行”的概念。通过嵌入文档和数组,面向文档的方式可以仅用一条记录来表示复杂的层次关系。

MongoDB 中也没有预定义模式(predefined schema):文档键值的类型和大小不是固定的。由于没有固定的模式,因此按需添加或删除字段变得更容易。

综上,**MongoDB 支持结构化、半结构化数据模型,可以动态响应结构变化**

### 功能丰富

MongoDB 提供了丰富的功能:

- **索引** - MongoDB 支持通用的二级索引,并提供唯一索引、复合索引、地理空间索引及全文索引功能。此外,它还支持在不同层次结构(如嵌套文档和数组)上建立二级索引。
- **聚合** - MongoDB 提供了一种基于数据处理管道的聚合框架。
- **特殊的集合和索引类型** - MongoDB 支持有限生命周期(TTL)集合,适用于保存将在特定时间过期的数据,比如会话和固定大小的集合,以及用于保存最近的数据(日志)。MongoDB 还支持部分索引,可以仅对符合某个条件的文档创建索引,以提高效率并减少所需的存储空间。
- **文件存储** - 针对大文件及文件元数据的存储,MongoDB 使用了一种非常易用的协议。
- ...

### 分布式

MongoDB 作为分布式存储,自然也具备了分布式的一般特性:

- 通过副本机制提供高可用
- 通过分片提供扩容能力

## MongoDB 历史

- 1.x - 支持复制和分片
- 2.x - 更丰富的数据库功能
- 3.x - WiredTiger 和周边生态
- 4.x - 支持分布式事务

### MongoDB RDBMS
## MongoDB vs.RDBMS

| 特性 | MongoDB | RDBMS |
| --------- | ------------------------------------------------ | -------- |
Expand All @@ -40,15 +63,15 @@ MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组
| 索引类型 | B 树、全文索引、地理位置索引、多键索引、TTL 索引 | B 树 |
| 数据容量 | 没有理论上限 | 千万、亿 |

### MongoDB 特性
## MongoDB 概念

- 数据是 JSON 结构
- 支持结构化、半结构化数据模型
- 可以动态响应结构变化
- 通过副本机制提供高可用
- 通过分片提供扩容能力
文档是 MongoDB 中的基本数据单元,可以粗略地认为其相当于关系数据库管理系统中的行(但表达力要强得多)。

## MongoDB 概念
类似地,集合可以被看作具有动态模式的表。

一个 MongoDB 实例可以拥有多个独立的数据库,每个数据库都拥有自己的集合。

每个文档都有一个特殊的键 "_id",其在所属的集合中是唯一的

| SQL 术语/概念 | MongoDB 术语/概念 | 解释/说明 |
| :------------ | :---------------- | :------------------------------------- |
Expand Down Expand Up @@ -101,31 +124,49 @@ local
>
```

数据库也通过名字来标识。数据库名可以是满足以下条件的任意 UTF-8 字符串
数据库按照名称进行标识的。数据库名称可以是任意 UTF-8 字符串,但有以下限制:

- 不能是空字符串("")
- 不得含有 ' '(空格)、`.``\$``/``\` `\0` (空字符)
- 应全部小写
- 最多 64 字节。
- 数据库名称不能是空字符串(""
- 数据库名称不能包含 `/``\``.``"``*``<``>``:``|``?``$`、单一的空格以及 `\0`空字符),基本上只能使用 ASCII 字母和数字
- 数据库名称区分大小写
- 数据库名称的长度限制为 64 字节。

有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。

- **admin**从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器
- **admin**admin 数据库会在身份验证和授权时被使用。此外,某些管理操作需要访问此数据库
- **local**:这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
- **config**:当 Mongo 用于分片设置时,config 数据库在内部使用,用于保存分片的相关信息。

### 文档

文档是一组键值(key-value)对(即 BSON)。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。
文档是 MongoDB 中的基本数据单元。

文档是一组有序键值对(即 BSON)。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。

需要注意的是:

- 文档中的键/值对是有序的。
- 文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。
- MongoDB 区分类型和大小写。
- MongoDB 的文档不能有重复的键。

- 文档的键是字符串。除了少数例外情况,键可以使用任意 UTF-8 字符。

- 文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。

- MongoDB 区分类型和大小写。例如,下面这两对文档是不同的:

```json
{"count" : 5}
{"count" : "5"}

{"count" : 5}
{"Count" : 5}
```

- MongoDB 的文档不能有重复的键。例如,下面这个文档是不合法的

```json
{"greeting" : "Hello, world!", "greeting" : "Hello, MongoDB!"
```

文档键命名规范:

- 键不能含有 `\0` (空字符)。这个字符用来表示键的结尾。
Expand All @@ -138,12 +179,14 @@ local

集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。

使用 `.` 字符分隔不同命名空间的子集合是一种组织集合的惯例。例如,有一个具有博客功能的应用程序,可能包含名为 `blog.posts` 和名为 `blog.authors` 的集合。

合法的集合名:

- 集合名不能是空字符串""
- 集合名不能含有 `\0` 字符(空字符),这个字符表示集合名的结尾
- 集合名不能以"system."开头,这是为系统集合保留的前缀
- 用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集合名里面包含,这是因为某些系统生成的集合中包含该字符。除非你要访问这种系统创建的集合,否则千万不要在名字里出现 `$`
- 集合名称不能是空字符串("")
- 集合名称不能含有 `\0`(空字符),因为这个字符用于表示一个集合名称的结束
- 集合名称不能以 `system.` 开头,该前缀是为内部集合保留的。例如,`system.users` 集合中保存着数据库的用户,`system.namespaces` 集合中保存着有关数据库所有集合的信息
- 用户创建的集合名称中不应包含保留字符 `$`。许多驱动程序确实支持在集合名称中使用 `$`,这是因为某些由系统生成的集合会包含它,但除非你要访问的是这些集合之一,否则不应在名称中使用 `$` 字符

### 元数据

Expand Down Expand Up @@ -667,4 +710,4 @@ db.<集合>.aggregate(pipeline, {options});
- [MongoDB 官网](https://www.mongodb.com/)
- [MongoDB Github](https://github.com/mongodb/mongo)
- [MongoDB 教程](https://www.runoob.com/mongodb/mongodb-tutorial.html)
- [MongoDB 教程](https://www.runoob.com/mongodb/mongodb-tutorial.html)
31 changes: 11 additions & 20 deletions docs/12.数据库/04.文档数据库/01.MongoDB/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,25 +24,16 @@ index: false
## 📖 内容

### [MongoDB 应用指南](01.MongoDB应用指南.md)

### [MongoDB 的 CRUD 操作](02.MongoDB的CRUD操作.md)

### [MongoDB 聚合操作](03.MongoDB的聚合操作.md)

### [MongoDB 事务](04.MongoDB事务.md)

### [MongoDB 建模](05.MongoDB建模.md)

### [MongoDB 建模示例](06.MongoDB建模示例.md)

### [MongoDB 索引](07.MongoDB索引.md)

### [MongoDB 复制](08.MongoDB复制.md)

### [MongoDB 分片](09.MongoDB分片.md)

### [MongoDB 运维](20.MongoDB运维.md)
- [MongoDB 简介](MongoDB简介.md)
- [MongoDB 之 CRUD](MongoDB之CRUD.md)
- [MongoDB 聚合操作](MongoDB聚合操作.md)
- [MongoDB 事务](MongoDB事务.md)
- [MongoDB 建模](MongoDB建模.md)
- [MongoDB 建模示例](MongoDB建模示例.md)
- [MongoDB 索引](MongoDB索引.md)
- [MongoDB 复制](MongoDB复制.md)
- [MongoDB 分片](MongoDB分片.md)
- [MongoDB 运维](MongoDB运维.md)

## 📚 资料

Expand All @@ -60,4 +51,4 @@ index: false

## 🚪 传送

◾ 💧 [钝悟的 IT 知识图谱](https://dunwu.github.io/waterdrop/)
◾ 💧 [钝悟的 IT 知识图谱](https://dunwu.github.io/waterdrop/)
31 changes: 11 additions & 20 deletions docs/12.数据库/04.文档数据库/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,25 +18,16 @@ index: false

### MongoDB

#### [MongoDB 应用指南](01.MongoDB/01.MongoDB应用指南.md)

#### [MongoDB 的 CRUD 操作](01.MongoDB/02.MongoDB的CRUD操作.md)

#### [MongoDB 聚合操作](01.MongoDB/03.MongoDB的聚合操作.md)

#### [MongoDB 事务](01.MongoDB/04.MongoDB事务.md)

#### [MongoDB 建模](01.MongoDB/05.MongoDB建模.md)

#### [MongoDB 建模示例](01.MongoDB/06.MongoDB建模示例.md)

#### [MongoDB 索引](01.MongoDB/07.MongoDB索引.md)

#### [MongoDB 复制](01.MongoDB/08.MongoDB复制.md)

#### [MongoDB 分片](01.MongoDB/09.MongoDB分片.md)

#### [MongoDB 运维](01.MongoDB/20.MongoDB运维.md)
- [MongoDB 简介](01.MongoDB/MongoDB简介.md)
- [MongoDB 之 CRUD](01.MongoDB/MongoDB之CRUD.md)
- [MongoDB 聚合操作](01.MongoDB/MongoDB聚合操作.md)
- [MongoDB 事务](01.MongoDB/MongoDB事务.md)
- [MongoDB 建模](01.MongoDB/MongoDB建模.md)
- [MongoDB 建模示例](01.MongoDB/MongoDB建模示例.md)
- [MongoDB 索引](01.MongoDB/MongoDB索引.md)
- [MongoDB 复制](01.MongoDB/MongoDB复制.md)
- [MongoDB 分片](01.MongoDB/MongoDB分片.md)
- [MongoDB 运维](01.MongoDB/MongoDB运维.md)

## 📚 资料

Expand All @@ -56,4 +47,4 @@ index: false

## 🚪 传送

◾ 💧 [钝悟的 IT 知识图谱](https://dunwu.github.io/waterdrop/)
◾ 💧 [钝悟的 IT 知识图谱](https://dunwu.github.io/waterdrop/)
Loading

0 comments on commit 6d0edb4

Please sign in to comment.