首先有一个问题没有搞懂:什么是自动分片?用脚本吗?

一: 多机方式中的另一种方式【分片 => sharding】

  1. 分片的对象的谁? 对一个【集合 => 表】进行拆分,把一个大数据拆分成多个小数据

  2. 分片的依据

    就是对 表 中的某一个key进行分片。。。 比方说???

    我们有一个age【int】,如果说你有2个片,那么int类型可能会被同等拆分。。。。一个片占用一半。

    当然,所有的操作都是由mongodb自己去完成的。

二:画一个图,看看mongodb中如果采用分片架构。

所有的client请求我们都是由 mongos去转向的。

127.0.0.1:27017 作为 mongos服务器

127.0.0.1:27018 作为 config 服务器

127.0.0.1:28000 作为一个sharing1服务器

127.0.0.1:28001 作为一个sharing2服务器

第一步:开启config服务器。 其实就是一个普通的mongod服务。

第二步:开启mongos服务,,,

第三步:开启两个片键。

第四步: 初始化配置

  1. 将要作为“片”的机器放到mongos的config配置中。
  1. connecting to: 127.0.0.1:27017/test
  2. mongos> use admin
  3. switched to db admin
  4. mongos> db.runCommand({"addshard":"127.0.0.1:28000","allowLocal":true})
  5. { "shardAdded" : "shard0000", "ok" : 1 }
  6. mongos> db.runCommand({"addshard":"127.0.0.1:28001","allowLocal":true})
  7. { "shardAdded" : "shard0001", "ok" : 1 }
  1. 你要划分的集合和键值

    在没有分片的时候,插入数据,这个时候数据去哪了??? 数据是在其中的某一个分片中
  1. connecting to: 127.0.0.1:27017/test
  2. mongos> use admin
  3. switched to db admin
  4. mongos> db.runCommand({"addshard":"127.0.0.1:28000","allowLocal":true})
  5. { "shardAdded" : "shard0000", "ok" : 1 }
  6. mongos> db.runCommand({"addshard":"127.0.0.1:28001","allowLocal":true})
  7. { "shardAdded" : "shard0001", "ok" : 1 }
  8. mongos> use test
  9. switched to db test
  10. mongos> test.person.insert({"name":"jack","age":1})
  11. Mon Dec 21 07:16:35.924 ReferenceError: test is not defined
  12. mongos> db.person.insert({"name":"jack","age":1})
  13. mongos> db.person.find()
  14. { "_id" : ObjectId("5677edaaceeb3008ebe79831"), "name" : "jack", "age" : 1 }
  15. mongos> use admin
  16. switched to db admin
  17. mongos> db.runCommand({"enablesharding":"test"})
  18. { "ok" : 1 }
  19. mongos> db.runCommand({"shardcollection":"test.person","key":{"age":1}})
  20. {
  21. "proposedKey" : {
  22. "age" : 1
  23. },
  24. "curIndexes" : [
  25. {
  26. "v" : 1,
  27. "key" : {
  28. "_id" : 1
  29. },
  30. "ns" : "test.person",
  31. "name" : "_id_"
  32. }
  33. ],
  34. "ok" : 0,
  35. "errmsg" : "please create an index that starts with the shard key before sharding."
  36. }

一定要在分片之前创建 “片键” 的索引

  1. mongos> use test
  2. switched to db test
  3. mongos> db.person.createIndex({"age":1})
  4. mongos> use admin
  5. switched to db admin
  6. mongos> db.runCommand({"shardcollection":"test.person","key":{"age":1}})
  7. { "collectionsharded" : "test.person", "ok" : 1 }

