赶紧收藏起MongoDB面试题轻松面对BAT灵魂式的拷问(下)

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: MongoDB是基于分布式文件存储的数据库,由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案,且MongodDB是一个介于关系数据库与非关系数据库之间的产品,是非关系型数据库中功能最丰富,最像关系数据库。

MongoDB分片


13Q:monogodb 中的分片sharding


分片sharding是将数据水平切分到不同的物理节点。当应用数据越来越大的时候,数据量也会越来越大。当数据量增长 时,单台机器有可能无法存储数据或可接受的读取写入吞吐量。利用分片技术可以添加更多的机器来应对数据量增加 以及读写操作的要求。


14Q:分片(Shard)和复制(replication)是怎样工作的?


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


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


不需要,移动操作是一致(consistent)并且是确定性的(deterministic)。


  • 一次失败后,移动操作会不断重试。
  • 当完成后,数据只会出现在新的分片里(shard)


16Q:数据在什么时候才会扩展到多个分片(Shard)里?


MongoDB 分片是基于区域(range)的。所以一个集合(collection)中的所有的对象都被存放到一个块(chunk)中,默认块的大小是 64Mb。当数据容量超过64 Mb,才有可能实施一个迁移,只有当存在不止一个块的时候,才会有多个分片获取数据的选项。


17Q:更新一个正在被迁移的块(Chunk)上的文档时会发生什么?


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


18Q:如果一个分片(Shard)停止或很慢的时候,发起一个查询会怎样?


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


MongoDB复制集


19Q:MongoDB副本集实现高可用的原理


MongoDB 使用了其复制(Replica Set)方案,实现自动容错机制为高可用提供了基础。目前,MongoDB 支持两种复制模式:


  • Master / Slave ,主从复制,角色包括 MasterSlave
  • Replica Set ,复制集复制,角色包括 PrimarySecondary 以及 Arbiter 。(生产环境必选)


20Q:什么是masterprimary


副本集只能有一个主节点能够确认写入操作来接收所有写操作,并记录其操作日志中的数据集的所有更改(记录在oplog中)。在集群中,当主节点(master)失效,Secondary节点会变为master


21Q:什么是SlaveSecondary


复制主节点的oplog并将oplog记录的操作应用于其数据集,如果主节点宕机了,将从符合条件的从节点选举选出新的主节点。


22Q:什么是Arbiter


仲裁节点不维护数据集。 仲裁节点的目的是通过响应其他副本集节点的心跳和选举请求来维护副本集中的仲裁


23Q:复制集节点类型有哪些?


  • 优先级0型(Priority 0)节点
  • 隐藏型(Hidden)节点
  • 延迟型(Delayed)节点
  • 投票型(Vote)节点以及不可投票节点


24Q:启用备份故障恢复需要多久?


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


MongoDB复制详解分析可查看文章MongoDB系列-解决面试中可能遇到的MongoDB复制集(replica set)问题


25Q:raft选举过程,投票规则?


选举过程:


当系统启动好之后,初始选举后系统由1个Leader和若干个Follower角色组成。然后突然由于某个异常原因,Leader服务出现了异常,导致Follower角色检测到和Leader的上次RPC更新时间超过给定阈值时间时。此时Follower会认为Leader服务已出现异常,然后它将会发起一次新的Leader选举行为,同时将自身的状态从Follower切换为Candidate身份。随后请求其它Follower投票选择自己。


投票规则:


  • 当一个候选人获得了同一个任期号内的大多数选票,就成为领导人。
  • 每个节点最多在一个任期内投出一张选票。并且按照先来先服务的原则。
  • 一旦候选人赢得选举,立刻成为领导,并发送心跳维持权威,同时阻止新领导人的诞生


可查看文章通俗易懂的Paxos算法-基于消息传递的一致性算法


26Q:在哪些场景使用MongoDB?


规则: 如果业务中存在大量复杂的事务逻辑操作,则不要用MongoDB数据库;在处理非结构化 / 半结构化的大数据使用MongoDB,操作的数据类型为动态时也使用MongoDB,比如:


  • 内容管理系统,切面数据、日志记录
  • 移动端AppsO2O送快递骑手、快递商家的信息(包含位置信息)
  • 数据管理,监控数据


各位看官还可以吗?喜欢的话,动动手指点个💗,点个关注呗!!谢谢支持!


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
4月前
|
NoSQL Java MongoDB
程序员的50大MongoDB面试问题及答案
程序员的50大MongoDB面试问题及答案
|
4月前
|
数据采集 数据挖掘 关系型数据库
2024年5分钟就能完成的5个Python小项目,赶紧拿去玩玩吧(2),2024年最新腾讯面试题
2024年5分钟就能完成的5个Python小项目,赶紧拿去玩玩吧(2),2024年最新腾讯面试题
2024年5分钟就能完成的5个Python小项目,赶紧拿去玩玩吧(2),2024年最新腾讯面试题
|
3月前
|
存储 NoSQL MongoDB
MongoDB实战面试指南:常见问题一网打尽
MongoDB实战面试指南:常见问题一网打尽
|
3月前
|
jenkins 测试技术 持续交付
30个接口自动化测试面试题,赶紧收藏
接口自动化测试是使用工具验证接口功能、性能和安全性的自动化过程。它能提升测试效率,减少人工工作量,及时发现问题。常见工具包括Postman、SoapUI和JMeter。测试涉及需求分析、测试计划、用例设计、脚本编写、执行、报告生成及问题跟踪。测试用例涵盖输入数据、预期结果等,脚本包含请求和响应细节。断言验证接口正确性,数据驱动测试使用多数据验证,性能测试检查响应时间等,安全测试关注认证和加密,Mock测试模拟数据,集成测试验证接口交互,回归测试确保修改未破坏原有功能,异常处理确保测试稳定性,并发和压力测试检查系统负载,持续集成通过工具如Jenkins保证软件质量。
123 3
|
2月前
|
负载均衡 NoSQL 中间件
|
4月前
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
470 9
Python与NoSQL数据库(MongoDB、Redis等)面试问答
|
4月前
|
存储 NoSQL 关系型数据库
MongoDB面试题
MongoDB面试题
|
4月前
|
NoSQL 应用服务中间件 MongoDB
2023年底复盘之大厂必问面试题:Redis+MongoDB+ZK+Nginx+数据库
今天分享给大家的都是目前主流企业使用最高频的面试题库,也都是 Java 版本升级之后,重新整理归纳的最新答案,会让面试者少走很多不必要的弯路。同时每个专题都做到了详尽的面试解析文档,以确保每个阶段的读者都能看得懂,同时这部分面试文档也是可以免费的提供给有需要的同学们学习的,有需要的可以查看文末的获取方式!
|
7天前
|
运维 监控 NoSQL
【MongoDB 复制集秘籍】Secondary 同步慢怎么办?深度解析与实战指南,让你的数据库飞速同步!
【8月更文挑战第24天】本文通过一个具体案例探讨了MongoDB复制集中Secondary成员同步缓慢的问题。现象表现为数据延迟增加,影响业务运行。经分析,可能的原因包括硬件资源不足、网络状况不佳、复制日志错误等。解决策略涵盖优化硬件(如增加内存、升级CPU)、调整网络配置以减少延迟以及优化MongoDB配置(例如调整`oplogSize`、启用压缩)。通过这些方法可有效提升同步效率,保证系统的稳定性和性能。
22 4
|
11天前
|
监控 NoSQL MongoDB
MongoDB数据库的索引管理技巧
【8月更文挑战第20天】MongoDB数据库的索引管理技巧
34 1
下一篇
云函数