/reading-and-annotate-mongodb-3.6

分布式文档数据库mongodb-3.6(mongos、mongod、wiredtiger存储引擎)源码中文注释分析,近期持续更新

Primary LanguageC++Apache License 2.0Apache-2.0

#reading-and-annotate-mongodb-3.6

mongodb-3.6源码注释分析,持续更新

===================================

对外演讲

# 对外演讲 演讲内容
1 Qcon全球软件开发大会分享 OPPO万亿级文档数据库MongoDB集群性能优化实践
2 2021年度Gdevops全球敏捷运维峰会 PB级万亿数据库性能优化及最佳实践
3 2019年mongodb年终盛会 OPPO百万级高并发MongoDB集群性能数十倍提升优化实践
4 2020年mongodb年终盛会 万亿级文档数据库集群性能优化实践
5 2021年dbaplus分享 万亿级文档数据库集群性能优化实践

专栏

# 专栏名 专栏内容
1 infoq专栏 《MongoDB内核源码设计、性能优化、最佳运维实践》
2 oschina专栏 《mongodb内核源码中文注释详细分析及性能优化实践系列》
3 知乎专栏 《MongoDB内核源码设计、性能优化、最佳运维实践》
4 itpub专栏 《mongodb内核源码设计实现、性能优化、最佳运维实践》

《mongodb内核源码设计与实现》源码模块化分析

第一阶段:单机内核源码分析

单机模块化架构图

# 单机模块名 核心代码中文注释 说明 模块文档输出
1 网络收发处理(含工作线程模型) 网络处理模块核心代码实现(100%注释分析) 完成ASIO库、网络数据收发、同步线程模型、动态线程池模型等功能 详见infoq专栏:《MongoDB内核源码设计、性能优化、最佳运维实践》
2 command命令处理模块 命令处理相关模块源码分析(100%注释分析) 完成命令注册、命令执行、命令分析、命令统计等功能 详见oschina专栏:《mongodb内核源码中文注释详细分析及性能优化实践系列》
3 write写(增删改操作)模块) 增删改写模块(100%注释分析) 完成增删改对应命令解析回调处理、事务封装、storage存储模块对接等功能 详见知乎专栏:《MongoDB内核源码设计、性能优化、最佳运维实践》
4 query查询引擎模块) query查询引擎模块(核心代码注释) 完成expression tree解析优化处理、querySolution生成、最优索引选择等功能 详见知乎专栏:《MongoDB内核源码设计、性能优化、最佳运维实践》
5 concurrency并发控制模块 并发控制模块(核心代码注释) 完成信号量、读写锁、读写意向锁相关实现及封装 详见infoq专栏:《MongoDB内核源码设计、性能优化、最佳运维实践》
6 index索引模块 index索引模块(100%注释分析) 完成索引解析、索引管理、索引创建、文件排序等功能 详见oschina专栏:《mongodb内核源码中文注释详细分析及性能优化实践系列》
7 storage存储模块) storage存储模块(100%注释分析) 完成存储引擎注册、引擎选择、中间层实现、KV实现、wiredtiger接口实现等功能 详见知乎专栏:《MongoDB内核源码设计、性能优化、最佳运维实践》
8 wiredtiger存储引擎) wiredtiger存储引擎设计与实现专栏分析(已分析部分) 完成KV读写、存储结构、checkpoint择等主功能,待完善 详见知乎专栏:《MongoDB内核源码设计、性能优化、最佳运维实践》

第二阶段:复制集内核源码分析(已分析部分源码,待整理,持续分析)

第三阶段:sharding分片内核源码分析(已分析部分源码,待整理,持续分析)

第四阶段:wiredtiger存储引擎源码分析(已分析部分源码,待整理,持续分析)

第五阶段:重新回顾分析mongodb内核主模块以外细节(已分析部分源码,待整理,持续分析)

<<千万级峰值tps/十万亿级数据量文档数据库内核研发及运维之路>>

