blog教程

分片概念

集合可以被分片,一个片可以包含多个区间,一个区间可以包含多个块,一个块可以定大小.所有这些概念都是逻辑上的,真实的物理存储并不存在这样的一一对应关系.如下图:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
分片1----
|
|
+++++++++++
+ |------ 块1 + 区间1
+ |------ 块2 +
+++++++++++
|
|
+++++++++++
+ |------ 块3 + 区间2
+ |------ 块4 +
+++++++++++
|
|
+++++++++++
+ |------ 块5 + 区间3
+ |------ 块6 +
+++++++++++
逻辑概念与物理概念上并不一致

片键选择问题

Geo location

建立索引

源码阅读进度

  • 看了下整个架构
    • 基于c++的一个项目,采用的库有boost……
    • 多线程模型,通过锁机制来完成任务的调度
    • 事件循环采用最传统select机制
      • 每个客户端一个threading,更优化的可能地方在内部的连接线程池,可以加快响应速度
    • [参考][http://blog.csdn.net/daizhj/article/category/803114]

经验记录

  • 传统的master、slave模式已经被弃用,mongo推荐采用副本集,即replica set。
    • 它的使用规则还是非常的简易。
      • 主从可以互相切换,当然也支持不切换的。
      • 第三方调用默认读写都走主,但可以调配副本提供读。这样就能有效分流读写的压力。
      • 副本集的提出主要是为了数据备份。
    • mongos的提出是为了sharding的,它也是mongodb里面的节点类型之一。(PS:mongodb有许多节点类型,单个数据库实例算一种,提供查询的config也是一种等等)
      • sharding是为了把大量的数据从单台机分离出来,切分数据到不同的机子上去。避免内存被撑爆了。
      • 未完待续