MongoDB面试宝典【刷题系列】

文章目录


1、MySQL与MongoDB之间最基本的差别是什么?

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

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

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

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

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

3、分析器在MongoDB中的作用是什么?

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

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

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

5、更新操作立刻fsync到磁盘?

答:不会,磁盘写操作默认是延迟执行的。写操作可能在两三秒(默认在 60 秒内)后到达磁盘。例如,如果一秒内数据库收到一千个对一个对象递增的操作,仅刷新磁盘一次。

6、什么是master或primary?

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

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

答:MongoDB 分片是基于区域( range )的。所以一个集合( collection )中的所有的对象都被存放到一个块( chunk )中。只有当存在多余一个块的时候,才会有多个分片获取数据的选项。现在,每个默认块的大小是 64Mb ,所以你需要至少 64Mb 空间才可以实施一个迁移。

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

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

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

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

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

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

11、如何理解MongoDB中的GridFS机制,MongoDB为何使用GridFS来存储文件?

答:GridFS 是一种将大型文件存储在MongoDB中的文件规范。使用 GridFS 可以将大文件分隔成多个小文档存放,这样我们能够有效的保存大文档,而且解决了BSON 对象有限制的问题。

12、MongoDB支持存储过程吗?如果支持的话,怎么用?

答:MongoDB支持存储过程,它是 javascript 写的,保存在 db.system.js 表中。

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

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

相关推荐
程序员Sunday3 小时前
TypeScript 的 any、unknown、never 有什么区别?
前端·面试·typescript
余槐i3 小时前
PostgreSQL 函数索引报错 must be immutable:3种绕法与代价
数据库·后端·sql·postgresql·性能优化
数据库小学妹3 小时前
PostgreSQL表膨胀怎么办?autovacuum清不动的根因与排查命令
数据库·postgresql·表膨胀·mvcc·数据库运维
mister_guo3 小时前
MySQL-1267错误:排序规则冲突的原因与解决方案
数据库·mysql
小 黄 鸡4 小时前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
骇客野人4 小时前
在麒麟操作系统上 分别安装 jdk1.8, 达梦数据库,redis ,memcache 的操作实施方案和步骤
数据库·redis·memcached
美狐美颜SDK开放平台6 小时前
直播APP如何实现美白滤镜功能?视频美颜SDK技术开发方案详解
前端·数据库·人工智能·音视频·美颜sdk·直播美颜sdk·视频美颜sdk
花间相见7 小时前
【计算基础|MySQL01】【上手】安装连接、数据类型与建库建表
数据库·后端
花间相见7 小时前
【计算基础|MySQL02】【上手】SQL 增删改查
数据库·后端
ITxiaobing20237 小时前
IP 库与 AppsFlyer 国家/地区数据不一致,如何系统地对账?
数据库·网络协议·tcp/ip