MongoDB面试系列-01

1. MongoDB 是什么?

MongoDB是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。再高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB旨在给Web应用提供可扩展的高性能数据存储解决方案。

MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB文档类似于JSON对象。字段值可以包含其他文档,数组及文档数组。

2. MongoDB 有哪些特点?

MongoDB是一个面向文档存储的数据库,操作起来比较简单和容易。

你可以在MongoDB记录中设置任何属性的索引(如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。

你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。

如果负载的增加(需要更多的存储空间和更强的处理能力),它可以分布在计算机网络中的其他节点上这就是所谓的分片。

MongoDB支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。

MongoDB使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段。

MongoDB中的Map/Reduce主要是用来对数据进行批量处理和聚合操作。

Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。

Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。

GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。

MongoDB允许在服务端执行脚本,可以用JavaScript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。

3. 什么是非关系型数据库?

NoSQL是非关系型数据库,NoSQL = Not Only SQL。

关系型数据库采用的结构化的数据,NoSQL采用的是键值对的方式存储数据。

非关系型数据库的显著特点是不使用SQL作为查询语言,数据存储不需要特定的表格模式。

4. 常见的 NoSQL 数据库都有哪些?

常见的NoSQL数据库包括:MongoDB、Cassandra、CouchDB、Hypertable、Redis、Riak、HBASE、Memcache等。

5. 非关系型数据库有哪些类型?

  • -Key-Value 存储,eg:Amazon S3

  • 图表,eg:Neo4J

  • 文档存储,eg:MongoDB

  • 基于列存储,eg:Cassandra

6. MongoDB 和 CouchDB 有什么区别?

MongoDB和CouchDB都是面向文档的数据库。

MongoDB和CouchDB都是开源NoSQL数据库的最典型代表。除了都以文档形式存储外它们没有其他的共同点。

MongoDB和CouchDB在数据模型实现、接口、对象存储以及复制方法等方面有很多不同。

7. MongoDB 中什么是集合?

集合就是一组MongoDB文档。它相当于关系型数据库(RDBMS)中的表这种概念。集合位于单独的一个数据库中。一个集合内的多个文档可以有多个不同的字段。一般来说,集合中的文档都有着相同或相关的目的。

8. MongoDB 中 namespace 是什么?

MongoDB存储BSON对象在丛集(collection)中。数据库名字和丛集名字以句点连结起来叫做namespace。

9. 如果移除对象属性,该属性是否从存储层中删除?

如果用户移除对象的属性,该属性会从存储层中删除。

用户移除对象的属性之后,对象会重新保存,使用re-save()方法。

10. MongoDB 中能否使用日志特征进行安全备份?

MongoDB可以使用日志特征进行安全备份。

11. MongoDB 中允许空值 null 存在吗?

对于对象成员而言,是的。然而用户不能够添加空值(null)到数据库丛集(collection)因为空值不是对象,然而用户能够添加空对象{}。

12. MongoDB 中更新操作立刻 fsync 到磁盘吗?

更新操作不会立刻fsync到磁盘,磁盘写操作默认是延迟执行的。

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

注意:fsync选项在命令行和经过getLastError_old是有效的。

13. 为什么 MongoDB 数据文件体积会很大?

MongoDB采用的预分配空间的方式,是为了防止文件系统碎片。

14. MongoDB 中启用备份故障恢复需要多久?

从备份数据库声明主数据库宕机到选出一个备份数据库作为新的主数据库将花费10到30秒时间。

这期间在主数据库上的操作将会失败,包括写入和强一致性读取(strong consistent read)操作。

注意的是在slaveOk模式下,第二数据库上可以执行最终一致性查询(eventually consistent query)。

15. MongoDB 中支持事务加锁吗?

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

MongoDB 4.0中不提供事务支持。若要获得类似的结果,请使用findOneDupdate()。

16. MongoDB 中什么是副本集?

MongoDB中副本集由一组MongoDB实例组成,包括一个主节点多个次节点,MongoDB客户端的所有数据都写入主节点(Primary),副节点从主节点同步写入数据,以保持所有复制集内存储相同的数据,提高数据可用性。

17. MongoDB 中什么是聚合?

聚合操作能够处理数据记录并返回计算结果。聚合操作能将多个文档中的值组合起来,对成组数据执行各种操作,返回单一的结果。它相当于SQL中的count(*)组合group by。

对于MongoDB中的聚合操作,应该使用aggregate()方法。

>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

18. MongoDB 中如何实现排序?

MongoDB中的文档排序是通过sort()方法来实现的。sort()方法可以通过一些参数来指定要进行排序的字段,并使用1和-1来指定排序方式,其中1表示升序,而-1表示降序。

>db.connectionName.find({key:value}).sort({columnName:1})

19. MongoDB 中什么是 master 或 primary?

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

注:

Primary和Secondary是对于IDE通道而言的,前者是首要的,后者是次要的。

Master和Slave是相对于同一个IDE通道中的顺序而言的,前者是主盘,后者是从盘。

20. MongoDB 中什么是 secondary 或 slave?

MongoDB 中Seconday(Slave)从当前的primary上复制相应的操作。它是通过跟踪复制oplog(local.oplog.rsopen in new window)来实现的。

注:

Primary和Secondary是对于IDE通道而言的,前者是首要的,后者是次要的。

Master和Slave是相对于同一个IDE通道中的顺序而言的,前者是主盘,后者是从盘。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/325405.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

手把手教你学会接口自动化系列十五-如何用python操作excel的单元格自动化测试之前的准备工作

接上篇,我们都知道可以读取到sheet页了,下来就是读取sheet页下面的单元格数据 我们实践起来吧。 第一种方式是通过坐标的方式,比如我要取下面这个单元格的数据,如下: 这个数据位于Excel的B列第8行,所以对于excel来说就是坐标为B8。 代码如下: # !/usr/bin/env pytho…

LLM:Scaling Laws for Neural Language Models (中)

核心结论 1:LLM模型的性能主要与计算量C,模型参数量N和数据大小D三者相关,而与模型的具体结构 (层数/深度/宽度) 基本无关。三者满足: C ≈ 6ND 2. 为了提升模型性能,模型参数量N和数据大小D需要同步放大,但模型和数…

【生态适配】亚信安慧AntDB数据库与契约锁完成兼容互认

日前,亚信安慧AntDB数据库与上海亘岩网络科技有限公司(简称:契约锁)研发的契约锁电子签章产品完成兼容互认。经过双方团队的严格测试,亚信安慧AntDB数据库与契约锁(V4)完全兼容,整体运行稳定高效…

一天吃透Spring面试八股文

目录: Spring的优点Spring 用到了哪些设计模式?什么是AOP?AOP有哪些实现方式?Spring AOP的实现原理JDK动态代理和CGLIB动态代理的区别?Spring AOP相关术语Spring通知有哪些类型?什么是IOC?IOC的…

L1-027 出租(Java)

下面是新浪微博上曾经很火的一张图: 一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]2 对应 arr[2]1,index[1]0 对应 arr[0]8,index[2]3 对应 arr[3]0&…

