作家
登录

从零开始搭建MongoDB数据库即服务

作者: 来源: 2017-09-13 15:05:30 阅读 我要评论

MongoDB的关键特点

MongoDB的关键特点主如果3个,第一个就是灵活荡态的文档模型,第二个是高可用副本集,第三个是MongoDB的程度扩大,也就是sharding。

这张图应当可以很好地解释这些X-aaS。最左边是传统企业的IT,所有的活都要本身干,大年夜数据中间办事器到操作体系数据库再到上层营业体系。IaaS开端就进入云计算典范畴了,最基本的是云办事器,不须要再关怀机房啊硬件拉,直接就可以用。然后再往右客户须要存眷的越来越少,脏活累活都交给办事供给商来干。

1、灵活荡态的文档模型

3、监控报警

MongoDB以一种叫做BSON(二进制JSON)的存储情势将数据作为文档存储。具有类似构造的文档平日被组织成集合。可以把集合算作类似于关系数据库中的的表:文档对应的是行,字段对应的昵嘈。

MongoDB将一笔记录的所稀有据聚合在一个文档中,而在关系数据库中则偏向于将数据分布在多个表中。如许做有几个好处,一是因为数据集合,削减了多表JOIN的需求,如许只须要读一次就可以读到所稀有据,在机能上会有很大年夜优势。

别的,这种模型加倍接近我们日常平凡编程说话中的对象构造,可以便利开辟者进行数据映射。

最后就是这种模型是schema-less的,也就是在MongoDB中不须要像关系数据库一样去事先定义每个表的schema。MongoDB一个集合内的文档之间可以拥有不合的构造,可以轻松为一个新的文档添加和削减字段,不会有任何的机能影响。这个特点异常合适开辟一些新产品,可以快速迭代。

当然,过于灵活就可能导致纷乱。有时刻我们想请求文档必须要有某些字段,某些字段必须要有固定的类型。为此,MongoDB供给了一个文档验证功能来对文档的格局进行束缚。

2、高可用副本集

  

接下来说MongoDB的第二个关键特点,高可用副本集(也可以翻译成复制集)。

MongoDB副本集由一组Mongo实例(过程)构成,包含一个Primary节点和多个Secondary节点,Mongodb Driver(客户端)的所稀有据都写入Primary,Secondary大年夜Primary同步写入的数据,以保持副本集内所有成员存储雷同的数据集,供给数据的高可用。

上图是一个典范的MongDB副本集,包含一个Primary节点和2个Secondary节点。

这里『大年夜多半』的定义是副本集内可投票成员的一半以上,当副本集内存活成员数量不足大年夜多半时,全部副本集将无法选举出Primary,此时副本集将无法供给写办事,处于只读状况。平日建议将副本集成员数量设置为奇数,因为偶数个节点能容忍的节点掉效和比它少1个节点的奇数个节点是一样的,然则可以节俭一个节点的数据存储成本。

51CTO诚邀您9月23号和秒拍/国美/美团元专家一路聊智能CDN的优化之路,抓紧时光哦!

除了初始化的时刻会进行选举,MongoDB副本集的高可用办事表如今,当副本集中没有Primary节点时,选举都邑进行。比如当Primary节点宕机时,剩下的Secondary节点中会选举出新的Primary(只须要知足大年夜多半成员存活的前提)。选举应用的算法是基于Raft协定,然则可以经由过程为节点配制揭捉?举优先级对选举结不雅进行控制。

此外须要提一下,有一些比较常见的特别的Secondary。一个是Hidden,Hidden节点和通俗的Secondary的差别是它是对Driver隐蔽的节点,也就是客户端无法拜访到Hidden,别的就是它的选举优先级是0,也就是它不克不及被选举为Primary。Hidden节点上拥稀有据,是以平日会用来作一些运维义务,如数捷报份、计算分析等。

别的还有一个是Arbiter,Arbiter是只介入投票,然则不存储数据的节点,这可以用在对可用性有请求,又页舷格控制成本的场景。

此外还有如Priority0节点、Delayed节点等。

3、MongoDB的程度扩大

Sharded cluster由Shard、Mongos和Config server 3个组件构成。Mongos本身并不持久化数据,Sharded cluster所有的元数据都邑存储到Config Server,而用户的数据则会分散存储到各个shard。Mongos启动后,会大年夜config server加载元数据,开端供给办事,将用户的请求精确路由到对应的Shard。

Sharded cluster支撑将单个集合的数据分散存储在多个shard上,用户可以指定根据集合内文档的某个字段即shard key来分布数据,今朝重要支撑2种数据分布的策略,范围分片(Range based sharding)或hash分片(Hash based sharding)。

范围分片下,文档是根据其shard key的值进行分片。shard key的值相邻近的文档比较有可能会被放在同一个shard上,这种方法实用于须要应用范围萌芽的营业。

哈希分片下,文档根据其shard key的hash值进行分片。这会包管数据分布比较平均,然则晦气于范围萌芽。

跟着数据量的增多,MongoDB也会主动在后台对数据以chunk为单位进行负载均衡。

三、若何搭建MongoDB数据库即办事


  推荐阅读

  AI都干过什么让人细思极恐的事

51CTO诚邀您9月23号和秒拍/国美/美团元专家一路聊智能CDN的优化之路,抓紧时光哦! 谈到人工智能(AI)总会有人认为恐怖。到底怕在何处?你有证据么?巧了。美国问答网站Quora上就有这么一个问>>>详细阅读


本文标题:从零开始搭建MongoDB数据库即服务

地址:http://www.17bianji.com/lsqh/37383.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)