以前用MySQL数据库,整天都是写大堆大堆的SQL语句,要记住这些SQL关键字都要花好几天时间,写的蛋都爆了,当接触到MongoDB的时候,发现不用写SQL,瞬间觉得高大上,瞬间产生了学习使用它的冲动。
1.MongoDB简介
MongoDB是一种强大,灵活,可扩展的数据存储方式。它扩展了关系型数据库的众多有用功能,如辅助索引,范围查询和排序。MongoDB的功能非常丰富,比如内置的对MapReduce式聚合的支持,以及对地理空间索引的支持。还有很多很多的特点。。。
对于入门级别的人来说,上面说的这些都是浮云,我现在体会不到它的容量,也体会不到它的横向扩展,更体会不到它的速率,这些都是当我们玩到一定的境界才会关心的问题。我单纯觉得它的好处就是非常容易上手,提供了一系列的API,不用写SQL语句。至于它和关系型数据库有什么区别,有哪些优点或者哪些缺点需要怎样改进都是以后的事了。
2.MongoDB的安装
mongodb的官网就有下载,根据系统windows还是linux还是别的下载32位还是64位的,然后解压安装。我是在Linux上安装的,刚开始是在自己的虚拟机上通过root用yum安装的,后来是通过secureCRT连接别的服务器在自己的用户上安装学习的,这样就可以玩自己的mongodb不至于弄挂服务器上面的,但是这样不能通过yum了,源码安装貌似又有很多的软件依赖,所以就在官网上下载了一个linux版的,然后通过SFTP上传到服务器上解压后直接使用。
3.MongoDB的管理
解压完之后进入bin目录,里面都是一些可执行文件,mongo,mongod,mongodump,mongoexport等,后面再说它们的作用吧。
1).启动和停止MongoDB
通过执行mongod来启动MongoDB服务器,mongod有很多的配置启动选项的,可以通过mongod --help来查看,其中有一些主要的选项:
--dbpath:指定数据目录,默认是/data/db/。每个mongod进程都需要独立的目录,启动mongod时就会在数据目录中创建mongod.lock文件,防止其他mongod进程使用该数据目录。
--port:指定服务器监听的端口,默认是27017。
--fork:以守护进程的方式运行MongoDB。
--logpath:指定日志输出路径,如果不指定则会在终端输出。每次启动都会覆盖原来的日志,如果不想覆盖就要用--logappend选项。
--config:指定配置文件,加载命令行未指定的各种选项。我们可以讲我们需要用到的选项写在某个文件中,然后通过该选项来指定这个文件就不必每次启动mongod时都要写。
比如我的配置文件mongodb.conf有如下配置:
port = 9352 #fork = true #为注释 #logpath = mongodb.log dbpath = data/db?
执行mongod启动MongoDB服务器指定配置文件:
[tp0352@server0 bin]$ ./mongod --config mongodb.conf
2014-06-05T17:11:13.118+0800 [initandlisten] MongoDB starting : pid=18077 port=9352 dbpath=data/db 64-bit host=server0.169
2014-06-05T17:11:13.119+0800 [initandlisten] db version v2.6.1
2014-06-05T17:11:13.119+0800 [initandlisten] git version: 4b95b086d2374bdcfcdf2249272fb552c9c726e8
2014-06-05T17:11:13.119+0800 [initandlisten] build info: Linux build14.nj1.10gen.cc 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49
2014-06-05T17:11:13.119+0800 [initandlisten] allocator: tcmalloc
2014-06-05T17:11:13.119+0800 [initandlisten] options: { config: "mongodb.conf", net: { port: 9352 }, storage: { dbPath: "data/db" } }
2014-06-05T17:11:13.246+0800 [initandlisten] journal dir=data/db/journal
2014-06-05T17:11:13.246+0800 [initandlisten] recover : no journal files present, no recovery needed
2014-06-05T17:11:15.333+0800 [initandlisten] preallocateIsFaster=true 20.74
2014-06-05T17:11:17.692+0800 [initandlisten] preallocateIsFaster=true 13.72
2014-06-05T17:11:20.858+0800 [initandlisten] preallocateIsFaster=true 23.86
2014-06-05T17:11:20.858+0800 [initandlisten] preallocateIsFaster check took 7.612 secs
2014-06-05T17:11:20.858+0800 [initandlisten] preallocating a journal file data/db/journal/prealloc.0
2014-06-05T17:11:23.121+0800 [initandlisten] File Preallocator Progress: 492830720/1073741824 45%
2014-06-05T17:11:26.424+0800 [initandlisten] File Preallocator Progress: 681574400/1073741824 63%
2014-06-05T17:11:29.004+0800 [initandlisten] File Preallocator Progress: 964689920/1073741824 89%
2014-06-05T17:11:34.558+0800 [initandlisten] preallocating a journal file data/db/journal/prealloc.1
2014-06-05T17:11:37.089+0800 [initandlisten] File Preallocator Progress: 524288000/1073741824 48%
2014-06-05T17:11:40.090+0800 [initandlisten] File Preallocato