鸿蒙开发之手势Pan

Entry Component struct OfficialPanGesturePage {State message: string 默认只左右移动State offsetX: number 0State offsetY: number 0State positionX: number 0State positionY: number 0//默认pan的参数,1根手指,左右方向private panOption:…

什么是泛域名证书?有免费的吗?

泛域名证书(Wildcard SSL Certificate)是一种用于加密多个子域名的SSL证书。与传统的SSL证书只能覆盖单个域名或特定子域不同,泛域名证书具有更广泛的适用性,可以涵盖一个域名下的所有子域。 泛域名证书的主要特点是通配符&#x…

华为数通方向HCIP-DataCom H12-831题库(判断题:1-20)

第01题 为了加快IS-IS网络中链路故障的感知速度,可以将IS-IS与BFD联动 正确 错误 答案:正确 解析: OSPF和IS-IS都可以设置与BFD联动加速链路故障检测 ,使用BFD时,可以实现毫秒级别的链路切换,所以使用IS–IS与BFD联动,可以加快IS–IS的感知速度 第02题 在OSPF中ABR会将…

关于整型提升与截断的一道题目

关于整型提升与截断,可以看我的博客 C语言:整型提升_c语言整形提升-CSDN博客 C语言:截断整型提升算数转换练习_c语言unsigned-CSDN博客 一、题目 二、题解 char a101截断 由于101是整型数据,需要32比特位存储空间,…

1.12号网络

1 网络发展历史 1.1 APRAnet阶段 阿帕网,是Interne的最早雏形 不能互联不同类型的计算机和不同类型的操作系统 没有纠错功能 1.2 TCP/IP两个协议阶段 什么是协议 在计算机网络中,要做到有条不紊的交换数据,需要遵循一些事先约定好的规则…

Java多线程并发篇----第十六篇

系列文章目录 文章目录 系列文章目录前言一、线程等待(wait)二、线程睡眠(sleep)三、线程让步(yield)四、线程中断(interrupt)五、Join 等待其他线程终止前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这…

【java八股文】之JVM基础篇

【java八股文】之JVM基础篇-CSDN博客 【java八股文】之MYSQL基础篇-CSDN博客 【java八股文】之Redis基础篇-CSDN博客 【java八股文】之Spring系列篇-CSDN博客 【java八股文】之分布式系列篇-CSDN博客 【java八股文】之多线程篇-CSDN博客 【java八股文】之JVM基础篇-CSDN博…

CentOS7安装MySQL 错误:软件包:akonadi-mysql-1.9.2-4.el7.x86_64 (@anaconda)

问题如图所示 运行一下命令解决 yum -y remove mariadb-libsyum install mysql-community-server

Linux知识(未完成)

一、Linux 1.1 Linux 的应用领域 1.1.1 个人桌面领域的应用 此领域是 Linux 比较薄弱的环节但是随着发展,近几年 linux 在个人桌面领域的占有率在逐渐提高 1.1.2 服务器领域 linux 在服务器领域的应用是最高的 linux 免费、稳定、高效等特点在这里得到了很好的…

Python读取modbus数据(WTVB01-485振动传感器)

Python读取modbus数据(WTVB01-485振动传感器) 实物如下图: 参考手册上获取到的部分信息: 接下来开始操作: 1.将485转USB口连接到计算机,然后使用:Modbus Poll这个软件与实物通讯。这里注意&a…

防泄密之巅,厨电安全无忧:迅软DSE引领科技保密新潮流

客户简要介绍 某股份有限公司从创立至今一直专注厨电领域,始终以产品创新为企业战略重心,为全家万户提供厨卫及家居定制。公司产品涵盖集成烹饪中心、抽油烟机、燃气灶具、燃气热水器、电热水器,为全球多个国家和地区的消费者提供高品质的服…

vue-quill-editor富文本插入图片改为上传服务器

1.安装vue-quill-editor npm install vue-quill-editor 2.安装依赖 npm install quill 3.代码引用 import { quillEditor } from vue-quill-editor; // 引入Qill插件 import Quill from quill; import quill/dist/quill.core.css; // import styles import quill/dist/quill.s…

matlab行操作快?还是列操作快?

在MATLAB中,通常情况下,对矩阵的列进行操作比对行进行操作更有效率。这是因为MATLAB中内存是按列存储的,因此按列访问数据会更加连续,从而提高访问速度。 一、实例代码 以下是一个简单的测试代码, % 测试矩阵大小 ma…

【GitHub】如何上传文件夹到GitHub上(配图详解)

一、如果没有账号要先创建账号(有账号跳过此步骤)二、建立一个仓库(有仓库跳过此步骤)三、复制仓库地址四、以下为本地操作 1、在本地新建一个空文件夹2、上传文件 2.1、在空文件夹内,右键选择Git Bash Here2.2、弹出G…

京东ES支持ZSTD压缩算法上线了:高性能,低成本 | 京东云技术团队

1 前言 在《ElasticSearch降本增效常见的方法》一文中曾提到过zstd压缩算法[1],一步一个脚印我们终于在京东ES上线支持了zstd;我觉得促使目标完成主要以下几点原因: Elastic官方原因:zstd压缩算法没有在Elastic官方的开发计划中&…