# 文章内容
1 盘点 2020 - 我要为分布式数据库 mongodb 在国内影响力提升及推广做点事
2 万亿级数据库 MongoDB 集群性能数十倍提升及机房多活容灾实践
3 Qcon现代数据架构 -《万亿级数据库 MongoDB 集群性能数十倍提升优化实践》核心 17 问详细解答
4 数百万级代码量mongodb内核源码阅读经验分享
5 话题讨论 - mongodb 相比 mysql 拥有十大核心优势,为何国内知名度不高?
6 万亿级数据库 MongoDB 集群性能数十倍提升及机房多活容灾实践
7 百万级高并发mongodb集群性能数十倍提升优化实践(上篇)
8 百万级高并发mongodb集群性能数十倍提升优化实践(下篇)
9 Mongodb网络传输处理源码实现及性能调优-体验内核性能极致设计
10 常用高并发网络线程模型设计及mongodb线程模型优化实践(最全高并发网络IO线程模型设计及优化)
11 Mongodb集群搭建一篇就够了-复制集模式、分片模式、带认证、不带认证等(带详细步骤说明)
12 Mongodb特定场景性能数十倍提升优化实践(记一次mongodb核心集群雪崩故障)
13 mongodb内核源码设计实现、性能优化、最佳运维系列-mongodb网络传输层模块源码实现二
14 为何需要对开源mongodb社区版本做二次开发,需要做哪些必备二次开发
15 对开源mongodb社区版本做二次开发收益列表
16 盘点 2020 - 我要为分布式数据库 mongodb 在国内影响力提升及推广做点事
17 300 条数据变更引发的血案 - 记某十亿级核心 mongodb 集群部分请求不可用故障踩坑记
18 记十亿级Es数据迁移mongodb成本节省及性能优化实践
19 千亿级数据迁移mongodb成本节省及性能优化实践
27 mongodb内核源码实现、性能调优、最佳运维实践系列-数百万行mongodb内核源码阅读经验分享
28 mongodb内核源码实现、性能调优、最佳运维实践系列-mongodb网络传输层模块源码实现一
29 mongodb内核源码实现、性能调优、最佳运维实践系列-mongodb网络传输层模块源码实现二
30 mongodb内核源码实现、性能调优、最佳运维实践系列-mongodb网络传输层模块源码实现三
31 mongodb内核源码实现、性能调优、最佳运维实践系列-mongodb网络传输层模块源码实现四
32 mongodb内核源码实现、性能调优、最佳运维实践系列-command命令处理模块源码实现一
33 mongodb内核源码实现、性能调优、最佳运维实践系列-command命令处理模块源码实现二
34 mongodb内核源码实现、性能调优、最佳运维实践系列-command命令处理模块源码实现三
35 mongodb内核源码实现、性能调优、最佳运维实践系列-记mongodb详细表级操作及详细时延统计实现原理(教你如何快速进行表级时延问题分析)
36 mongodb内核源码实现、性能调优、最佳运维实践系列-Mongodb write写(增、删、改)模块设计与实现

其他

nginx高并发设计优秀**应用于其他高并发代理中间件:

redis、nginx、memcache、twemproxy、mongodb等更多中间件,分布式系统,高性能服务端核心**实现博客:

说明:

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

源码中文已注释代码列表如下:

boost-asio网络库/定时器源码实现注释(只注释mongodb相关实现的asio库代码)(100%注释):

mongodb网络传输模块(transport)处理实现(100%注释):

transport_layer传输层子模块:
Ticket数据收发回调处理子模块(100%注释):
Session会话子模块(100%注释):
service_state_machine状态机子模块(100%注释):
service_executor服务运行(工作线程模型)子模块(100%注释):
service_entry_point_impl服务入口子模块(100%注释):

message/DbMessage/OpMsgRequest协议处理(100%注释):

时间嘀嗒及系统级定时器实现(100%注释):

mongod/mongos服务入口处理(100%注释):

command命令处理模块(注释完毕,命令太多,请参考前面的《command命令处理模块源码实现》):

db.serverStatus()相关统计(注释完毕):

stats相关统计(注释完毕):

OpMsgRequest和写write_ops:(insert、update、delete)转换操作(100%注释): :

write写模块:

write处理入口(100%注释):
OpMsgRequest和写write_ops:(insert、update、delete)转换操作(100%注释): :
增删改处理(100%注释): :

query请求处理模块:

query_request请求解析和canonical_query规范化转换操作(核心流程注释完毕):
MatchExpression tree生成及优化过程(核心流程注释完毕):
get_executor获取PlanExecutor(核心流程注释完毕):
QueryPlannerIXSelect实现MatchExpression tree相关node关联对应RelevantTag(核心流程注释完毕):
plan_enumerator轮询枚举每个查询所有的候选索引信息(核心流程注释完毕):
index_tag相关(核心流程注释完毕):
生成QuerySolutionNode tree及querysolution(核心流程注释完毕):
get_executor根据querysolurion生成PlanStage(核心流程注释完毕):
PlanStage(核心流程注释完毕):

storage存储模块:

catalog中间层相关实现:
database中间层接口相关(重要接口注释):
collection中间层接口相关(重要接口注释):
index中间层接口相关(重要接口注释):
storage层相关实现(重要接口注释):
kv引擎管理注册(重要接口注释):
wiredtiger存储引擎接口相关(重要接口注释):
plan_ranker对每个候选solution打分,选出最优索引(核心流程注释完毕):
get_executor根据querysolurion生成PlanStage(核心流程注释完毕):
plan_executor执行器(核心流程注释完毕):
plan_cache plan缓存(核心流程注释完毕):

shard分片源码实现(注释进行中):

分布式锁实现源码注释分析(100%注释):
代理定期更新config.mongos实现源码注释分析(100%注释):
cfg复制集库表结构管理(config.databases、config.collections)(100%注释):
分片片建shard key(100%注释):

mongodb存储引擎wiredtiger源码分析

https://github.com/y123456yz/reading-and-annotate-wiredtiger-3.0.0