373 lines
5.4 KiB
Markdown
373 lines
5.4 KiB
Markdown
# 基础概念
|
||
|
||
## NoSQL 数据库概述
|
||
|
||
- 关系型数据库 vs NoSQL 数据库
|
||
- NoSQL 数据库分类(文档型、键值型、列族型、图形型)
|
||
- MongoDB 在 NoSQL 生态中的定位
|
||
|
||
## 核心概念
|
||
|
||
- 文档(Document)与 BSON 格式
|
||
- 集合(Collection)概念
|
||
- 数据库(Database)结构
|
||
- MongoDB 与关系型数据库术语对比
|
||
|
||
## 架构原理
|
||
|
||
- MongoDB 存储引擎(WiredTiger)
|
||
- 内存映射文件系统
|
||
- 索引机制
|
||
- 查询优化器
|
||
|
||
## 文档学习
|
||
|
||
---
|
||
|
||
# 环境搭建
|
||
|
||
## 安装部署
|
||
|
||
- Linux 环境安装(RockyLinux9)
|
||
|
||
## 相关配置
|
||
|
||
- 配置文件详解
|
||
- 数据目录设置
|
||
- 日志配置
|
||
- 网络绑定设置
|
||
|
||
## 服务管理
|
||
|
||
- systemctl 服务管理
|
||
- 开机自启动配置
|
||
- 服务状态监控
|
||
|
||
## 实践环节
|
||
|
||
- 生产环境配置文件模板
|
||
|
||
---
|
||
|
||
# 基础操作
|
||
|
||
## MongoDB Shell 使用
|
||
|
||
- mongo shell 连接
|
||
- 基本命令操作
|
||
- 脚本执行
|
||
|
||
## 数据库操作
|
||
|
||
- 创建和删除数据库
|
||
- 数据库列表查看
|
||
- 数据库切换
|
||
|
||
## 集合操作
|
||
|
||
- 创建和删除集合
|
||
- 集合属性设置
|
||
- 集合统计信息
|
||
|
||
## 文档 CRUD 操作
|
||
|
||
- 插入文档(insert、insertOne、insertMany)
|
||
- 查询文档(find、findOne)
|
||
- 更新文档(update、updateOne、updateMany)
|
||
- 删除文档(remove、deleteOne、deleteMany)
|
||
|
||
## 实践环节
|
||
|
||
- 基础 CRUD 操作练习
|
||
- 批量数据导入导出
|
||
- 数据迁移实验
|
||
|
||
---
|
||
|
||
# 进阶查询
|
||
|
||
## 查询操作符
|
||
|
||
- 比较操作符($eq、$ne、$gt、$gte、$lt、$lte)
|
||
- 逻辑操作符($and、$or、$not、$nor)
|
||
- 元素操作符($exists、$type)
|
||
- 数组操作符($in、$nin、$all、$size)
|
||
|
||
## 查询修饰符
|
||
|
||
- 排序(sort)
|
||
- 限制(limit)
|
||
- 跳过(skip)
|
||
- 投影(projection)
|
||
|
||
## 正则表达式查询
|
||
|
||
- 正则表达式语法
|
||
- 模糊查询实现
|
||
- 性能考虑
|
||
|
||
## 聚合框架基础
|
||
|
||
- 聚合管道概念
|
||
- 常用聚合操作符
|
||
- 分组和统计
|
||
|
||
## 实践环节
|
||
|
||
- 复杂查询练习
|
||
- 聚合查询实例
|
||
- 查询性能测试
|
||
|
||
---
|
||
|
||
# 索引优化
|
||
|
||
## 索引基础
|
||
|
||
- 索引原理和作用
|
||
- B-Tree 索引结构
|
||
- 索引的优缺点
|
||
|
||
## 索引类型
|
||
|
||
- 单字段索引
|
||
- 复合索引
|
||
- 多键索引
|
||
- 文本索引
|
||
- 地理空间索引
|
||
- 哈希索引
|
||
|
||
## 索引管理
|
||
|
||
- 创建索引(createIndex)
|
||
- 删除索引(dropIndex)
|
||
- 查看索引(getIndexes)
|
||
- 重建索引(reIndex)
|
||
|
||
## 查询性能优化
|
||
|
||
- 执行计划分析(explain)
|
||
- 索引选择策略
|
||
- 查询优化技巧
|
||
|
||
## 实践环节
|
||
|
||
- 索引创建和管理
|
||
- 性能测试对比
|
||
- 查询优化案例
|
||
|
||
---
|
||
|
||
# 数据建模
|
||
|
||
## 文档设计原则
|
||
|
||
- 嵌入式文档 vs 引用
|
||
- 数据冗余策略
|
||
- 原子性考虑
|
||
|
||
## Schema 设计模式
|
||
|
||
- 一对一关系建模
|
||
- 一对多关系建模
|
||
- 多对多关系建模
|
||
- 树形结构建模
|
||
|
||
## 数据验证
|
||
|
||
- Schema 验证规则
|
||
- 数据类型约束
|
||
- 自定义验证器
|
||
|
||
## 实践环节
|
||
|
||
- 电商系统数据建模
|
||
- 社交网络数据建模
|
||
- 内容管理系统建模
|
||
|
||
---
|
||
|
||
# 聚合框架
|
||
|
||
## 聚合管道详解
|
||
- $match 阶段
|
||
- $group 阶段
|
||
- $sort 阶段
|
||
- $project 阶段
|
||
- $limit 和 $skip 阶段
|
||
|
||
## 高级聚合操作
|
||
|
||
- $lookup(关联查询)
|
||
- $unwind(数组展开)
|
||
- $facet(多维聚合)
|
||
- $bucket(分桶聚合)
|
||
|
||
## 聚合表达式
|
||
|
||
- 算术表达式
|
||
- 字符串表达式
|
||
- 日期表达式
|
||
- 条件表达式
|
||
|
||
## MapReduce
|
||
|
||
- MapReduce 概念
|
||
- 编写 Map 和 Reduce 函数
|
||
- 性能对比
|
||
|
||
## 实践环节
|
||
|
||
- 数据分析报表
|
||
- 实时统计系统
|
||
- 复杂业务逻辑实现
|
||
|
||
---
|
||
|
||
# 副本集(Replica Set)
|
||
|
||
## 副本集概念
|
||
- 高可用性需求
|
||
- 副本集架构
|
||
- 主从复制原理
|
||
|
||
## 副本集架构
|
||
- Primary 节点
|
||
- Secondary 节点
|
||
- Arbiter 节点
|
||
- 选举机制
|
||
|
||
## 副本集部署
|
||
- 单机多实例部署
|
||
- 多机部署
|
||
- 配置文件设置
|
||
- 初始化副本集
|
||
|
||
## 副本集管理
|
||
- 添加和删除节点
|
||
- 优先级设置
|
||
- 故障转移测试
|
||
- 数据同步监控
|
||
|
||
## 实践环节
|
||
- 副本集搭建
|
||
- 故障模拟和恢复
|
||
- 性能测试
|
||
|
||
---
|
||
|
||
# 分片(Sharding)
|
||
|
||
## 分片概念
|
||
- 水平扩展需求
|
||
- 分片架构组件
|
||
- 分片键选择
|
||
|
||
## 分片架构
|
||
- Config Server
|
||
- Shard Server
|
||
- mongos 路由
|
||
- 数据分布策略
|
||
|
||
## 分片部署
|
||
- 分片集群搭建
|
||
- 配置服务器部署
|
||
- 路由服务器配置
|
||
- 分片初始化
|
||
|
||
## 分片管理
|
||
- 分片键管理
|
||
- 数据均衡
|
||
- 分片添加和删除
|
||
- 性能监控
|
||
|
||
## 实践环节
|
||
- 分片集群搭建
|
||
- 数据分片测试
|
||
- 扩容演练
|
||
|
||
---
|
||
|
||
# 安全管理
|
||
|
||
## 认证机制
|
||
- 用户认证
|
||
- 角色权限管理
|
||
- LDAP 集成
|
||
|
||
## 授权控制
|
||
- 基于角色的访问控制(RBAC)
|
||
- 数据库级权限
|
||
- 集合级权限
|
||
|
||
## 审计日志
|
||
- 审计功能配置
|
||
- 日志分析
|
||
- 合规性要求
|
||
|
||
## 实践环节
|
||
- 安全配置实施
|
||
- 权限测试
|
||
- 安全审计
|
||
|
||
---
|
||
|
||
# 备份与恢复
|
||
|
||
## 备份策略
|
||
- 全量备份
|
||
- 增量备份
|
||
- 实时备份
|
||
|
||
## 备份工具
|
||
- mongodump/mongorestore
|
||
- 文件系统快照
|
||
- 第三方备份工具
|
||
|
||
## 恢复策略
|
||
- 完全恢复
|
||
- 时间点恢复
|
||
- 选择性恢复
|
||
|
||
## 备份自动化
|
||
- 备份脚本编写
|
||
- 定时任务配置
|
||
- 备份验证
|
||
|
||
## 实践环节
|
||
- 备份恢复演练
|
||
- 自动化脚本开发
|
||
- 灾难恢复测试
|
||
|
||
---
|
||
|
||
# 性能监控与调优
|
||
|
||
## 性能监控
|
||
- mongostat 工具
|
||
- mongotop 工具
|
||
- 第三方监控工具
|
||
|
||
## 性能指标
|
||
- 连接数监控
|
||
- 操作延迟
|
||
- 内存使用
|
||
- 磁盘 I/O
|
||
|
||
## 性能调优
|
||
- 查询优化
|
||
- 索引优化
|
||
- 硬件优化
|
||
- 配置优化
|
||
|
||
## 故障诊断
|
||
- 慢查询分析
|
||
- 锁竞争分析
|
||
- 内存泄漏排查
|
||
|
||
## 实践环节
|
||
- 性能基准测试
|
||
- 瓶颈分析
|
||
- 调优实施
|
||
|
||
--- |