以文件为导向的数据库系统MongoDB详细描述了一个面向文档的数据库系统。用C++编写,不支持SQL,但是有自己强大的查询语法。
MongoDB将BSON用作数据存储和传输格式。BSON是一个类似于JSON的二进制序列化文档,它支持嵌套对象和数组。
1.MongoDB与MySQL非常相似,文档对应MySQL的row,collection对应MySQL的表应用场景:
1.网址数据:
mongo非常适合实时插入、更新和查询,以及复制和对网站实时数据存储的要求,以及高度的扩展。
2.Cache:
mongo还可以用来作为信息基础设施的高速缓存层。当系统重新启动后,mongo构建的持久缓存就能避免底层数据源超载。
3.大号.低价值数据:
用传统的关系数据库存储某些数据可能会更加昂贵,以前,许多程序员倾向于选择传统的文件来存储。
4.高扩展性情形:
mongo对于包含几十个或几百个服务器的数据库来说是完美的。
5.对象存储和JSON数据:
mongo的BSON数据格式很适合进行文档格式化存储和查询。
6.关键数据:
mysql,通用数据:mongodb,临时数据:memcache对于关系数据表来说,mongodb是一种更快的视图视图;对于PHP程序来说,mongodb可以被用作一个持久数组,这个持久数组也能够支持诸如排序.条件.限制之类的特性。
将mongodb作为mysql的一部分,主要考虑点是:使用mongodb作为mysql的view(view),view是将表数据集成为业务数据的关键。比方说报告的原始数据是原始数据,那么首先要将原始数据统计后生成view,在视图上进行查询和报告。非合适场景:
1.具有很高价值的系统:如银行或会计系统。目前,对于需要大量原子性复杂事务的应用来说,传统的关系型数据库仍然比较适合。
2.传统的业务智能应用:针对特定问题的BI数据库将产生高度优化的查询方式。对这些应用来说,数据仓库可能是更合适的选择。
3.SQL是必需的。
4.重要数据、关系数据。
优点:
1)弱一致性(最终是一致的),更能确保用户的访问速度。
2)如何存储文档结构,使访问次数更加方便。
3)内建GridFS,有效存储大型二进制对象(如照片和视频)
4)支持复制集.主-主-主-主-主-主-自动分割。
5)动态查询。
6)全索引支持,可扩展到内部对象和内嵌阵列。
缺点:
1)交易没有支持。
2)MongoDB占用了太多的空间,维护工具不完善。