daizhj的专栏

http://t.sina.com.cn/daizhj

Mongodb 源码分析--Replication之OpLog

    在之前的文章中,介绍了关于master-slave模式下的主从端代码的执行流程,因为当时篇幅所限,未对oplog的数据结构以及mongodb的local数据库作过多阐述,而这可能会让不知道其内容的朋友看代码时云里雾里找不到头绪,今天我专门用一篇文章来大致解释一下(这些内容可能会在后面章节...

2011-06-27 11:53:00

阅读数:5647

评论数:2

Mongodb源码分析--Replication之主从模式--Slave

    在上文中介绍了主从(master-slave)模式下的一些基本概念及master的执行流程。今天接着介绍一下从(slave)结点是如何发起请求,并通过请求获取的oplog信息来构造本地数据的。    不过开始今天的正文前,需要介绍一下mongodb在slave结点上进行数据同步时的一个大致...

2011-06-20 08:34:00

阅读数:6168

评论数:1

Mongodb 源码分析--Replication之主从模式--Master

      mongodb中提供了复制(Replication)机制,通过该机制可以帮助我们很容易实现读写分离方案,并支持灾难恢复(服务器断电)等意外情况下的数据安全。      在老版本(1.6)中,Mongo提供了两种方式的复制:master-slave及replica pair模式(注:mo...

2011-06-13 12:50:00

阅读数:5249

评论数:1

Mongodb 源码分析--链接池(ConnPool)

    在之前的一篇文章中,介绍了mongos的balaner的执行流程,其中在源码中的Balancer::run()方法里简单说明了为了连接到configserver,balancer通过构造ScopedDbConnection实现来链接并执行相应操作,因为当时篇幅所限,只是该链接使用池化的方式...

2011-06-07 09:09:00

阅读数:4993

评论数:4

Mongodb源码分析--Mongos之分布式锁

在之前的一篇文章中,介绍了balancer会声明使用分布式锁来协调分布式环境下的信息沟通并确保事务一致性,有关分布式锁的一些原理性信息可以参见这几篇文章:http://wenku.baidu.com/view/19ce3085b9d528ea81c77982.html,http://wenku.b...

2011-05-30 09:56:00

阅读数:7962

评论数:6

Mongodb源码分析--Mongos之balancer(均衡)

在之前的一篇文章中,介绍了mongos的启动流程,在那篇文章的结尾,介绍了mongos使用balancer来进行均衡,今天就继续讲其实现方式。首先我们看一下Balancer及相关实现策略的类图:

2011-05-23 11:00:00

阅读数:5442

评论数:5

Mongodb源码分析--Mongos

MongoDB提供了auto-sharding 功能。因为其是auto-sharding,即mongodb通过mongos(一个自动分片模块,用于构建一个大规模的可扩展的数据库集群,这个集群可以并入动态增加的机器)自动建立一个水平扩展的数据库集群系统,将数据库分表存储在sharding的各个节点上...

2011-05-16 10:18:00

阅读数:5467

评论数:5

Mongodb源码分析--查询结果集封装

在这个系列的开头几篇文章中,曾经介绍了Mongodb的查询流程,因为篇幅所限,并未介绍对cursor进行遍历查询时,如何将查询记录装填进结果集中。今天就针对诸如"select top n"这类返回一定数量记录的查询操作,来分析mongodb是如何将查询结果装填到结果集中的。这里...

2011-05-09 14:12:00

阅读数:4497

评论数:11

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

Command在Mongodb中是一类特殊操作,它提供了强大的管理及各项操作(比如建库,索引,删除集合等)。可以说通过Command可以完成几乎所有想做的事情。同时Mongodb开发者在Command上又做了非常清晰体系架构和设计,便于管理和高效执行各种类型的Command。 ...

2011-05-03 10:15:00

阅读数:3708

评论数:4

Mongodb源码分析--内存文件映射(MMAP)

在Mongodb中,其使用了操作系统底层提供的内存映射机制,即MMAP。MMAP可以把磁盘文件的一部分或全部内容直接映射到内存,这样文件中的信息位置就会在内存中有对应的地址空间,这时对文件的读写可以直接用指针来做,而不需要read/write函数了。同时操作系统会将数据刷新保存到磁盘上。...

2011-04-25 08:41:00

阅读数:8439

评论数:15

Mongodb源码分析--游标Cursor

在Mongodb中,其提供了类似关系型数据中cursor对象来遍历数据集合,同时mongodb并要根据不同的场景生成不同的游标对象(cursor),比如顺序遍历游标(basicCursor),反向游标(reverseCursor), B树索引游标(btreeCursor)等。 下面是其游...

2011-04-18 08:38:00

阅读数:3868

评论数:5

Mongodb源码分析--更新记录

在之前的一篇文章中,介绍了assembleResponse函数(位于instance.cpp第224行),它会根据op操作枚举类型来调用相应的crud操作,枚举类型定义如下: 可以看到dbUpdate = 2001 为更新操作枚举值,下面我们看一下assembleResponse在确定是更新操作时...

2011-04-11 10:48:00

阅读数:4179

评论数:1

Mongodb源码分析--删除记录

在之前的一篇文章中,介绍了assembleResponse函数(位于instance.cpp第224行),它会根据op操作枚举类型来调用相应的crud操作,枚举类型定义如下...可以看到dbDelete = 2002 为删除操作枚举值。当客户端将要删除的记录(或条件的document)发到服务端之...

2011-04-06 14:25:00

阅读数:3629

评论数:7

Mongodb源码分析--消息(message)

在Mongodb中,客户端和服务端进行通信是基于mongodb wire protocol。说白了,该协议是一个简单的基于socket,请求/响应方式的协议,客户端使用常规的TCP/IP套接字(socket)进行通信。客户端与服务端使用约定的消息(格式)进行通信,其消息头结构与C语言中的struc...

2011-04-02 14:49:00

阅读数:2237

评论数:0

mongodb源码分析--查询

在之前的一篇文章中,介绍了mongodb的主程序入口main()的执行流程,其实main只是实始化一些参数信息并做了些后台线程任务的启动工作(包括数据准备和恢复),并最终启动一个线程进行循环侦听。今天将会介绍在mongodb中数据查询 (find)的流程,以了解mongodb是如果对me...

2011-03-18 17:34:00

阅读数:3140

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