前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mongodb的简介与适用场景

mongodb的简介与适用场景

作者头像
字母哥博客
发布2020-09-21 17:31:37
1K0
发布2020-09-21 17:31:37
举报

先谈谈Nosql

CAP理论
CAP理论

CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。 对于分布式数据系统,分区容忍性是基本要求,否则就失去了价值。因此设计分布式数据系统,就是在一致性和可用性之间取一个取舍平衡。

  • C: Consistency 一致性 对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性。如:银行转账 如果经过一段时间后要求能访问到更新后的数据,则是最终一致性,弱一致性。如:在线字典,例子个数 通常靠锁保证,影响系统的并发度
  • A: Availability 可用性 对于一个可用性的分布式系统,每一个非故障的节点必须对每一个请求作出响应。无论请求是否出错。 当向数据库写入时,mongodb默认不等待响应消息。使用getLastError命令来确保操作已经正确执行。
  • P:Partition Tolerance分区容错性 分区容错性和扩展性紧密相关。好的分区容错性要求能够使应用虽然是一个分布式系统,而看上去却好像是在一个可以运转正常的整体。比如现在的分布式系统中有某一个或者几个机器宕掉了,其他剩下的机器还能够正常运转满足系统需求。

mongodb简介

  • 分布式文档存储数据库
  • 面向集合(文档)的类JSON格式存储方式,对面向对象编程语言友好
  • 读写高性能(相对于RDBMS),高并发下的数据存储
  • 扩展性好,通过增加机器实现性能扩展。如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
  • 存储数据无模式,适合半结构化及非结构化数据存储,数据格式经常发生变
  • 最接近RDBMS的NoSql数据库,介于键值对nosql和关系型数据库之间
  • 支持mapreduce数据批量处理与聚合
  • 支持大文件存储,GridFS提供了一种将大型文件存储在MongoDB的文件规范
  • MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。

官方网站

https://www.mongodb.org/

mongodb的局限性与不足

  • 在32位系统上,不支持大于2.5G的数据。
  • 单个文档大小限制为 4 M/16 M(1.8版本后升为16M)
  • 不支持join操作和事务机制,辩证角度看这也是优点。CAP原理。
  • 对内存要求比较大,至少要保证热数据(索引,数据及系统其它开销)都能装进内存
  • 用户权限方面比较弱,这一点MongoDB官方推荐的是将机器部署在安全的内网环境中,尽量不要用权限。
  • 占用大量的磁盘空间。空间预分配,删除记录不释放空间,定期整理记录。
  • 从维护工具,人才,实践经验较关系数据库都很缺乏

应用场景

  • 数据模型简单,无复杂关联关系的大数据存储与检索。
  • 用户需求频繁变化,数据无固定模式。
  • 网站数据(弱一致性):Mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
  • 缓存:由于性能很高,Mongo也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo搭建的持久化缓存层可以避免下层的数据源过载。
  • 大尺寸,低价值的数据:如日志数据,用户行为数据,历史数据
  • 高伸缩性的场景:Mongo非常适合由数十或数百台服务器组成的数据库。Mongo的路线图中已经包含对MapReduce引擎的内置支持。
  • 用于对象及JSON数据的存储:Mongo的BSON数据格式非常适合文档化格式的存储及查询

不适用的场景如下

  • 要求高度事务性的系统,如银行转账。强业务数据状态相互影响,频繁变换,如:企业OA。
  • 传统的商业智能应用。针对特定问题的BI数据库会对产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。
  • 复杂的跨文档(表)级联查询。在查询条件复杂的情况下,相对于RDBMS并无明显优势,甚至没有优势或处于劣势。

总之,具备以下几点请考虑使用mongodb

  1. 你期待系统面对很高的写负载需要有更好的表现,如大规模并发日志收集系统
  2. 你的数据将爆发式增长,对可扩展性提出要求。
  3. 你的数据模型较为简单,查询条件简单。
  4. 你的数据结构较为松散
  5. 对性能要求较高,数据一致性要求较低
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-02-03),如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 先谈谈Nosql
  • mongodb简介
    • 官方网站
    • mongodb的局限性与不足
    • 应用场景
    • 不适用的场景如下
    • 总之,具备以下几点请考虑使用mongodb
    相关产品与服务
    对象存储
    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档