MongoDB 初探

    什么是MongoDB? 为什么要使用类似mongodb的nosql数据库?

     MongoDB是一个基于分布式文件存储的数据库开源项目。由C++语言编写,旨在为WEB应用提供可护展的高性能数据存储解决方案。它的特点是可扩展,高性能,易使用,模式自由,存储数据非常方便等。 它与我们平常所使用的那种关系型数据库有很大的不同,MongoDB是基于文档(Documents)存储的,Document相当于关系型数据中的每一行的条目,而MongoDB的每个集合(Collection)相当于关系型数据库中的表。MongoDB中Collection之间没有关系型数据库那种很强的关联,所以MongoDB存储相对独立,并且它是一种数据冗余的存储方式,用以加快数据的查询。

  Mongo数据主要特性有:

1    面向文档存储:(类JSON数据模式简单而强大)。
2    高效的传统存储方式:支持二进制数据及大型对象(如照片和视频)。
3    复制及自动故障转移:Mongo数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。
4    Auto-Sharding自动分片支持云级扩展性(处于早期alpha阶段):自动分片功能支持水平的数据库集群,可动态添加额外的机器。
5    动态查询:它支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
6    全索引支持:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。
7    支持RUBY,PYTHON,JAVA,C++,PHP等多种语言。
  适用场景:
1    适合实时的插入,更新与查询,并具备应用程序实时数据存储所需的复制及高度伸缩性。
2    适合作为信息基础设施的持久化缓存层。
3    适合由数十或数百台服务器组成的数据库。因为Mongo已经包含对MapReduce引擎的内置支持。
4    Mongo的BSON数据格式非常适合文档化格式的存储及查询。

  不适用场景:
1    高度事务性的系统。
2    传统的商业智能应用。
3    极为复杂的SQL查询。

   MongoDB 与 CAP理论

   图片2

 

 

MongoDB的核心理论就是Document,它是由一个键值对集合构成的,就像是一个HashMap,或是字典。它的存储格式类似一个json,

{“username”: “Peter”, “age”: 10 }

MongoDB中的Collection表示一组documents。并且Collection是schema-free的,也就是说没有严格的格式限制,可以随意插入各种不同格式和类型的document。

例如一个Collection中可以包含

{“username”: “Peter”}

{“username”: “Peter”, “age”: 10 }

{“password”: 11111}

{“scorelist”: [{“math”:90 } , {“english”:100 }]}   复杂的包含数组类型的数据

MongoDB中的DataBase用于聚集Collection ,一个MongoDB实例可以host多个Database,而每个database可以认为是完全独立的,类似于SqlServer数据库可以通过host多个数据库一样。

关于MongoDB的其他内容,都可以在一本叫做《MongoDB权威指南》的书中找到。而且Mongo的官网,就提供了MongoDB的快速入门 等资料,通俗易懂,很容易学习。

关于Nosql的个人理解:

      Nosql并不是No sql ,而应该更合理地解释为not only sql 或是非关系型数据库。传统的关系型数据库,强化了关系的概念。随着目前互联网应用规模的迅速膨胀,传统的存储模型出现了很多性能瓶颈,很多跨表、跨库、跨物理机器的查询导致数据查询的效率降低。 而nosql数据库,则淡化了关系的概念,通过可能造成数据冗余的代价使得数据存储相对独立,无需交叉查询 ,这也使得Nosql数据库具有了很好的扩展性,因为数据存储相对独立,扩展着实十分方便。并且Nosql数据库普遍具有非常高的读写能力,尤其是大数据量下,这都得益于无关系性和数据库存储结构简单的特性。但是不存在nosql和传统关系型数据库谁好谁差的概念,它们各自存在优缺点,不同场景进行不同的应用,让关系数据库关注在关系上,nosql关注在存储上。

posted @ 2011-11-06 21:25  糖拌咸鱼  阅读(2963)  评论(0编辑  收藏  举报