一、linux平台的安装
1
2
3
4
5
6
7
|
wget http:
//fastdl
.mongodb.org
/linux/mongodb-linux-x86_64-2
.4.8.tgz
tar
-zxvf mongodb-linux-x86_64-2.4.8.tgz
#创建数据存放目录和日志目录
/data/db
/data/log/mongo
.log
#启动mongod服务进程 --fork后台运行
/mongodb/bin/mongod
--dbpath=
/data/db
--logpath=
/data/log/mongo
.log --fork
|
然后可以进入mongodb客户端进行测试了
1
|
/mongodb/bin/mongo
|
二、数据逻辑结构
MongoDB的文档document相当于关系数据库中的一行记录。
多个文档组成一个集合collection相当于关系数据库的表。
多个集合collection逻辑上组织在一起就是数据库database。
一个MongoDB实例支持多个数据库database。
文档(document)、集合(collection)、数据库(database)的层次结构如下图:
对于习惯了关系型数据库的朋友们我将MongoDB与关系型数据库的逻辑结构进行了对比
以便让大家更深刻的理解MongoDB的逻辑结构
MongoDB的默认数据目录是/data/db它负责存储所有的MongoDB的数据文件。在MongoDB
内部每个数据库都包含一个.ns文件和一些数据文件而且这些数据文件会随着数据量的
增加而变得越来越多。所以如果系统中有一个叫做test的数据库那么构成test这个数据库
的文件就会由test.nstest.0test.1test.2等等组成具体如下:
数据库的每张表都对应一个命名空间每个索引也有对应的命名空间。这些命名空间的元数
据都集中在*.ns文件中。
MongoDB内部有预分配空间的机制每个预分配的文件都从*.0开始由于有了这个机
制,MongoDB始终保持额外的空间和空余的数据文件从而有效避免了由于数据暴增而带来
的磁盘压力过大的问题。
由于表中数据量的增加数据文件每新分配一次它的大小都会是上一个数据文件大小的2
倍所以我们看到test.1的大小是test.0的2倍。每个数据文件最大2G。这样的机制有利于防止较小的数据库浪费过多的磁盘空间同时又能保证较大的数据库有相应的预留空间使用。
当命名空间需要分配新的文件的时候都会先检查是否有已经删除的大小合适的盘区可以使用这样就回收空闲的磁盘空间了。
本文转自shayang8851CTO博客,原文链接:http://blog.51cto.com/janephp/1322407,如需转载请自行联系原作者