MongoDB面试题

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

介绍

MongoDB是一个文档数据库提供好的性能领先的非关系型数据库。采用BSON存储文档数据。
BSON(是一种类json的一种二进制形式的存储格式简称Binary JSON.
相对于json多了date类型和二进制数组。

一、MongoDB的优势有哪些

  • 面向文档的存储以 JSON 格式的文档保存数据。
  • 任何属性都可以建立索引。
  • 复制以及高可扩展性。
  • 自动分片。
  • 丰富的查询功能。
  • 快速的即时更新。

二、使用MongoDB的场景

  • 大数据
  • 内容管理系统
  • 移动端Apps
  • 数据管理

三、MongoDB的命名空间

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

  • 一个集合命名空间又有多个数据域(extent)集合命名空间里存储着集合的元数据比如集合名称集合的第一个数据域和最后一个数据域的位置等等。而一个数据域由若干条文档(document)组成每个数据域都有一个头部记录着第一条文档和最后一条文档的为知以及该数据域的一些元数据。

  • extent之间document之间通过双向链表连接。 索引的存储数据结构是B树索引命名空间存储着对B树的根节点的指针。

四、MongoDB的数据类型

String
Integer
Double
Boolean
Object
Object ID
Arrays
Min/Max Keys
Datetime
Code
Regular Expression等

Code是用来存储代码的。

正则表达式则是在文档中存储正则。

五、ObjectID有哪几部分组成

时间戳、客户端ID、客户进程ID、三个字节的增量计数器

  • 前4个字节表示时间戳;
  • 接下来的3个字节是机器标识码;
  • 紧接的两个字节由进程id组成(PID;
  • 最后三个字节是自增计数器生成的随机数;

六、副本集与主从同步

1. 选举

  1. 如果主挂了mongodb保证只有操作序列为最大的从才能成为新的主这只保证了数据尽可能地少丢如果写操作是写1个节点以上成功才认为成功可保证不丢数据

  2. 如果新的主丢了老的主的部分操作而且老的主又重新加入副本集这时老的主会回滚操作以保证与新的主状态一致。回滚日志会被记录到文件里通过工具可手动将回滚操作来新的主上执行以恢复数据。另外如果需要的回滚数据超过300M老的主不会进行回滚并log异常;如果要强制回滚到300M之前可采用重新同步数据的方法来保证与新主状态一致但不能恢复这300M数据了。

  3. mongodb可保证优先级最高的从节点变为主;

  4. 优先级为0的从节点不进行选主即不能成为主;

  5. 除了主从节点还有仲裁者节点不保存副本数据只用于选主投

2.变更主从

副本集支持手动变更主从关系吗?支持的话变更会不会出现数据丢失呢?可对比下redis cluster

(1You can force a replica set member to become primary by giving it a higher priority value than any other member in the set.(所以是支持的

(2变更不会出现数据丢失因为mongodb会停止原主的更新操作直到新主追上最新的plog后并成功变为主才恢复更新操作(跟redis cluster的no force变更策略一样。

副本集一般是三个数据库。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: go

“MongoDB面试题” 的相关文章