MongoDB,现在开源社区里越来越受到关注的一个NoSQL产品,按照官方的说法,是一个可扩展的、高性能的、开源的、面向文档的数据库。Craigslist、foursquare、国内的淘宝网等知名互联网公司都有在他们的生产环境部署了MongoDB。
一、MongoDB简介
mongodb是用C++开发的面向文档的数据库,也就是反传统的数据库范式来设计的,把相关的对象都记录到一个文档里,每个文档内是schema-free的,也就是列名可以自由定义,比较灵活,特别是面对业务逻辑多变的应用场景十分给力。数据以BSON(类似JSON)的格式二进制存储。不好的地方就是可能带来一定的数据冗余和存储开销。
很明显,MongoDB这种面向文档的数据库和传统的关系型数据库的设计思路是差别很大的,因为每个文档都包含了所有信息,和其他文档是没有关联的,这样传统的Join操作就完全没必要了,也正是因为去除了这种“关系”,使得MongoDB的水平拆分更加容易,这也是面对海量数据的一个很好的处理思路。另外,MongoDB的索引机制和MySQL等数据库是一样的,可以利用传统的关系型数据库的经验来使用MongoDB的索引。
不像其他很多NoSQL产品由个别工程师根据应用场景开发出来,MongoDB是有一个专门的公司10gen来维护。有一点要注意的是,MongoDB自己是不管理的,无法指定大小,完全交给来管理,因此有时候是不可控的,在生产环境使用必须在OS层面监控内存使用情况。
二、MongoDB安装
MongoDB的源码安装用了很多第三方的东西,比如JS引擎(目前官方推荐的是mozilla的Spider Monkey,以后可能改成google的V8,和node.js一样,呵呵)、正则表达式引擎(pcre)、安装构建工具scons(这东西还要用python来安装)、boost C++库等等。下面是安装过程:
1、下载需要的源文件和相关软件包
下面是下载地址:(选择适合自己的版本)
Spider Monkey:
Pcre:
Scons:
Boost:
Mongodb:(这里注意下载源码,而不是对应的操作系统,本人就是由于下载了linux 64位的导致后面安装一直没有成功,耗了一天时间才找到原来包下错了)
2、安装Spider Monkey(*为软件包的版本号)
# tar -zxvf js-*.*.*.tar.gz
# cd js/src
# export CFLAGS="-DJS_C_STRINGS_ARE_UTF8"
# make -f Makefile.ref
# JS_DIST=/usr make -f Makefile.ref export
3、安装pcre
# tar -zxvf pcre-*.*.tar.gz
# cd pcre-*.*
# ./configure
# make
# make install
4、安装scons
#tar -zxvf scons-*.*.*.tar.gz
# cd scons-*.*.*
# python setup.py install
5、安装boost
#tar -zxvf boost_*.*.*.tar.gz
#cd boost_*_*_*
#./bootstrap.sh
#./bjam install
#./bjam stage
#./bjam –without-python –layout=tagged variant=debug,release link=static,shared runtime-link=shared threading=multi stage
之前安装boost时不知道为什么我通过源码编译安装boost一直不成功,搞了一天时间仍不行,最后没有办法在新立得下安装的:
搜索libboost,将符合的软件包标记安装,有同样经历的可以试试。
6、安装mongodb
#tar -zxvf mongodb-src-x*_*-*.*.*.tar.gz
# cd mongodb-src-x*_*-*.*.*
# scons all
# scons --prefix=/usr/local/mongodb --full install
7、配置mongodb
创建/data/db文件夹作为数据库文件存放目录
#mkdir -p /data/db
确保用户对文件夹有写权限
#chown -R $user:$user /data/db ($user为你的用户名)
为了方便,设置环境变量,修改profile文件
#vim /etc/profile 在文件最后一行加入: export PATH="$PATH:/usr/local/mongodb/bin"8、启动mongodb
$mongodb
最后推荐大家一部学习资料: