[MongoDB知识体系] 一文全面总结MongoDB知识体系
MongoDB教程 - Mongo知识体系详解
本系列将给大家构建MongoDB全局知识体系。@pdai
知识体系
MongoDB学习引入

MongoDB生态

学习要点
1. MongoDB引入和生态介绍: 首先了解NoSQL基本的概念以及MongoDB基础概念,进而引入MongoDB的生态。
- Mongo入门 - MongoDB基础概念
- 在学习MongoDB之前先简单了解相关概念。
 
 - Mongo入门 - MongoDB整体生态
- 很多人在学习Mongo时仅仅围绕着数据库功能,围绕着CRUD和聚合操作,但是MongoDB其实已经基本形成了它自身的生态了。我们在学习一项技能时一定要跳出使用的本身,要从高一点的格局上了解整个生态,这样会对你构筑知识体系有很大的帮助。。
 
 
2. MongoDB入门 - 基本使用: 开始学习MongoDB安装,使用等。
- Mongo入门 - 基本使用:安装和CRUD
- 在理解MongoDB基础概念后,本文将介绍MongoDB的安装和最基本的CURD操作。
 
 - Mongo入门 - 基本使用:索引和聚合
- 在了解MongoDB的基本CRUD操作后,常用的其它操作还有对字段的索引以及对字段的聚合操作。
 
 - Mongo入门 - 基本使用:效率工具
- 本文将主要介绍常用的MongoDB的工具,这些工具可以极大程度的提升你的效率。
 
 - Mongo入门 - 基本使用:Java 低阶API
- 本文为低优先级,只是向你介绍下MongoDB提供的原生的JavaAPI;而大多数公司使用Spring框架,会使用Spring Data对MongoDB原生API的封装,比如JPA,MongoTemplate等。
 
 - Mongo入门 - 基本使用:Spring Data + Mongo
- 本文为主要介绍Spring Data对MongoDB原生API的封装,比如JPA,MongoTemplate等。以及原生API和Spring data系列之间的关系。
 
 

3. MongoDB进阶 - 原理和WiredTigger存储引擎: 在学习完常用的基础之后,我们再看下MongoDB的原理和WiredTigger存储引擎。
- Mongo进阶 - MongoDB体系结构
- 上面章节已经对MongoDB生态中工具以及使用有了基础,后续文章我们将开始理解MongoDB是如何支撑这些功能的。我们将从最基本的MongoDB的体系结构开始介绍,主要包括
MongoDB的包结构,MongoDB的数据逻辑结构,MongoDB的数据文件结构。其中围绕着MongoDB的数据文件结构,将为我们后续介绍MongoDB的存储引擎详解打下基础。 
 - 上面章节已经对MongoDB生态中工具以及使用有了基础,后续文章我们将开始理解MongoDB是如何支撑这些功能的。我们将从最基本的MongoDB的体系结构开始介绍,主要包括
 - Mongo进阶 - 原理和WiredTiger引擎
- 开始初步了解MongoDB实现原理和WiredTiger引擎。
 
 - Mongo进阶 - WT引擎:数据结构
- MongoDB的WiredTiger存储引擎背后采用了什么样的数据结构呢?本文将从
常见引擎数据结构,典型B-Tree数据结构,磁盘数据结构,内存数据结构,Page数据结构等方面详解介绍。。 
 - MongoDB的WiredTiger存储引擎背后采用了什么样的数据结构呢?本文将从
 - Mongo进阶 - WT引擎:Page生命周期
- 通过前文我们了解到数据以page为单位加载到cache; 有必要系统的分析一页page的生命周期、状态以及相关参数的配置,这对后续MongoDB的性能调优和故障问题的定位和解决有帮助。
 
 - Mongo进阶 - WT引擎:checkpoint原理
- Checkpoint主要有两个目的: 一是将内存里面发生修改的数据写到数据文件进行持久化保存,确保数据一致性;二是实现数据库在某个时刻意外发生故障,再次启动时,缩短数据库的恢复时间,WiredTiger存储引擎中的Checkpoint模块就是来实现这个功能的。
 
 
4. MongoDB进阶 - 数据库核心知识点: 再者我们还学要进一步学习MongoDB的核心知识点。
- Mongo进阶 - DB核心:索引实现
- 数据库核心知识点之索引
 
 - Mongo进阶 - DB核心:复制集
- 数据库核心知识点之复制集
 
 - Mongo进阶 - DB核心:分片Sharding
- 数据库核心知识点之复分片Sharding
 
 - Mongo进阶 - DB核心:备份恢复
- 数据库核心知识点之备份恢复
 
 
5. MongoDB进阶 - 数据模型设计: 在真正使用中,需要知道如何设计数据模型。
- Mongo进阶 - 系统设计:数据模型
- MongoDB使用文档数据模型。
 
 - Mongo进阶 - 系统设计:模式构建
