Repository
reading-and-annotate-mongodb-3.6
reading-and-annotate-mongodb-3.6 mongodb-4.4最新版本内核源码中文模块化注释详细分析 mongodb-3.6版本内核源码中文模块化注释详细分析 OPPO万亿级文档数据库MongoDB集群性能优化实践 OPPO百万级高并发MongoDB集群性能数十倍提升优化实践 《MongoDB内核源码设计、性能优化、最佳运维实践》 · License unknown · Maintenance unknown
- License
- Unknown
- #
- 对外演讲
- 1
- Qcon全球软件开发大会分享
- 2
- 2021年度Gdevops全球敏捷运维峰会
Specs
- #对外演讲
- 1Qcon全球软件开发大会分享
- 22021年度Gdevops全球敏捷运维峰会
- 32019年mongodb年终盛会
- 42020年mongodb年终盛会
- 52021年dbaplus分享
- #专栏名
- 1infoq专栏
- 2oschina专栏
- 3知乎专栏
- 4itpub专栏
- #文章内容
- 1盘点 2020 - 我要为分布式数据库 mongodb 在国内影响力提升及推广做点事
- 2万亿级数据库 MongoDB 集群性能数十倍提升及机房多活容灾实践
- 3Qcon现代数据架构 -《万亿级数据库 MongoDB 集群性能数十倍提升优化实践》核心 17 问详细解答
- 4数百万级代码量mongodb内核源码阅读经验分享
- 5话题讨论 - mongodb 相比 mysql 拥有十大核心优势,为何国内知名度不高?
- 6万亿级数据库 MongoDB 集群性能数十倍提升及机房多活容灾实践
- 7百万级高并发mongodb集群性能数十倍提升优化实践(上篇)
- 8百万级高并发mongodb集群性能数十倍提升优化实践(下篇)
- 9Mongodb网络传输处理源码实现及性能调优-体验内核性能极致设计
- 10常用高并发网络线程模型设计及mongodb线程模型优化实践(最全高并发网络IO线程模型设计及优化)
- 11Mongodb集群搭建一篇就够了-复制集模式、分片模式、带认证、不带认证等(带详细步骤说明)
- 12Mongodb特定场景性能数十倍提升优化实践(记一次mongodb核心集群雪崩故障)
- 13mongodb内核源码设计实现、性能优化、最佳运维系列-mongodb网络传输层模块源码实现二
- 14为何需要对开源mongodb社区版本做二次开发,需要做哪些必备二次开发
- 15对开源mongodb社区版本做二次开发收益列表
- 16盘点 2020 - 我要为分布式数据库 mongodb 在国内影响力提升及推广做点事
- 17300 条数据变更引发的血案 - 记某十亿级核心 mongodb 集群部分请求不可用故障踩坑记
- 18记十亿级Es数据迁移mongodb成本节省及性能优化实践
- 19千亿级数据迁移mongodb成本节省及性能优化实践
- 20千亿级数据迁移 mongodb 成本节省及性能优化实践 (附性能对比质疑解答)
- 21记某百亿级 mongodb 集群数据过期性能优化实践
- 27mongodb内核源码实现、性能调优、最佳运维实践系列-数百万行mongodb内核源码阅读经验分享
- 28mongodb内核源码实现、性能调优、最佳运维实践系列-mongodb网络传输层模块源码实现一
- 29mongodb内核源码实现、性能调优、最佳运维实践系列-mongodb网络传输层模块源码实现二
- 30mongodb内核源码实现、性能调优、最佳运维实践系列-mongodb网络传输层模块源码实现三
- 31mongodb内核源码实现、性能调优、最佳运维实践系列-mongodb网络传输层模块源码实现四
- 32mongodb内核源码实现、性能调优、最佳运维实践系列-command命令处理模块源码实现一
- 33mongodb内核源码实现、性能调优、最佳运维实践系列-command命令处理模块源码实现二
README
reading-and-annotate-mongodb-3.6
mongodb-4.4最新版本内核源码中文模块化注释详细分析
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/十万亿级数据量文档数据库内核研发及运维之路>>
其他
nginx高并发设计优秀思想应用于其他高并发代理中间件:
redis、nginx、memcache、twemproxy、mongodb等更多中间件,分布式系统,高性能服务端核心思想实现博客:
说明:
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
源码中文已注释代码列表如下:
boost-asio网络库/定时器源码实现注释(只注释mongodb相关实现的asio库代码)(100%注释):
- asio/include/asio/detail/impl/scheduler.ipp
- asio/include/asio/detail/impl/epoll_reactor.ipp
- asio/include/asio/detail/scheduler.hpp
- asio/include/asio/detail/impl/scheduler.hpp
- asio/include/asio/detail/timer_queue.hpp
- asio/include/asio/detail/timer_queue_base.hpp
- asio/include/asio/detail/timer_queue_set.hpp
- asio/include/asio/detail/impl/timer_queue_set.ipp
- asio/include/asio/detail/epoll_reactor.hpp
- asio/include/asio/detail/impl/epoll_reactor.hpp
- asio/include/asio/impl/read.hpp
- asio/include/asio/impl/write.hpp
- asio/include/asio/basic_socket_acceptor.hpp
- asio/include/asio/detail/reactive_socket_service.hpp)
- asio/include/asio/basic_socket_acceptor.hpp
- asio/include/asio/basic_stream_socket.hpp
- asio/include/asio/detail/reactive_socket_service_base.hpp
- asio/include/asio/detail/reactive_socket_recv_op.hpp
- asio/include/asio/detail/reactor_op.hpp
- asio/include/asio/detail/scheduler_operation.hpp
- asio/include/asio/detail/deadline_timer_service.hpp
mongodb网络传输模块(transport)处理实现(100%注释):
transport_layer传输层子模块:
- transport_layer_asio.h
- transport_layer_asio.cpp
- transport_layer_manager.h
- transport_layer_manager.cpp
- transport_layer.h
Ticket数据收发回调处理子模块(100%注释):
- ticket_asio.h
- ticket_asio.cpp
- ticket_impl.h
Session会话子模块(100%注释):
- session_asio.h
- session_asio.cpp
- session.h
service_state_machine状态机子模块(100%注释):
- service_state_machine.h
- service_state_machine.cpp
service_executor服务运行(工作线程模型)子模块(100%注释):
- service_executor.h
- service_executor_adaptive.cpp
- service_executor_adaptive.h
- service_executor_synchronous.cpp
- service_executor_synchronous.h
service_entry_point_impl服务入口子模块(100%注释):
- service_entry_point.h
- service_entry_point_impl.cpp
- service_entry_point_impl.h
- service_entry_point_utils.cpp
- service_entry_point_utils.h
message/DbMessage/OpMsgRequest协议处理(100%注释):
时间嘀嗒及系统级定时器实现(100%注释):
mongod/mongos服务入口处理(100%注释):
- service_entry_point_mongod.h
- service_entry_point_mongod.cpp
- service_entry_point_mongos.h
- service_entry_point_mongos.cpp
command命令处理模块(注释完毕,命令太多,请参考前面的《command命令处理模块源码实现》):
db.serverStatus()相关统计(注释完毕):
- server_status.cpp
- server_status.h
- server_status_internal.cpp
- server_status_internal.h
- server_status_metric.cpp
- server_status_metric.h
stats相关统计(注释完毕):
- counters.cpp
- counters.h
- operation_latency_histogram.cpp
- operation_latency_histogram.h
- top.cpp
- top.h
- latency_server_status_section.cpp
- toplatency_server_status_sectionh
OpMsgRequest和写write_ops:(insert、update、delete)转换操作(100%注释): :
write写模块:
write处理入口(100%注释):
OpMsgRequest和写write_ops:(insert、update、delete)转换操作(100%注释): :
增删改处理(100%注释): :
query请求处理模块:
query_request请求解析和canonical_query规范化转换操作(核心流程注释完毕):
- query_request.cpp
- query_request.h
- canonical_query.cpp
- canonical_query.h
- parsed_projection.cpp
- parsed_projection.h
MatchExpression tree生成及优化过程(核心流程注释完毕):
- expression_parser.cpp
- expression_parser.h
- expression.cpp
- expression.h
- expression_tree.cpp
- expression_tree.h
get_executor获取PlanExecutor(核心流程注释完毕):
QueryPlannerIXSelect实现MatchExpression tree相关node关联对应RelevantTag(核心流程注释完毕):
plan_enumerator轮询枚举每个查询所有的候选索引信息(核心流程注释完毕):
index_tag相关(核心流程注释完毕):
生成QuerySolutionNode tree及querysolution(核心流程注释完毕):
- planner_access.cpp
- planner_access.h
- planner_analysis.cpp
- planner_analysis.h
- query_planner.cpp
- query_planner.h
get_executor根据querysolurion生成PlanStage(核心流程注释完毕):
PlanStage(核心流程注释完毕):
- plan_stage.cpp
- plan_stage.h
- plan_stats.cpp
- plan_stats.h
- stage_builder.cpp
- stage_builder.h
- multi_plan.cpp
- multi_plan.h
- subplan.cpp
- subplan.h
- stage_types.cpp
- collection_scan.h
- collection_scan.cpp
- collection_scan.h
- index_scan.cpp
- index_scan.h
- fetch.cpp
- fetch.h
- sort.cpp
- sort.h
- sort_key_generator.cpp
- sort_key_generator.h
- projection.cpp
- projection.h
- limit.cpp
- limit.h
- skip.cpp
- skip.h
- cached_plan.cpp
- cached_plan.h
- update.cpp
- update.h
- delete.cpp
- delete.h
- ......
storage存储模块:
catalog中间层相关实现:
database中间层接口相关(重要接口注释):
- database.cpp
- database.h
- database_impl.h
- database_impl.cpp
- database_holder.h
- database_holder.cpp
- database_holder_impl.cpp
- database_holder_impl.h
- database_catalog_entry.h (通过这里和KVStorageEngine关联)
collection中间层接口相关(重要接口注释):
- collection.cpp
- collection.h
- collection_impl.h
- collection_impl.cpp
- collection_info_cache.h
- collection_info_cache.cpp
- collection_info_cache_impl.cpp
- collection_info_cache_impl.h
- collection_options.cpp
- collection_options.h
- collection_catalog_entry.h (通过这里和KVStorageEngine关联)
index中间层接口相关(重要接口注释):
- index_catalog.cpp
- index_catalog.h
- index_catalog_impl.h
- index_catalog_impl.cpp
- index_catalog_entry.h
- index_catalog_entry.cpp
- index_catalog_entry_impl.cpp
- index_catalog_entry_impl.h (通过这里和CollectionInfoCache、CollectionCatalogEntry、IndexAccessMethod等关联)
- index_create.cpp
- index_create.h
- index_create_impl.cpp
- index_create_impl.h
storage层相关实现(重要接口注释):
- record_data.cpp
- record_data.h
- record_store.h
- sorted_data_interface.h
- storage_engine.h
- storage_engine_lock_file.cpp
- storage_engine_lock_file.h
- storage_engine_metadata.cpp
- storage_engine_metadata.h
- storage_init.cpp
- storage_options.h
- storage_options.cpp
kv引擎管理注册(重要接口注释):
- kv_storage_engine.cpp
- kv_storage_engine.h
- kv_catalog.h
- kv_catalog.cpp
- kv_collection_catalog_entry.h(通过这里和catalog中间层collection衔接)
- kv_collection_catalog_entry.cpp
- kv_database_catalog_entry.cpp
- kv_database_catalog_entry.h(通过这里和catalog中间层database衔接)
- kv_database_catalog_entry_base.cpp
- kv_database_catalog_entry_base.h
wiredtiger存储引擎接口相关(重要接口注释):
- wiredtiger_global_options.cpp
- wiredtiger_global_options.h
- wiredtiger_init.h
- wiredtiger_init.cpp
- wiredtiger_kv_engine.h
- wiredtiger_kv_engine.cpp
- wiredtiger_parameters.cpp
- wiredtiger_parameters.h
- wiredtiger_record_store.cpp
- wiredtiger_record_store.h
- wiredtiger_recovery_unit.h
- wiredtiger_recovery_unit.cpp
- wiredtiger_server_status.cpp
- wiredtiger_server_status.h
- wiredtiger_session_cache.cpp
- wiredtiger_session_cache.h
- wiredtiger_size_storer.h
- wiredtiger_size_storer.cpp
- wiredtiger_util.cpp
- wiredtiger_util.h
plan_ranker对每个候选solution打分,选出最优索引(核心流程注释完毕):
get_executor根据querysolurion生成PlanStage(核心流程注释完毕):
plan_executor执行器(核心流程注释完毕):
plan_cache plan缓存(核心流程注释完毕):
shard分片源码实现(注释进行中):
分布式锁实现源码注释分析(100%注释):
- dist_lock_catalog_impl.cpp
- dist_lock_catalog_impl.h
- dist_lock_manager.cpp
- dist_lock_catalog.h
- dist_lock_catalog_impl.cpp
- dist_lock_catalog_impl.h
- dist_lock_catalog_impl.cpp
- dist_lock_manager.cpp
- type_lockpings.cpp
- type_lockpings.h
- type_locks.cpp
- type_locks.h
- configsvr_enable_sharding_command.h
代理定期更新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
<<千万级峰值tps/十万亿级数据量文档数据库内核研发及运维之路>>
31