MongoDB
Posted 大魔王
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB相关的知识,希望对你有一定的参考价值。
MongoDB 是一个面向文档的数据库系统。使用 C++编写,不支持 SQL,但有自己功能强大的查询语法。MongoDB 使用 BSON 作为数据存储和传输的格式。BSON 是一种类似 JSON 的二进制序列化文档,支持嵌套对象和数组。MongoDB 很像 mysql,document 对应 MySQL 的 row,collection 对应 MySQL 的 table
应用场景:
a) 网站数据:mongo 非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
b) 缓存:由于性能很高,mongo 也适合作为信息基础设施的缓存层。在系统重启之后,由 mongo 搭建的持久化缓存可以避免下层的数据源过载。
c) 大尺寸、低价值的数据:使用传统的关系数据库存储一些数据时可能会比较贵,在此之前,很多程序员往往会选择传统的文件进行存储。
d) 高伸缩性的场景:mongo 非常适合由数十或者数百台服务器组成的数据库。
e) 用于对象及 JSON 数据的存储:mongo 的 BSON 数据格式非常适合文档格式化的存储及查询。
f) 重要数据:mysql,一般数据:mongodb,临时数据:memcacheg) 对于关系数据表而言,mongodb 是提供了一个更快速的视图 view;而对于 php 程序而言,mongodb 可以作为一个持久化的数组来使用,并且这个持久化的数组还可以支持排序、条件、限制等功能。
h) 将 mongodb 代替 mysql 的部分功能,主要一个思考点就是:把 mongodb 当作 mysql的一个 view(视图),view 是将表数据整合成业务数据的关键。比如说对原始数据进行报表,那么就要先把原始数据统计后生成 view,在对 view 进行查询和报表。
不适合的场景:
a) 高度事物性的系统:例如银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。
b) 传统的商业智能应用:针对特定问题的 BI 数据库会对产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。
c) 需要 SQL 的问题
d) 重要数据,关系数据
优点:
1)弱一致性(最终一致),更能保证用户的访问速度
2)文档结构的存储方式,能够更便捷的获取数
3)内置 GridFS,高效存储二进制大对象 (比如照片和视频)
4)支持复制集、主备、互为主备、自动分片等特性
5)动态查询
6)全索引支持,扩展到内部对象和内嵌数组
7)与其余nosql数据库相比,MongoDB数据库的第三方支持丰富。(这是与其他的 NoSQL 相比,MongoDB 也具有的优势)
缺点:
1)不支持事务
2)MongoDB 占用空间过大,维护工具不够
以上是关于MongoDB的主要内容,如果未能解决你的问题,请参考以下文章