- MongoDB使用文档数据模型具有内在的灵活性,允许数据模型支持你的应用程序需求, 灵活性也可能导致模式比它们应有样子的更复杂。这涉及到如何在MongoDB中设计数据库模式(schema),有一个严峻的现实,大多数性能问题都可以追溯到糟糕的模式设计。
 
 
6. MongoDB进阶 - 性能优化: 最后基于上述知识点,我们再了解下常见的性能优化的方式。
- Mongo进阶 - 性能:查询聚合优化
- 在MongoDB中通过查询聚合语句分析定位慢查询/聚合分析
 
 
学习资料
下面是一些学习MongoDB的参考资料。@pdai
官网资料
最好的资料在官网。
- MongoDB官网
 - MongoDB数据库文档
 - MongoDB 常用Shell
 - MongoDB CRUD
 - MongoDB 聚合
 - MongoDB 数据模型
 - MongoDB 事务
 - MongoDB 索引
 - MongoDB 安全
 - MongoDB 副本
 - MongoDB 分片
 - MongoDB 管理
 - MongoDB 存储
 
入门系列
其它
[MongoDB知识体系] 一文全面总结MongoDB知识体系的更多相关文章
- [Redis知识体系] 一文全面总结Redis知识体系
		
本系列主要对Redis知识体系进行详解.@pdai Redis教程 - Redis知识体系详解 知识体系 学习资料 知识体系 知识体系 相关文章 首先,我们通过学习Redis的概念基础,了解它适用的场 ...
 - MongoDB改动、删除文档的域属性实例
		
MongoDB改动.删除文档的域属性实例 在站点的开发中,可能最初的设计不合理.或者后期业务的变更,会造成文档结构会有些无用的属性.须要去删除或改动.因为MongoDB 是无 Schema 的,不像关 ...
 - MongoDB和Redis-NoSQL数据库-文档型-内存型
		
1NoSQL简述 CAP(Consistency,Availabiity,Partitiontolerance)理论告诉我们,一个分布式系统不可能满足一致性,可用性和分区容错性这三个需求,最多只能同时 ...
 - MongoDB,无模式文档型数据库简介
		
MongoDB的名字源自一个形容词humongous(巨大无比的),在向上扩展和快速处理大数据量方面,它会损失一些精度,在旧金山举行的MondoDB大会上,Merriman说:“你不适宜用它来处理复杂 ...
 - mongodb查询内嵌文档
		
mongodb查询内嵌文档 假设有这样一个文档: db.XXX.remove(); db.XXX.insert({"id":1, "members":[{& ...
 - Spring Data MongoDB 四:基本文档改动(update)(一)
		
Spring Data MongoDB 三:基本文档查询(Query.BasicQuery)(一) 学习MongoDB 二:MongoDB加入.删除.改动 一.简单介绍 Spring Data Mo ...
 - Spring Data MongoDB 五:进阶文档查询(分页、Morphia)(二)
		
Spring Data MongoDB 三:基本文档查询(Query.BasicQuery)(一) 学习MongoDB 六: MongoDB查询(游标操作.游标信息)(三) 一.简单介绍 Spring ...
 - MongoDB(五):更新文档、删除文档
		
1. 更新文档 MongoDB的uptade()和save()方法用于将集合中的文档更新.update()方法更新现有文档中的值,而save()方法是传递文档数据替换现有文档.从3.2版本开始,Mon ...
 - MongoDB学习笔记:文档Crud Shell
		
MongoDB学习笔记:文档Crud Shell 文档插入 一.插入语法 db.collection.insertOne() 将单个文档插入到集合中.db.collection.insertMan ...
 
随机推荐
- WPF Animation For SizeChanged Of UIElement
			
效果图 学到一个新词: Show me the money 背景 这几天查资料,看到 CodeProject 上面的一篇 Post <Advanced Custom TreeView Layou ...
 - Python_微信支付(云开发)
			
一.创建云开发小程序 1.初始化云开发环境 //app.js App({ onLaunch: function () { wx.cloud.init({ //初始化云开发环境 env: 'wxypay ...
 - C# 数据类型(3)
			
动态类型 dynamic types 动态类型是后来引进的,他其实是一个static type,但是不像其他的静态类型,编译器不会检查你到底是啥类型(也不会检查你能不能去call某个'method') ...
 - 【算法】KMP算法
			
简介 KMP算法由 Knuth-Morris-Pratt 三位科学家提出,可用于在一个 文本串 中寻找某 模式串 存在的位置. 本算法可以有效降低在一个 文本串 中寻找某 模式串 过程的时间复杂度.( ...
 - js multiple packages & lerna.js
			
js multiple packages & lerna.js
 - 如何通过 terminal 查看一个文件的 meta信息
			
如何通过 terminal 查看一个文件的 meta 信息 Linux shell stat 查看文件 meta 信息 stat stat指令:文件/文件系统的详细信息显示: 使用格式:stat 文件 ...
 - css animation & animation-fill-mode
			
css animation & animation-fill-mode css animation effect https://developer.mozilla.org/en-US/doc ...
 - 05_MySQL什么是sql语句
			
什么是SQL语言 SQL语言的分类 SQL语言的注意事项 SQL语句的注释 数据的创建.查看及删除 实操: 创建数据表 实操: 数据表的其他操作 查看数据库的数据表 查看表结构: 查看建表语句:
 - 深入理解Linux TCP backlog
			
本文转载自深入理解Linux TCP backlog 当应用程序调用listen系统调用让一个socket进入LISTEN状态时,需要指定一个参数:backlog.这个参数经常被描述为,新连接队列的长 ...
 - 2.go语言入门----变量类型、声明变量、数组、切片
			
基本变量类型 介绍几种基本的变量类型:字符串.int.float.bool package main import ( "fmt" ) // 列举几种非常基本的数据类型 func ...