美文网首页程序员
持续输出面试题之MongoDB篇

持续输出面试题之MongoDB篇

作者: 我可能是个假开发 | 来源:发表于2020-08-15 10:20 被阅读0次

    开篇介绍

    大家好,我是Java最全面试题库的提裤姐,今天这篇是数据库面试题系列的第六篇,主要总结了MongoDB相关的面试题;在后续,会沿着第一篇开篇的知识线路一直总结下去,做到日更!如果我能做到百日百更,希望你也可以跟着百日百刷,一百天养成一个好习惯。

    什么是MongoDB?

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

    关系型数据库和非关系性数据库的区别?

    关系型数据库
    优点:

    • 数据之间有关系,进行数据的增删改查的时候是非常方便的
    • 关系型数据库是有事务操作的,保证数据的完整性和一致性。

    缺点:

    • 因为数据和数据是有关系的,底层是运行了大量的算法,大量算法会降低系统的效率,会降低性能
    • 面对海量数据的增删改查的时候会显的无能为力
    • 海量数据对数据进行维护变得非常的无力

    非关系型数据库
    优点:

    • 海量数据的增删改查是可以的
    • 海量数据的维护和处理非常轻松

    缺点:

    • 数据和数据没有关系,他们之间就是单独存在的
    • 非关系数据库没有关系,没有强大的事务关系,没有保证数据的完整性和安全性

    什么是命令空间

    mongodb存储bson对象在丛集(collection)中。数据库名字和丛集名字以句点连结起来叫做名字空间(namespace)。
    一个集合命名空间又有多个数据域(extent),集合命名空间里存储着集合的元数据,比如集合名称,集合的 第一个数据域和最后一个数据域的位置等等。而一个数据域由若干条文档(document)组成,每个数据域都有一个 头部,记录着第一条文档和最后一条文档的为知,以及该数据域的一些元数据。extent之间,document之间通过 双向链表连接。 索引的存储数据结构是B树,索引命名空间存储着对B树的根节点的指针。

    MongoDB如何执行事务?

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

    mongodb同步刷新数据到磁盘吗?

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

    mongodb 使用索引要注意什么?

    1、索引很有用,但是它也是有成本的;它占内存,让写入变慢
    2、mongoDB通常在一次查询里使用一个索引,所以多个字段的查询或者排序需要复合索引才能更加高效;
    3、复合索引的顺序非常重要
    4、在生成环境构建索引往往开销很大,时间也不可以接受,在数据量庞大之前尽量进行查询优化和构建索引;
    5、避免昂贵的查询,使用查询分析器记录那些开销很大的查询便于问题排查;
    6、通过减少扫描文档数量来优化查询,使用explain对开销大的查询进行分析并优化;
    7、索引是用来查询小范围数据的

    不适合使用索引的情况:

    • 每次查询都需要返回大部分数据的文档,避免使用索引
    • 写比读多

    MongoDB支持哪些数据类型?

    • String 字符串
    • Integer 整型数值
    • Double 双精度浮点值
    • Boolean 布尔值
    • Object 用于内嵌文档
    • Object ID 对象 ID
    • Arrays 用于将数组或列表或多个值存储为一个键
    • Min/Max Keys 将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比
    • Code 代码类型
    • Regular Expression

    mongoDB 主要使用在什么场景?

    MongoDB 的应用已经渗透到各个领域,比如游戏、物流、电商、内容管理、社交、物联网、视频直播等,以下是几个实际的应用案例:

    • 游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新
    • 物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
    • 社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能
    • 物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析
    • 视频直播,使用 MongoDB 存储用户信息、礼物信息等

    相关文章

      网友评论

        本文标题:持续输出面试题之MongoDB篇

        本文链接:https://www.haomeiwen.com/subject/flhldktx.html