设为首页 收藏本站
查看: 1277|回复: 0

[经验分享] MongoDB小结

[复制链接]

尚未签到

发表于 2015-7-6 11:42:26 | 显示全部楼层 |阅读模式
前言
    导师让我看一些NoSQL资料,于是目标锁定了MongoDB,至于为什么,很简单,发现了一些不错的资料。看了一些资料,有一些想法或者读后感吧,记下来,以备回忆。
  简介
    MongoDB是面向集合、模式自由的文档型数据库。
  面向集合(collection),文档(document)而不是面向表(table),行(row)。文档型数据库是指数据库里面的数据库格式是BSON,与Json有些类似。MongoDB只是NoSQL的一种,那么为什么要用非关系型数据库呢?
  逻辑结构和存储结构
    逻辑结构:
  
  关系型数据库:一个数据库实例包含多个database,一个database包含多个table,一个table包括多个rows。
  MongoDB:一个MongoDB实例包含多个database,一个database包括多个collection,一个collection包括多个document。
  
  存储结构:
  关系型数据库:创建一个普通数据库生成两个文件:.mdf,.ldf。
  MongoDB: 创建一个普通数据库生成两个文件.ns,.0文件。
  此文详细介绍MongoDB数据文件内部结构以及MongoDB构架图分享
  应用
    MongoDB自带交互式Javascript Shell,用来对MongoDB进行操作和管理,而且许多MongoDB爱好者也写了许多GUI MongoDB管理软件。MongoDB Shell相较于MongoDB GUIs更底层一些,封闭的更少些,因此更灵活,也更能了解原理,学起来也不是很难。
  博客园的一线码农写了一个MongoDB系列很不错,里面介绍了MongoDB 的CURD操作,聚合函数,索引等相关知识。
  
  架构
    先知道what,再知道how,最后还得知道why。
  NoSQLFan里有篇文章介绍的很好。
  1. Replica Sets 副本集
  即MongoDB在多个服务器上备份数据。有一个primary DB,用户只能向primary DB写入数据,但是可以从多个服务器读取数据库,从而可以实现读写分离。而Primary DB和 Secondary DB之间保持着心跳同步检测,保持数据库的一致性。当Primary DB宕机,有仲裁服务器会从Secondary 中选出一个来充当 Primary DB。
DSC0000.png
  2. Auto-Sharding 自动分片
  如果一个数据太大,磁盘吃紧,需要对数据进行分片。
DSC0001.jpg
  3.Auto-Sharding + Replica Sets
  如此,不但可以解决海量存储和动态扩容问题,而且还可以实现高可靠,高并发。

  每个Shard都是集群,
  Shard1在三个服务器上都存在,可以提高可靠性,容错能力,备份恢复能力。
  config在三个服务器上,也是同理,为了可靠的保存分片的元数据。
  mongos在3个服务器上,可实现负载平衡,提高客户端接入性能。
  步骤:客户端发起请求,有3个路由进程之一接收并解析命令,然后根据config服务器记录的分片元数据来确定需要接收客户端命令的分片。
  服务器的具体配置可以参考 一线码农系列
  MongoDB驱动
    在实际编程中,你当然可以使用process调用cmd命令来操作和管理MongoDB,但是太麻烦了,还是下载驱动方便方便,MongoDB驱动多着,当然会有C#,有官方,也有非官方的。 MongoDB驱动如何实战?
  优劣势
    优劣势自然是和关系型数据库对比了
  参考MongoDB调查总结
  MongoDB 身上的优势和劣势
  自我总结
    学起来挺轻松的,也许接触的还不深,没有经过大型项目实战,但是学着一直有种和充实的感觉,那就是我知道为什么会这样,也许是开源的原因吧。NoSQL和关系型数据库各有优势,并立共存,适用于不同的项目中。比如,Mongo不支持事务,对于银行转账之类的自然不适用;但是在web2.0时代,NoSQL的角色愈来愈重要了,NoSQL的优势也是为web2.0而生的。
  参考资料
    1. NoSQLFan  MongoDB资料汇总专题   略显杂乱
  2. MongoDB 官网  MongoDB手册  权威,英文

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-83799-1-1.html 上篇帖子: mongodb指南(翻译)(二十) 下篇帖子: 安装MongoDB数据库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表