mongodb--分片架构【待填的坑】的更多相关文章

  1. 008.MongoDB分片群集概念及原理

    一 MongoDB分片介绍 1.1 分片 Mongodb另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求. 当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足 ...

  2. MongoDB分片技术原理和高可用集群配置方案

    一.Sharding分片技术 1.分片概述 当数据量比较大的时候,我们需要把数分片运行在不同的机器中,以降低CPU.内存和Io的压力,Sharding就是数据库分片技术. MongoDB分片技术类似M ...

  3. TiDB和MongoDB分片集群架构比较

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 最近阅读了TiDB源码的说明文档,跟MongoDB的分片集群做了下简单对比. 首先展示TiDB的整体架构 M ...

  4. mongodb分片扩展架构

    目录 一.简介 二.分片集群 三.数据分布策略 四.Mongos访问模式 五.Config元数据 六.分片均衡 参考文档 一.简介 MongoDB目前3大核心优势:『灵活模式』+ 『高可用性』 + 『 ...

  5. (转)MongoDB分片实战 集群搭建

    环境准备 Linux环境 主机 OS 备注 192.168.32.13 CentOS6.3 64位 普通PC 192.168.71.43 CentOS6.2 64位 服务器,NUMA CPU架构 Mo ...

  6. MongoDB分片集群-Sharded Cluster

    分片概念 分片(sharding)是一种跨多台机器分布数据的方法, MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作的部署. 换句话说:分片(sharding)是指将数据拆分,将其分散存在 ...

  7. 搭建mongodb分片

    搭建mongodb分片 http://gong1208.iteye.com/blog/1622078 Sharding分片概念 这是一种将海量的数据水平扩展的数据库集群系统,数据分表存储在shardi ...

  8. mongodb分片

    在系统早期,数据量还小的时候不会引起太大的问题,但是随着数据量持续增多,后续迟早会出现一台机器硬件瓶颈问题的.而mongodb主打的就是海量数据架构,他不能解决海量数据怎么行!不行!“分片”就用这个来 ...

  9. mongodb 分片群集(sharding cluster)

    实际环境架构 分别在3台机器运行一个mongod实例(称为mongod shard11,mongod shard12,mongod shard13)组织replica set1,作为cluster的s ...

随机推荐

  1. C++顺序表(模板总结)

    C++顺序表(模板总结) 总结: 1.模板类的实质是什么:让程序员写出和类型无关的代码 2.模板的对象时什么:方法或者类 3.是对类中的一系列操作,提供一个不固定数据类型的方法 用模板做的类的时候要指 ...

  2. C# 手动编写 DataSet,DataTable 及遍历DataSet中的数据

    一.手动编写DataSet:    有时候不想从数据库导出 DataSet,或者有其他的需要,要将数据库里的DataSet包装成另一个样子,这个时候,了解DataSet的内部结构就非常必要.DataS ...

  3. golomb哥伦布编码——本质上就是通过0来区分商和余数

    哥伦布编码是一个针对整数的变长编码方式,详细介绍可以看维基百科.这里简单介绍下: 哥伦布编码使用指定的整数 M 把输入的整数分成两部分:商数 q.余数 r. 商数当做一元编码,而余数放在后面做为可缩短 ...

  4. git拉取远端改变,但是不覆盖本地的修改

    1.git stash 2.git  fetch weixin-old-remote 3.git rebase weixin-old-remote/main151028_wxpay_main15100 ...

  5. JavaScript学习杂记

    1.DOM层级:document(document) --> doctype,documentElement(html) --> head,body(body). 2.offset, cl ...

  6. Python 41 多表查询 和 子查询

    1.查询             完整的查询语句             select [distinct] {* | 字段 | 聚合函数 | 表达式}from 表名                 ...

  7. RPC与REST

    RPC与REST (摘自网络,个人理解)

  8. Jquery 获取父页面下指定iframe里的指定元素

    var div1=$("#iframe1",window.parent.document).contents().find("#div1");

  9. Ajax 传递json字符串到客户端时报 Internal server error

    架构:struts2+JQuery 需求:就是前台请求后台,后台查询数据库,将数据转换成json格式,使用struts2框架赋值给action内的变量jsonStr,前台通过 response.jso ...

  10. JQuery 遍历没有id的控件

    html代码: <tr> <td field="ck" > <div><input type="checkbox" / ...