针对MongoDB的一些常用操作的公共类 分享地址 http://www.open-open.com/lib/view/open1325153696014.html
推荐三个学习mongodb的三个地方:《MongoDB权威指南》、《MongoDB管理与开发精要》、NoSQL FANS。
1、MySQL的数据存储结构
MySQL的每个数据库都对应存放在一个与数据库同名的文件夹中,MySQL数据库文件包括MySQL所建数据库文件和MySQL所用存储引擎创建的数据库文件。
MySQL如果使用MyISAM存储引擎,数据库文件类型就包括.frm、.MYD、.MYI
MySQL如果使用InnoDB存储引擎,数据库文件类型就包括.frm、ibdata1、.ibd
2、MongoDB的数据存储结构
MongoDB对国内用户来说比较新, 它就像是一个黑盒子,但是如果对于它内部的数据存储了解多一些的话,那么将会很快的理解和驾驭MongoDB,让它发挥它更大的作用。
MongoDB的默认数据目录是/data/db,它负责存储所有的MongoDB的数据文件。在MongoDB内部,每个数据库都包含一个.ns文件和一些数据文件,而且这些数据文件会随着数据量的增加而变得越来越多。所以如果系统中有一个叫做foo的数据库,那么构成foo这个数据库的文件就会由foo.ns,foo.0,foo.1,foo.2 等等组成,具体如下:
- [root@localhost db]# ll /data/db/
- 总计 196844
- -rw------- 1 root root 16777216 04-15 16:33 admin.0
- -rw------- 1 root root 33554432 04-15 16:33 admin.1
- -rw------- 1 root root 16777216 04-15 16:33 admin.ns
- -rw------- 1 root root 16777216 04-21 17:30 foo.0
- -rw------- 1 root root 33554432 04-21 17:30 foo.1
- -rw------- 1 root root 67108864 04-21 17:30 foo.2
- -rw------- 1 root root 16777216 04-21 17:30 foo.ns
- -rwxr-xr-x 1 root root 6 04-21 17:16 mongod.lock
- -rw------- 1 root root 16777216 04-15 16:30 test.0
- -rw------- 1 root root 33554432 04-15 16:30 test.1
- -rw------- 1 root root 16777216 04-15 16:30 test.ns
- drwxr-xr-x 2 root root 4096 04-21 17:30 _tmp
- [root@localhost db]#
MongoDB内部有预分配表空间的机制,每个预分配的文件都用0进行填充,由于有了这个机制, MongoDB始终保持额外的空间和空余的数据文件,从而有效避免了由于数据暴增而带来的磁盘压力过大的问题
3MongoDB的索引方式和传统的关系数据库一样,同样,正确的使用索引可以提高查询的速度,在MongoDB中索引可以通过调用hint()函数强制使用。
另外,MongoDB还支持存储函数过程,通过将函数保存在数据库中,使得在操作数据库的时候减小工作量以及网络IO。并且MongoDB可以通过命令行的操作方式,在mongo命令后面直接指定一个.js文件,即可直接返回在mongo中的操作结果。