
MongoDB源码阅读
RT
pourtheworld
DB programmer + UE4 rookie
展开
-
Mongodb源码分析之cursor(四)
查询部分:1. mongo客户端的请求2. mongod配置服务器端对数据库的加载3. mongod query中cursor操作4. mongod对于document的匹配mongod query中cursor操作几个关于mongodb的游标概念:basicCursor: 直接扫描整个collection的游标,可设置初始的扫描位置,扫描为顺序扫描.ReverseCursor: 反向扫描游标,相对于顺序扫描,这里是反向扫描.GeoCursorBase: 空间地理索引游标的基类.原创 2020-09-01 13:18:14 · 575 阅读 · 0 评论 -
Mongodb源码分析之查询请求(三)
查询部分:mongo端的请求mongod端的数据库的加载mongod query的选取mongod文档的匹配与数据的响应mongo端的请求:首先进入mongo的查询请求部分:将请求分装成一个Message结构,然后将其发送到服务端,等待服务端的相应数据,取得数据最后显示结果.下面来看具体流程分析:当我们点击db.coll.find({x:1})时,首先来到了mongo/shell/dbshell.cpp if ( ! wascmd ) { try原创 2020-09-01 13:17:54 · 505 阅读 · 0 评论 -
Mongodb源码分析之插入操作(二)
本文我们分析mongodb中数据的插入流程.插入的简单流程可以归结于如下:如果存在对应collection则从collection中分配空间,然后将数据保存到分配的空间中,不存在则先从database中分配对应的collection,若database不存在则分配database,建立xx.ns和xx.0 等文件.根据插入数据更新collection中的索引.下面来看代码,根据前面的分析我们知道插入操作的入口函数为:receivedInsert. void receivedInse原创 2020-09-01 13:17:39 · 210 阅读 · 0 评论 -
MongoDB源码阅读之通信协议(一)
MongoDB wire protocolMongoDB通过一种特殊的client/server 之间的协议:wire protocol。它是一种基于socket的request/response之间的通信协议。用户通过mongo shell或者driver API, 进行创建、删除、更新以及执行管理操作的命令, 都会产生一个Message, 用来表示该操作需要的信息。 每一个消息, 都有一些公共的部分, 被称作MsgHeader, 它分别记录了消息体的长度, 当前消息的requestId, 目的端的da原创 2020-09-01 13:18:51 · 676 阅读 · 0 评论 -
mongodb的存储管理
mongodb中能够保存的最大collection数目.mongodb官网(Using a Large Number of Collections,)的信息如下:By default MongoDB has a limit of approximately 24,000 namespaces per database. Each namespace is 628 bytes, the .n...原创 2020-09-01 13:16:40 · 628 阅读 · 0 评论