Mongodb FAQ fundamentals(基础篇)

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

1、Mongdb 是什么数据库?

mongodb 是一个面向文档(document)的数据库,既不支持表连接,也不支持事务。主从复制,故障自动转移,内建的水平扩展是 mongodb 的几个主要特性。同时还支持二级索引,表达式查询语言,基于文档的原子写操作,一致性读取。

 

2、Mongdb 有表吗?

mongodb 的 collections 和 RMDB 的 table 的两个重要区别。一是你可以只向一些 document 添加某一列的属性,而不用将 collection 里面的所有 document 都增加列属性。二是 Documents in a single collection may have unique combination and set of fields. Documents need not have identical fields,

 

3、mongodb 一般用作什么?

mongodb 设计的主要目的是为了处理大规模数据 (大数据处理),例如内容管理系统,移动应用,游戏,电商等。请不要用 mongodb 来管理那些需要 sql,表连接和多对象事务处理的操作。

 

4、mongodb 支持事务吗?

不支持 ACID 事务,但是 mongodb 支持一些基本的事务,比如文档的原子操作。那就是说,我们可以将一个 document 的两个属性同时进行更新,这个操作要不都完成,要不都不完成,前提是这两个属性都是一个文档。另外,mongodb 还能保证修改能够持久化(即 ACID 中的 D),为了使用 mongodb 的这个特性,必须开启 journaling,这个特性仅在 64 的版本默认是开启的,You must also issue writes with a write concern of {j: true} to ensure that the writes block until the journal has synced to disk.

 

5、运行 mongodb 需要很大的内存吗?

不是必须的,mongodb 可以运行在内存很小的机器上。Mongodb 将使用系统的所有的可用内存作为他的缓存,系统资源管理器显示 mongodb 占满了系统的所有内存,但 mongodb 会动态的改变这种情况,如果另外一个程序向操作系统申请内存,则 mongodb 会给另外的进程腾出内存供别的进程使用。

 

6、如何配置 mongodb 的缓存?

不需要配置,mongodb 将使用尽可能多的内存作为缓存,这个跟 OS 缓存文件的方法是一样的。

 

7、Mongodb 的写操作是立即写入磁盘还是延迟写入?

写操作将在 100 毫秒之内写入物理磁盘的日志文件,At that point, the write is “durable” in the sensethat after a pull-plug-from-wall event, the data will still be recoverable after a hard restart。因为日志文件几乎是立即被持久化,因此真正写入数据文件方式是延迟写入。mongodb 真正的写入数据文件甚至会延迟 1 分钟。但这并不会影响到数据的持久性,因为日志文件已经记录了足够的信息使 mongodb 即便崩溃,也能把数据恢复。

 

8、Mongodb 是否有独立的缓存来应付应用级别的缓存?

木有。

 

9、Mongodb 是否有使用缓存?

是的,mongodb 会把最近使用的数据都放在内存里面,如果你为某些数据创建了索引,并且这些索引数据在内存里面,则 mongodb 将直接从内存进行对索引进行查询。Mongodb 不使用查询缓存,mongodb 总是直接从索引或者数据文件中查询数据。

 

10、Mongodb 是用什么语言写的?

c++。客户端驱动则可能是 java,php 等。

 

11、32 位版 mongodb 有什么限制?

mongodb 使用内存映射文件,当使用 32 位 mongodb 时,这种文件的大小被限制在 2G,包括数据文件和索引文件。因为 mongodb 被用来处理大数据量,所以千万不要在生产环境部署 32 版 mongodb。而 64 位版本却不存在这样的问题。

 

 

 

 

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