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   表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键

通过以上对比可看出MongoDB相对传统关系型数据库在基本概念上并未有太多变化,关键区别在于二者在应用定位上各有侧重.

安装运行MongoDB

MongoDB支持绝大多数32-bit, 64-bit平台,安装MongoDB非常简单,既可以通过包管理系统(YUM, APT)安装也可以下载编译好的软件包后手动解压安装,笔者的Linux系统是64-bit Ubuntu系统.
首先,在这里下载最新稳定版,解压到/usr/local/mongodb24

启动MongoDB

先创建数据保存目录 mkdir -p /data/db(MongoDB默认将数据保存在/data/db文件夹中,可通过--dbpath改变数据文件夹)
cd ./bin
./mongod
可以添加如下启动命令选项:
--dbpath:修改数据存放位置
--logpath:日志文件
--port:MongoDB服务端口默认27017
--rest:开启服务器Web控制台REST接口
--fork:将进程运行为后台进程

使用MongoDB

通过mongo shell对MongoDB进行操作
./bin
./mongo
连接到MongoDB,进行各种操作,Enjoy yourself!

总结

本文简要阐述了MongoDB的基本概念,应用场景,基本术语和安装,是笔者依据官方文档和实际工作中使用MongoDB的经验总结;

猜你喜欢

转载自warm-breeze.iteye.com/blog/1915955