More Related Content Similar to 一个 Mongodb command 的前世今生
Similar to 一个 Mongodb command 的前世今生 (20) More from dennis zhuang (17) 一个 Mongodb command 的前世今生3. Java Driver
• MongoClient 建⽴立和管理理连接
• Cluster
• SingleServerCluster
• MultiServerCluster
• Server
• DefaultServer
• MongoDatabase 和 MongoCollection 指向 DB 和 collection
• 元信息和配置保存
• Document : Binary JSON
• insertOne 发⽣生了了什什么?
8. ⽹网络和业务框架
• src/mongo/transport, src/mongo/util/net
• TransportLayer
• Listener: 处理理链接接⼊入, select 原语
• MessagingPort: ⽹网络链接,封装 socket
• ServiceEntryPoint :业务处理理
• Session:链接会话,封装 Connection -> MessagingPort
• 直接⼦子类 ServiceEntryPointImpl 和实现类:
• Mongod: Mongodb 数据库服务器器
• src/mongo/db/service_entry_point_mongod.cpp
• Mongos: MongoDB 分⽚片路路由服务
• src/mongo/s/service_entry_point_mongos.cpp
13. 数据库服务器器框架
• ⼊入⼝口:ServiceEntryPointMongod
• 命令处理理: assembly_response.cpp
• assembleResponse(ctx, msg, remote)
• 命令管理理: commands.cpp,查表法
• static CommandMap* _commands;
• 操作: src/mongo/db/ops
• 数据库模型:src/mongo/db/catalog
• 数据库管理理:DatabaseHolder
• typedef StringMap<Database*> DBs;
• DBs _dbs;
• 数据库:Database
• typedef StringMap<Collection*> CollectionMap;
• CollectionMap _collections;
• Collection:Collection
• RecordStore* const _recordStore;
15. 插⼊入命令处理理
• ServiceEntryPointMongod::handleRequest
• assembleResponse(ctx, request, client)
• runCommands(ctx, req, rb)
• WriteCommand:run(ctx, dbname, obj, err, result)
• CmdInsert::runImpl(ctx, dbname, obj, err, result)
• performInserts(ctx, InsertOp)
• insertBatchAndHandleErrors
• CollectionImpl::_insertDocuments
• _recordStore->insertRecords