Mongodb FAQ 开发者篇

Mongodb FAQ(开发者篇),是官方文档的翻译。如有翻译不到之处,还请谅解。

1、Mongodb中的命名空间是什么东西?

命名空间是连接数据名称和collection名称的重要桥梁,数据库与collection使用.号分隔。Collection是document的容器,在这个容器中,所有的documents共享一个或多个索引。数据库是一组存储在硬盘上的数据文件的collection的集合(一个数据库对应一个数据文件和命名空间文件)。举例: 名字为acme.users的document, acme是数据库的名称, users 是collection的名称. Collection的名称中可以存在点号,所以acme.user.history是一个合法的名称,(acme是数据库名称 user.history是 collection name)。

2、怎么将一个collection的所有数据复制到另一个collection?

如果是在mongo的shell中,可以使用如下命令。

db.people.find().forEach( function(x){db.user.insert(x)} );

如果是操作系统,也可以考虑使用mongodump和mongorestore命令。

3、如果我将一个document删除掉了,mongodb是否从硬盘上进行了删除?

是的,如果你使用db.collection.remove()删除了一个对象,那么这个对象就从mongodb的磁盘文件中进行了删除。

4、Mongodb什么时候将对一个对象的修改真正写入到磁盘文件?

mongodb定时将更新写入到磁盘文件。默认情况下,mongodb每60秒将更新写入到磁盘,每0.1秒将操作日志记录到日志文件(journal)。这两个默认值是可以在配置文件中进行修改的。

5、怎样控制事务和锁定对象?

mongodb不支持像传统数据库那样的对象锁和可以回滚的事务控制。Mongodb的目标是提供轻量级,更快和可预见的高性能(predictable in its performance)服务,这和mysql的MyISAM自动提交引擎很相似。通过保持事务的尽量简单,mongodb的性能特别好,特别是当使用分区(partitioned)和复制(replicated)等特性的时候,性能将得到极大提高。

6、Mongodb的聚合功能是怎样的?

在mongodb2.1以后,mongodb提供了专门的聚合框架提供对数据的常规聚合统计。Mongodb同时也支持map-reduce方式的计算。

7、为什么Mongodb打印那么的“connection accepted”事件的日志?

如果你看到大量建立连接或者重新连接的日志。这通常是因为客户端没有使用连接池技术引起的,比如客户端使用的是CGI。如果这样连接数据不影响你Mongodb的性能,你可以使用quiet参数把这些日志信息禁用掉。

8、为什么mongodb的数据文件这么大?

mongodb使用预分配空间的方式管理数据文件,这样可以避免系统碎片。你可以使用smallfiles参数,减少预分配的空间大小。

对这类话题感兴趣?欢迎发送邮件至 [email protected]
关于我:邯郸人,擅长Java,Javascript,Extjs,oracle sql。
更多我之前的文章,可以访问  我的空间

猜你喜欢

转载自donlianli.iteye.com/blog/1900634
FAQ
今日推荐