20K以上so easy的面试题-MongoDB

20K以上so easy的面试题-MongoDB
最新回答
搁浅

2020-09-25 22:54:30

20K以上面试题-MongoDB解答

1. MongoDB的优势有哪些?

MongoDB具有以下显著优势:

  • 面向集合和文档的存储:MongoDB以JSON格式的文档保存数据,使得数据结构更加灵活,易于理解和使用。
  • 高性能:支持Document中嵌入Document,减少了数据库系统上的I/O操作,同时具有完整的索引支持,支持快速查询。
  • 高效的传统存储方式:支持二进制数据及大型对象,满足多样化的数据存储需求。
  • 高可用性:通过数据复制集,MongoDB数据库支持服务器之间的数据复制,提供自动故障转移,确保数据的高可用性。
  • 高可扩展性:支持分片(sharding),能够将数据分布在多个数据中心,实现水平扩展,满足大规模数据存储和访问需求。
  • 丰富的查询功能:提供聚合管道、全文搜索以及地理空间查询等丰富的查询功能,满足多样化的数据分析和处理需求。
  • 支持多个存储引擎:如WiredTiger存储引擎、In-Memory存储引擎等,提供多样化的存储选择,满足不同场景下的性能需求。

2. MongoDB如何执行事务/加锁?

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

3. MongoDB的更新操作会立刻fsync到磁盘吗?

不会。MongoDB的磁盘写操作默认是延迟执行的,写操作可能在两三秒(默认在60秒内)后到达磁盘。通过syncPeriodSecs启动参数,可以进行配置。例如,如果一秒内数据库收到一千个对一个对象递增的操作,MongoDB仅会刷新磁盘一次。

4. MongoDB有哪些索引类型?

MongoDB支持多种索引类型,包括:

  • 单字段索引:针对单个字段创建的索引。
  • 复合索引:针对多个字段组合创建的索引。
  • 多键索引:针对数组中的每个元素创建的索引。
  • 全文索引:针对文本字段创建的索引,支持全文搜索。
  • Hash索引:基于哈希值创建的索引,适用于精确匹配查询。
  • 通配符索引:针对未知字段名或字段路径创建的索引。
  • 2dsphere索引:用于地理空间数据的索引,支持球形查询。

5. MongoDB在A:{B,C}上建立索引,查询A:{B,C}和A:{C,B}都会使用索引吗?

不会。由于MongoDB索引使用B-tree树原理,只有在A:{B,C}顺序上建立的索引才会被使用。对于A:{C,B}的查询,MongoDB无法利用该索引,因此可能需要创建复合索引来覆盖不同的查询顺序。

6. 什么是MongoDB的聚合操作?

聚合操作能够处理数据记录并返回计算结果。它能够将多个文档中的值组合起来,对成组数据执行各种操作,返回单一的结果。MongoDB中的聚合操作应使用aggregate()方法。聚合管道(aggregation pipeline)提供了强大的数据处理能力,包括过滤、分组、排序、计算等。

7. MongoDB中的分片(sharding)是如何工作的?

MongoDB的分片是将数据水平切分到不同的物理节点上。当应用数据越来越大时,单台机器可能无法存储数据或满足可接受的读取写入吞吐量。利用分片技术可以添加更多的机器来应对数据量增加以及读写操作的要求。每个分片是一个分区数据的逻辑集合,可能由单一服务器或者集群组成。MongoDB会根据分片键将数据分布到不同的分片上,实现数据的水平扩展。

8. MongoDB的分片(Shard)和复制(replication)是怎样协同工作的?

MongoDB的分片和复制是协同工作的。每个分片可能是一个由多个节点组成的复制集,以确保数据的高可用性和容错性。当数据被写入一个分片时,该分片内的复制集会负责将数据复制到其他节点上。同时,MongoDB的分片机制会根据分片键将数据分布到不同的分片上,以实现数据的水平扩展。

9. MongoDB副本集实现高可用的原理是什么?

MongoDB使用了其复制(Replica Set)方案来实现自动容错机制,为高可用提供了基础。MongoDB支持两种复制模式:主从复制(Master/Slave)和复制集复制(Replica Set)。在生产环境中,推荐使用复制集复制模式。复制集由多个节点组成,包括一个主节点(Primary)和多个从节点(Secondary)。主节点负责处理所有的写操作,并将操作日志记录在oplog中。从节点复制主节点的oplog,并将oplog记录的操作应用于其数据集。如果主节点宕机,将从符合条件的从节点中选举出新的主节点,以确保数据的高可用性和服务的连续性。

10. 在哪些场景适合使用MongoDB?

MongoDB适用于以下场景:

  • 非结构化/半结构化数据存储:MongoDB能够处理动态数据结构,适合存储非结构化或半结构化的大数据。
  • 内容管理系统:MongoDB能够高效地存储和管理文本、图片、视频等多媒体内容。
  • 移动端Apps:MongoDB能够处理大量的用户数据、位置信息等,适合用于O2O送快递骑手、快递商家等移动端应用的数据管理。
  • 日志记录和监控数据:MongoDB能够高效地存储和分析大量的日志记录和监控数据,为系统运维和故障排查提供支持。

请注意,如果业务中存在大量复杂的事务逻辑操作,则不建议使用MongoDB数据库。