加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MongoDB是什么,怎么用?看完你就知道了

发布时间:2019-06-05 21:11:39 所属栏目:编程 来源:Java识堂
导读:一、概述 1.MongoDB是什么?用一句话总结 MongoDB是一款为web应用措施和互联网基本办法计划的数据库打点体系。没错MongoDB就是数据库,是NoSQL范例的数据库。 2.为什么要行使MongoDB? (1)MongoDB提出的是文档、荟萃的观念,行使BSON(类JSON)作为其数

迁徙:当分片中的数据巨细纷歧时会发生迁徙的举措,好比分片A的数据较量多,会将分片A内里的一些块转移到分片B内里去。分片集群通过在分片中移动块来实现平衡,是由名为平衡器的软件历程打点的,使命是确保数据在各个分片中保持匀称漫衍,当集群中拥有块最多的分片与拥有块起码分片的块差大于8时,平衡器就会提倡一次平衡处理赏罚。

3.分片拭魅战

启动两个副本集、三个设置处事器、一个mongos历程

设置分片

  1. sh.help() //查察分片相干辅佐  
  2. sh.addShard() //添加分片  
  3. db,getSiblingDB("config").shards.find() //查察分片列表  
  4. sh.status() //分片详情  
  5. sh.enableSharding("cloud-docs") //开启一个数据库上的分片  
  6. db.getSiblingDB("config").databases,find() //查察数据库列表  
  7. sh.shardCollection("cloud-docs.spreadsheets",{username:1,_id:1}) //行使一个分片键界说一个分片荟萃spreadsheets,按照用户名举办切分  
  8. sh.getSiiblingDB("config").collections.findOne() //查察荟萃列表  
  9. db.chunks.count() //查察块的个数  
  10. db.chunks.findOne() //查察块的信息  
  11. db.changelog.count(}what:"split"|) //查察块切分日记  
  12. db.changelog.find({what:"moveChunk.commit"}).count() //查察日记迁徙记录 

4.分片的查询与索引

(1)分片查询范例

  • 针对性查询:查询包括分片键
  • 全局查询或分手/聚积查:查询不包括分片键
  • 查询进程:通过度片键将查询路由给指定分片,一旦到了某个分片上,由分片自行抉择行使哪个索引来执行该查询

(2)索引

每个分片都维护了本身的索引,当在分片荟萃上声明索引时,每个分片城市为它那部门荟萃构建独立的索引,每个分片上的分片荟萃都应该拥有沟通的索引。

分片荟萃只应承在_id字段和分片键上添加独一性索引,其他处所不可,由于这必要在分片间举办通讯,实验起来很伟大。

当建设分片时,会按照分片键建设一个索引。

5.选择分片键

(1)分片键是不行修改的、分片键的选择很是重要

(2)低效的分片键

  • 漫衍性差:如行使BSON工具ID,那么会导致全部最新插入的文档城市落到某个很小的持续范畴,无法分手插入
  • 缺乏局部性:升序分片键有明晰的偏向,完全随机的分片键则基础没有偏向。前者无法分手插入,后者插入分手,如行使MD5作为分片键

(3)抱负的分片键

  • 将插入数据匀称漫衍到各个分片上
  • 担保CRUD操纵可以或许操作局部性 有足够的粒度举办块拆分
  • 满意这些要求的分片键凡是由两个字段构成,第一个是粗粒度的,第二个粒度较细

6.出产情形中的分片

(1)陈设拓扑

  • 复制mongod:必要独立的陈设处事器
  • 设置处事器:设置处事器不必要有本身的呆板

按照差异的数据中心分别

MongoDB是什么,怎么用?看完你就知道了

这里写图片描写

(2)最低要求

  • 副本集每个成员,无论是完备的副本集节点照旧仲裁节点,都必要放在差异的呆板上 每个用于复制的副本集成员都必要有本身的呆板
  • 副本集仲裁节点很轻量级,和其他历程共用一台呆板即可
  • 设置处事器也可以选择与其他历程共用一台呆板

MongoDB是什么,怎么用?看完你就知道了

(3)设置的留意事项

必要预计集群巨细,可行使以下呼吁对现有荟萃举办分片处理赏罚

  1. sh.splitAt("cloud-docs.spreadsheets",{"username":"chen","_id":ObjectId("")}) 
  2. //手动拆分块 
  3. sh.moveChunk("cloud-docs.spreadsheets",{username:"chen"},"shardB") 
  4. //手动将某分块移至分片B 
  5. db.runCommand({removeshard:"shard-1/arete:30100,arete:30101"})  
  6. //删除分片 
  7. db.runCommand({moveprimary:"test",to:"shard-0-test-rs"}); 
  8. //移动主分片 

(4)备份分片集群

备份分片时必要遏制平衡器

  1. db.settings.update({_id:"ba;ancer"},{$set:{stopped:true},true}); 
  2. sh.setBalancerState(false); 
  3. //遏制平衡器,此时平衡器将举办最后一轮平衡 
  4. db.locks.find({_id:"balancer"}); 
  5. sh.isBalancerRunning(); 
  6. //查察平衡器状态,任何状态大于0 的状态值都声名平衡器仍在举办中 

八、陈设与打点

1.陈设

(1)陈设架构

行使64位呆板、32位呆板会制约mongodb的内存,使其最大值为1.5GB

(2)cpu

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读