28个MongoDB经典面试题详解

  

  

  

  

  

  

NoSQL是非关系型数据库,NoSQL=不仅SQL。

  

关系型数据库采用的结构化的数据,NoSQL采用的是键值对的方式存储数据。

  

在处理非结构化/半结构化的大数据时;在水平方向上进行扩展时,随时应对动态增加的数据项时可以优先考虑使用NoSQL数据库。

  

在考虑数据库的成熟度;支持,分析和商业智能;管理及专业性等问题时,应优先考虑关系型数据库。

  

  

NoSQL数据库的类型

  

例如:MongoDB,卡桑德拉,CouchDB, Hypertable,复述,Riak, Neo4j, HBASE,他,MemcacheDB RevenDB,伏地魔是NoSQL数据库的例子。详细阅读。

  

  

MySQL和MongoDB两者都是免费开源的数据库.MySQL和MongoDB有许多基本差别包括数据的表示(数据表示),查询,关系,事务,模式的设计和定义,标准化(标准化),速度和性能。

  

通过比较MySQL和MongoDB,实际上我们是在比较关系型和非关系型数据库,即数据存储结构不同。详细阅读

  

  

MongoDB和CouchDB都是面向文档的数据库.MongoDB和CouchDB都是开源NoSQL数据库的最典型代表。除了都以文档形式存储外它们没有其他的共同点.MongoDB和CouchDB在数据模型实现,接口,对象存储以及复制方法等方面有很多不同。

  

细节可以参见下面的链接:

  

MongDB vs CouchDB   

CouchDB vs他   

  

以下特点使得MongoDB成为最好的NoSQL数据库:

  
      <李>面向文件的李   <李>高性能李   <李>高可用性李   <李>易扩展性李   <李>丰富的查询语言李   
  

  

日志会激活额外的内存映射文件。这将进一步抑制32位版本上的数据库大小,因此,现在日志在32位系统上默认是禁用的。

  

  

每个杂志(集团)的写操作都是一致的,除非它是完整的否则在恢复过程中它不会回放。

  

  

MongoDB中包括了一个可以显示数据库中每个操作性能特点的数据库分析器。通过这个分析器你可以找到比预期慢的查询(或写操作),利用这一信息,比如,可以确定是否需要添加索引。

  

  

MongoDB存储BSON对象在丛集(集合)中。数据库名字和丛集名字以句点连结起来叫做名字空间(名称空间).

  

  

是的,用户移除属性然后对象会重新保存(重新保存()).

  

  

是的。   

  

对于对象成员而言,是的。然而用户不能够添加空值(空)到数据库丛集(集合)因为空值不是对象。然而用户能够添加空对象{}。

  

  

不会,磁盘写操作默认是延迟执行的。写操作可能在两三秒(默认在60秒内)后到达磁盘。例如,如果一秒内数据库收到一千个对一个对象递增的操作,仅刷新磁盘一次。(注意,尽管fsync选项在命令行和经过getLastError_old是有效的)(译者:也许是坑人的面试题& # 63;& # 63;)。

  

  

MongoDB没有使用传统的锁或者复杂的带回滚的事务,因为它设计的宗旨是轻量,快速以及可预计的高性能。可以把它类比成MySQL MylSAM的自动提交模式。通过精简对事务的支持,性能得到了提升,特别是在一个可能会穿过多个服务器的系统里。

  

  

MongoDB会积极的预分配预留空间来防止文件系统碎片。

  

  

从备份数据库声明主数据库宕机到选出一个备份数据库作为新的主数据库将花费10到30秒时间。这期间在主数据库上的操作将会失败,包括写入和强一致性读取(强一致读)操作。然而,你还能在第二数据库上执行最终一致性查询(最终一致的查询)(在slaveOk模式下),即使在这段时间里。

  

  

它是当前备份集群(副本集)中负责处理所有写入操作的主要节点/成员。在一个备份集群中,当失效备援(故障转移)事件发生时,一个另外的成员会变成初选。

  

  

Seconday从当前的主要上复制相应的操作。它是通过跟踪复制oplog (local.oplog.rs)做的到的。

  

  

不用。不管你有没有调用每个盘(又叫“安全模式”)服务器做的操作都一样。调用每个盘只是为了确认写操作成功提交了。当然,你经常想得到确认,但是写操作的安全性和是否生效不是由这个决定的。

  

  

为开发便捷起见,我们建议以非集群分片(unsharded)方式开始一个MongoDB环境,除非一台服务器不足以存放你的初始数据集。从非集群分片升级到集群分片(分片)是无缝的,所以在你的数据集还不是很大的时候没必要考虑集群分片(分片)。

28个MongoDB经典面试题详解