sharding of mongodb

blog 教程

分片概念

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

分片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 是为了把大量的数据从单台机分离出来,切分数据到不同的机子上去。避免内存被撑爆了。
      • 未完待续

发表评论

电子邮件地址不会被公开。 必填项已用*标注