`
tomcat_oracle
  • 浏览: 317555 次
社区版块
存档分类
最新评论

28个MongoDB NoSQL数据库的面试问答

 
阅读更多

MongoDB是目前最好的面向文档的免费开源NoSQL数据库。如果你正准备参加 MongoDB NoSQL数据库的技术面试,你最好看看下面的MongoDB NoSQL面试问答。这些MongoDB NoSQL面试问答涵盖了NoSQL数据库基本的概念,复制(Replication),分片(Sharding),事务和锁,跟踪分析工具 (Profiler),Nuances和日志等特性。让我们看看下面的这些MongoDB NoSQL数据库的面试问答吧:

 

  1. 你说的NoSQL数据库是什么意思?NoSQL与RDBMS直接有什么区别?为什么要使用和不使用NoSQL数据库?说一说NoSQL数据库的几个优点?

 

  

  2. NoSQL数据库有哪些类型?

例如:MongoDB, Cassandra, CouchDB, Hypertable, Redis, Riak, Neo4j, HBASE, Couchbase, MemcacheDB, RevenDB and Voldemort are the examples of NoSQL databases. 

 

  3. MySQL与MongoDB之间最基本的差别是什么?

  MySQL和MongoDB两者都是免费开源的数据库。MySQL和MongoDB有许多基本差别包括数据的表示(data representation),查询,关系,事务,schema的设计和定义,标准化(normalization),速度和性能。通过比较MySQL 和MongoDB,实际上我们是在比较关系型和非关系型数据库。

 

  4. 你怎么比较MongoDB、CouchDB及CouchBase?

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

 

  5. MongoDB成为最好NoSQL数据库的原因是什么?

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

  • 面向文件的

  • 高性能

  • 高可用性

  • 易扩展性

  • 丰富的查询语言

 

  6.32位系统上有什么细微差别?

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

 

  7. journal回放在条目(entry)不完整时(比如恰巧有一个中途故障了)会遇到问题吗?

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

 

  8. 分析器在MongoDB中的作用是什么?

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

9. 名字空间(namespace)是什么?

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

 

  10. 如果用户移除对象的属性,该属性是否从存储层中删除?

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

 

  11. 能否使用日志特征进行安全备份?

是的。

 

  12. 允许空值null吗?

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

 

  13. 更新操作立刻fsync到磁盘?

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

 

  14. 如何执行事务/加锁?

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

 

  15. 为什么我的数据文件如此庞大?

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

 

  16. 启用备份故障恢复需要多久?

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

 

  17. 什么是master或primary?

它是当前备份集群(replica set)中负责处理所有写入操作的主要节点/成员。在一个备份集群中,当失效备援(failover)事件发生时,一个另外的成员会变成primary。

 

  18. 什么是secondary或slave?

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

 

  19. 我必须调用getLastError来确保写操作生效了么?

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

 

  20. Should I start out with sharded or with a non-sharded MongoDB environment? 我应该启动一个集群分片(sharded)还是一个非集群分片的 MongoDB 环境?

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

 

  21. 分片(sharding)和复制(replication)是怎样工作的?

每一个分片(shard)是一个分区数据的逻辑集合。分片可能由单一服务器或者集群组成,我们推荐为每一个分片(shard)使用集群。

 

  22. 数据在什么时候才会扩展到多个分片(shard)里?

MongoDB 分片是基于区域(range)的。所以一个集合(collection)中的所有的对象都被存放到一个块(chunk)中。只有当存在多余一个块的时候,才会有多个分片获取数据的选项(Only when there is more than 1 chunk is there an option for multiple shards to get data.)。现在,每个默认块的大小是 64Mb,所以你需要至少 64 Mb 空间才可以实施一个迁移。

23. 当我试图更新一个正在被迁移的块(chunk)上的文档时会发生什么?

更新操作会立即发生在旧的分片(shard)上,然后更改才会在所有权转移(ownership transfers)前复制到新的分片上。

 

  24. 如果在一个分片(shard)停止或者很慢的时候,我发起一个查询会怎样?

如果一个分片(shard)停止了,除非查询设置了“Partial”选项,否则查询会返回一个错误。如果一个分片(shard)响应很慢,MongoDB则会等待它的响应。

 

  25. 我可以把moveChunk目录里的文件删除吗?

没问题,这些文件是在分片(shard)进行均衡操作(balancing)的时候产生的临时文件。一旦这些操作已经完成,相关的临时文件也应该被删除掉。但目前清理工作是需要手动的,所以请小心地考虑再释放这些文件的空间。

 

  26. 我怎么查看 Mongo 正在使用的链接?

db._adminCommand("connPoolStats");

 

  27. 如果块移动操作(moveChunk)失败了,我需要手动清除部分转移的文档吗?

不需要,移动操作是一致(consistent)并且是确定性的(deterministic);一次失败后,移动操作会不断重试;当完成后,数据只会出现在新的分片里(shard)。

 

  28. 如果我在使用复制技术(replication),可以一部分使用日志(journaling)而其他部分则不使用吗?

 

可以。

6
0
分享到:
评论

相关推荐

    noSql数据库面试题整理.zip

    非关系型数据库(NoSQL)近年来在大数据处理和分布式系统中扮演了重要角色,与传统的关系型数据库相比,NoSQL数据库提供了更高的可扩展性、灵活性和性能。本资料主要聚焦于MongoDB、Redis和Memcached这三种常见的...

    28个MongoDB经典面试题详解

    如果你正准备参加MongoDB NoSQL数据库的技术面试,你最好看看下面的MongoDB NoSQL面试问答。 这些MongoDB NoSQL面试问答涵盖了NoSQL数据库基本的概念,复制(Replication),分片(Sharding),事务和锁,跟踪分析工具...

    MongoDB面试专题.pdf

    关系型数据库如MySQL依赖于严格的表结构和数据间的关系,而NoSQL数据库如MongoDB则使用更为灵活的数据模型,例如文档存储可以使用JSON或BSON(MongoDB的二进制形式)格式存储数据。NoSQL数据库通常更容易水平扩展,...

    MongoDB面试专题

    1.MongoDB 成为最好 NoSQL 数据库的原因是什么? 2.NoSQL 数据库有哪些类型? 3.MySQL 与 MongoDB 之间最基本的差别是什么? 4.你怎么比较 MongoDB、CouchDB 及 CouchBase? 5.分析器在 MongoDB 中的作用是什么? 6.什么...

    Java开发面试-MongoDB专区

    首先,MongoDB是一个开源的NoSQL数据库,它以文档的形式存储数据,并采用类似JSON的BSON格式。在面试中,面试官可能会问到MongoDB的基本概念和特点,例如文档、集合、数据库、索引等,以及与传统关系型数据库的区别...

    MongoDB 24 道面试题及答案.docx

    MongoDB 是一个基于文档的 NoSQL 数据库,使用 BSON(Binary Serialized Object Notation)存储数据。BSON 是一种类似 JSON 的二进制文件,由键值对组成。 MongoDB 的数据模型由以下四个层次组成: 1. 文档...

    2024-25 互联网大厂资深自动化测试&测试开发面试精选面试题之-MySQL:Mongodb数据库面试题.pdf

    介绍:详述MySQL和MongoDB在测试开发中的常见面试题,涵盖数据库设计和优化等关键概念。 标签:#MySQL #MongoDB #数据库 #面试题 #SQL #NoSQL #查询优化 #索引 #数据迁移 #ACID

    MongoDB面试专题及答案.pdf

    MongoDB面试专题及答案.pdf 本文档总结了 MongoDB 相关的知识点,涵盖了 NoSQL 数据库的定义、类型、特点、优点、应用场景、与 RDBMS 的差别、MongoDB 的特点、优势、限制等。 NoSQL 数据库 NoSQL 数据库是一种非...

    2021Java字节跳动面试题——面向字节_MongoDB.pdf

    #### 知识点二:NoSQL数据库的类型 - NoSQL数据库根据其存储数据的方式不同,大致可以分为四种主要类型: - **键值数据库**:如Redis,主要用于缓存和会话管理。 - **文档数据库**:如MongoDB、CouchDB,用于存储...

    数据库面试题集

    这份"数据库面试题集"涵盖了数据库理论、SQL语言、数据库设计、性能优化和事务管理等多个方面,对于准备数据库相关的面试或者提升自己的数据库技能都有极大帮助。 1. **数据库基础** - 数据库的类型:关系型数据库...

    数据库面试经典试题!!

    本资料集合了互联网上被广泛讨论的数据库面试经典试题,旨在帮助求职者更好地准备数据库相关的面试。 1. 数据库基本概念 - 数据库(Database):存储和管理数据的系统,提供数据的组织、存储、检索、更新和删除等...

    JAVA,数据库面试题集锦

    7. **NoSQL与关系型数据库对比**:理解NoSQL数据库的优势和应用场景,比如MongoDB、Redis等。 8. **数据库安全**:用户权限管理、SQL注入防御、数据备份与恢复策略等。 通过阅读"数据库笔试题汇总.doc"和"Java面试...

    数据库面试相关

    例如,MySQL适合小型到中型应用,Oracle适用于大型企业级应用,MongoDB是NoSQL数据库,适合处理半结构化或非结构化数据。 总的来说,这个Xmind文件应该涵盖了这些关键点,并可能进一步细化到具体题型,如数据库设计...

Global site tag (gtag.js) - Google Analytics