Mongodb源码分析--Command体系架构

本文深入探讨了MongoDB的Command体系结构,从Command基类的定义到子类如CmdCount的实现,详细阐述了如何将系统实现的Command注册到_commands地图中,并在接收到客户端请求时如何执行相应的命令逻辑。文章通过count命令的执行流程,解释了从QueryMessage分析到调用execCommand的过程,最后用时间顺序总结了整个流程。
摘要由CSDN通过智能技术生成
     Command在Mongodb中是一类特殊操作,它提供了强大的管理及各项操作(比如建库,索引,删除集合等)。可以说通过Command可以完成几乎 所有想做的事情。同时Mongodb开发者在Command上又做了非常清晰体系架构和设计,便于管理和高效执行各种类型的Command。
     今天就专门用一篇篇幅来着重介绍一下其Command的体系架构,并用例子来介绍mongod是如何将Command引入其中的。
    
    为了对其中大部分command对一个大致的了解,我们可以用下面指令来显示一个command列表:
    1.mongod --dbpath d:/mongodb/db --port 27017 --rest
    2.在浏览器上输入链接地址:http://localhost:28017/_commands

     这里mongod就会为我们显示command列表,大约有90多个,这是显示截图:
 

    上面90多个类中,按其使用场景可以为分如下几类,分别是:
     dbcommand.cpp :一般数据库指令,如数据库,索引的创建,重建,打开/关闭等
     dbcommands_admin.cpp :管理指令,如CleanCmd,JournalLatencyTestCmd,ValidateCmd,FSyncCommand
     dbcommands_generic.cpp :常用指令,ListCommandsCmd,LogRotateCmd,PingCommand,CmdSet,CmdGet等
     replset_commands.cpp :复制集指令,CmdReplSetTest,CmdReplSetGetStatus,CmdReplSetReconfig等
     security_commands.cpp :安全指令,CmdGetNonce,CmdLogout,CmdAuthenticate

 

    commands_admin.cpp :shard管理操作,因其位于mongos项目,这里暂不介绍
     commands_public.cpp :shard公用操作,因其位于mongos项目,这里暂不介绍

 

 

    下面是相关类图:

-----------------------------分割线--------------------------------
 

-----------------------------分割线--------------------------------

 

 

-----------------------------分割线--------------------------------
 

 

 

-----------------------------分割线--------------------------------
 

 

 

    首先我们看一下在Command的基类,其用于定义子类要实现的方法及属性,自身也实现了一些通用方法,比如htmlHelp(用于以html方法显示该command的帮助信息),构造方法,findCommand(查询命令)等,其声明如下:

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值