MongoDB属于NoSQL数据库家族中的一颗明星,据最新的DB使用(http://db-engines.com/en/ranking)排行,MongoDB处于第七的位置,这是NoSQL数据库在此排行中最高的位置。
以下几个问题是对MongoDB的总体认识,阐述了有关Mongo的一些基本概念。
什么是NoSQL数据库?
NoSQL,即NotOnly SQL,是对不同于传统关系型数据库的数据库管理系统的统称。直观上讲,NoSQL数据库没有了“表”的格式,取而代之的是多种多样的存储结构。其中,有比较简单的Key-Value存储(Redis),也有我们要说的MongoDB的文档存储。
至于为何NoSQL会流行起来,大多数人认为是由于传统的关系型数据库在Web2.0网站上的力不从心,尤其是大规模的,高并发的相关应用(如weibo等)。NoSQL数据库在此领域内则比关系型数据库好很多,它虽然没有强的ACID保证,但其对大数据量的处理,高并发的性能都是关系型数据库一直做不好的。
什么是MongoDB?
MongoDB它是一种面向文档的数据库,我们可以简单地将换文档(document)理解为关系型数据库中的行(row)(但实际上,文档比行复杂的多),多个文档构成一个集合(Collection),多个集合构成了一个数据库(DB),一个MongoDB实例上可以有多个数据库,并且他们是相互独立的。Mongo提供了一种灵活的可扩展的数据存储方式,文档采用了BSON的格式,且是无模式的,我们可以在文档中嵌入简单的键值对,或者复杂一些的数组,甚至是另一个文档。
MongoDB具备哪些功能?
索引(辅助索引/全局唯一索引)
可直接在服务端存储JavaScript
聚合
固定集合(集合大小有上限)
文件存储(GridFS)
注意:事务和集合的join操作mongo是没有的。
MongoDB适用于哪些场合?
适合经常读但是写很少的场合,当然分布式相关的应用也非常适合。
从这一点上看,显然时下流行的社交类应用非常适合使用Mongo实现。
而比较著名的mongo应用有SourceForge Allura,视觉中国等。