日期:2014-05-16  浏览次数:20477 次

MongoDB介绍及安装
What's MongoDB?

为了阐明MongoDB的概念,这里首先引用MongoDB的官方描述'MongoDB is an open-source document database, and the leading NoSQL database.',直译过来就是:MongoDB是开源的文档数据库,一个领先的NoSQL数据库(感觉挺NB的).采用C++开发,MongoDB具有面向文档存储(具有动态模式(Schema)JSON风格文档),完善的索引支持,复制及高可用性,自动分片(分布式存储),丰富的查询能力,快速就地更新,支持Map/Reduce(用于数据聚合及处理),提供GridFS(用于存储文件)等特性.总之一句话,MongoDB是一个用来存储,管理类JSON风格数据的数据库管理系统。

MongoDB有什么用?

一般情况下,开发一个Web应用程序通常选用关系型数据库如MySQL,Oracle来保存业务数据.我们习惯了使用SQL操作数据,ORM框架,数据库事务保证关键业务,而且关系型数据库经过多年的应用已十分成熟.为什么又冒出来个MongoDB?它到底有什么特异功能?MongoDB的设计目标是提供高读写吞吐量,高伸缩性和高可用性,采用灵活的数据模型(不同于关系型数据库需要提前定义数据库模式(Scheam),MongoDB是无模式的)可用于存储任意结构数据,从数据模型来说MongoDB适合存储数据模型定义不明确或变动不由自己控制的数据(如互联网日志,Web Service返回数据);MongoDB天生支持分布式存储(能自动对数据进行分片分布式存储),可用于存储海量数据(而关系型数据库在水平扩展方面要逊色很多);由于MongoDB不支持事务所以在将其应用于关键业务数据时需谨慎;综合MongoDB的优劣势,MongoDB适用于海量,非(半)结构化,非关键业务的数据存储(是不是听起来有点耳熟,大量互联网应用的数据都具有这些特点,所以也可以说MongoDB是一款为Web应用和互联网设计的数据库管理系统)。

MongoDB的基本术语

为了更清楚阐述MongoDB的基本术语,下面通过与关系型数据库对应的概念进行比较:

SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins