📜  48 MongoDB面试问题

📅  最后修改于: 2020-11-16 01:23:38             🧑  作者: Mango

MongoDB面试问题

1)您对NoSQL数据库了解什么? MongoDB是NoSQL数据库吗?说明。

当前,互联网上充满了大数据,大用户,大复杂性等,并且也日益复杂。 NoSQL解决了所有这些问题,它不是传统的数据库管理系统,甚至不是关系数据库管理系统(RDBMS)。 NoSQL代表“不仅SQL”。 NoSQL是一种数据库,可以处理和分类所有类型的非结构化,混乱和复杂的数据。这只是思考数据库的一种新方法。

是。 MongoDB是一个NoSQL数据库。

2)MongoDB支持哪些不同的语言?

MonggoDB为C,C++,C#,Java,Node.js,Perl,PHP, Python,Ruby,Scala,Go和Erlang提供官方驱动程序支持。

您可以将MongoDB与以上任何一种语言一起使用。还有其他一些社区支持的驱动程序,但上述驱动程序由MongoDB正式提供。

3)NoSQL数据库有哪些不同类型?举个例子。

NoSQL数据库可分为4种基本类型:

  • 键值存储NoSQL数据库
  • 文档存储NoSQL数据库
  • 列存储NoSQL数据库
  • 图库NoSQL数据库

有许多NoSQL数据库。 NoSQL数据库的示例有MongoDB,Cassandra,CouchBD,Hypertable,Redis,Riak,Neo4j,HBASE,Couchbase,MemcacheDB,Voldemort,RevenDB等。

4)MongoDB是否比其他SQL数据库更好?如果是,那怎么办?

MongoDB比其他SQL数据库更好,因为它允许高度灵活和可扩展的文档结构。

例如:

  • MongoDB中的一个数据文档可以具有五列,而同一集合中的另一文档可以具有十列。
  • 由于高效的索引和存储技术,MongoDB数据库比SQL数据库更快。

5)MongoDB是什么类型的DBMS?

MongoDB是面向文档的DBMS

6)MongoDB和MySQL有什么区别?

尽管MongoDB和MySQL都是免费和开放源数据库,但是它们在数据表示,关系,事务,查询数据,模式设计和定义,性能速度,规范化等等方面仍有很多差异。将MySQL与MongoDB进行比较就像在关系数据库和非关系数据库之间进行比较。

7)为什么MongoDB被称为最佳NoSQL数据库?

MongoDb是最好的NoSQL数据库,因为它是:

面向文档

丰富的查询语言

高性能

高度可用

轻松扩展

8)MongoDB是否支持主键,外键关系?

否。默认情况下,MongoDB不支持主键-外键关系。

9)您可以在MongoDB中实现主键-外键关系吗?

我们可以通过将一个文档嵌入另一个文档来实现主键与外键的关系。例如:地址文档可以嵌入客户文档中。

10)MongoDB是否需要大量RAM?

不需要。运行MongoDB不需要大量RAM。它甚至可以在少量RAM上运行,因为它可以根据进程要求动态分配和取消分配RAM。

11)解释MongoDB中ObjectID的结构。

ObjectID是12字节的BSON类型。这些是:

  • 4字节值代表秒
  • 3字节机器标识符
  • 2字节进程ID
  • 3字节计数器

12)MongoDB使用BSON表示文档结构是真的吗?

是。

13)MongoDB中的索引是什么?

在MondoDB中,索引用于有效地执行查询。没有索引,MongoDB必须执行集合扫描,即扫描集合中的每个文档,以选择与查询语句匹配的那些文档。如果查询存在适当的索引,则MongoDB可以使用该索引来限制它必须检查的文档数。

14)默认情况下,MongoDB为每个集合创建哪个索引?

默认情况下,MongoDB为每个集合创建the_id集合。

15)什么是MongoDB中的命名空间?

命名空间是数据库名称和集合名称的串联。集合,MongoDB在其中存储BSON对象。

16)日记功能可以用于执行安全的热备份吗?

是。

17)为什么Profiler在MongoDB中使用?

MongoDB使用数据库探查器对数据库执行每个操作的特征。您可以使用探查器来查找查询和进行写操作

18)如果删除一个对象属性,是否将其从数据库中删除?

是的,是的。删除该属性,然后重新保存()该对象。

19)MongoDB用哪种语言编写?

MongoDB是用C++编写和实现的。

20)MongoDB是否需要大量的随机存取内存(RAM)?

不能。MongoDB可以在较小的RAM可用空间上运行。

21)您可以在MongoDB中使用哪种语言?

MongoDB客户端驱动程序支持所有流行的编程语言,因此没有语言问题,您可以使用所需的任何语言。

22)MongoDB数据库是否具有用于存储记录的表?

否。MongoDB使用表“ Collections”来存储数据,而不是表。

23)MongoDB数据库是否具有架构?

是。 MongoDB数据库具有动态架构。无需定义用于创建集合的结构。

24)在MongoDB中配置缓存大小的方法是什么?

MongoDB的缓存不可配置。实际上,MongoDb通过内存映射文件自动使用系统上的所有可用空间。

25)如何在MongoDB中进行事务/锁定?

MongoDB不会在回滚中使用传统的锁定或复杂的事务。 MongoDB设计为轻量级,快速且可预测其性能。它使事务支持变得简单,从而提高了性能。

26)为什么不首选32位版本的MongoDB?

由于MongoDB使用内存映射文件,因此当您运行32位版本的MongoDB时,服务器的总存储大小为2 GB。但是,当您运行MongoDB的64位版本时,这实际上提供了无限的存储大小。因此64位比32位更可取。

27)是否可以删除moveChunk目录中的旧文件?

是的,操作完成后可以删除这些文件,因为在常规分片平衡操作期间将这些文件作为备份。这是一个手动清理过程,必须释放空间。

28)如果分片下降或变慢并且您进行查询,该怎么办?

如果碎片断开,您甚至进行查询,那么除非您设置了部分查询选项,否则查询将返回错误。但是,如果分片很慢,则Mongos将等待它们直到响应。

29)解释MongoDB中涵盖的查询。

如果满足以下两个条件,则该查询称为涵盖查询:

  • 查询中使用的字段是查询中使用的索引的一部分。
  • 结果中返回的字段在同一索引中。

30)涵盖查询的重要性是什么?

涵盖查询使索引的存储在RAM中或顺序位于磁盘上,从而使查询的执行速度更快。它使查询的执行速度更快。

覆盖查询使字段本身被索引覆盖,MongoDB可以匹配查询条件,并使用相同索引返回结果字段,而无需查看文档内部。

31)MongoDB中的分片是什么?

在MongoDB中,分片是跨多台计算机存储数据记录的过程。这是一种MongoDB方法,可以满足数据增长的需求。它在数据库或搜索引擎中创建数据的水平分区。每个分区称为分片或数据库分片。

32)MongoDB中设置了什么副本?

可以将副本指定为承载相同数据集的一组mongo实例。在副本集中,一个节点是主节点,另一个是辅助节点。所有数据都从主节点复制到辅助节点。

33)MongoDB中设置的主要和辅助副本是什么?

在MongoDB中,主节点是可以接受写入的节点。这些也称为主节点。 MongoDB中的复制是单个主复制,因此一次只能有一个节点可以接受写操作。

辅助节点称为从节点。这些是从主节点复制的只读节点。

34)默认情况下,哪些副本集用于写入数据?

默认情况下,MongoDB仅将数据写入主副本集。

35)MongoDB中的CRUD是什么?

MongoDB支持以下CRUD操作:

  • 创建
  • 更新资料
  • 删除

36)MongoDB以哪种格式表示文档结构?

MongoDB使用BSON表示文档结构。

37)从MongoDB中的数据库中删除文档时会发生什么? MongoDB是否将其从磁盘上删除?

是。如果您从数据库中删除文档,MongoDB也会从磁盘中删除它。

38)为什么MongoDB数据文件很大?

MongoDB不会跟随文件系统碎片,而是在设置服务器时预先分配数据文件以保留空间。这就是MongoDB数据文件很大的原因。

39)MongoDB中的存储引擎是什么?

存储引擎是数据库的一部分,用于管理如何在磁盘上存储数据。

例如:一个存储引擎可能为读取大量工作负载提供更好的性能,而另一个存储引擎可能支持更高的写入操作吞吐量。

40)MongoDB使用哪些存储引擎?

MMAPv1和WiredTiger是MongoDB使用的两个存储引擎。

41)MongoDB中探查器的用途是什么?

数据库分析器用于收集有关正在运行的mongod实例上的MongoDB写操作,游标,数据库命令的数据。您可以基于每个数据库或每个实例启用分析。

数据库分析器将收集到的所有数据写入系统。个人档案集合,这是一个上限集合。

42)是否可以在MongoDB中为MMAPv1配置缓存大小?

不能。由于MMAPv1不允许配置缓存大小,因此无法为MMAPv1配置缓存大小。

43)如何在MongoDB中为WiredTiger配置缓存大小?

对于WiredTiger存储引擎,您可以指定WiredTiger将用于所有数据的缓存的最大大小。可以使用storage.wiredTiger.engineConfig.cacheSizeGB选项来完成。

44)MongoDB如何提供并发性?

MongoDB使用读写器锁进行并发。读写器锁允许并发的读写器共享访问资源(例如数据库或集合)的权限,但可以独占访问单个写入操作。

45)MongoDB和Redis数据库有什么区别?

MongoDB和Redis之间的区别:

  • Redis比MongoDB快。
  • Redis具有键值存储,而MongoDB具有文档类型存储。
  • Redis很难编码,但是MongoDB很容易。

欲了解更多信息,请点击这里

46)MongoDB和CouchDB有什么区别?

MongoDB和CouchDB之间的区别:

  • MongoDB比CouchDB快,而CouchDB比MongoDB安全。
  • 触发器在MongoDB中不可用,而触发器在CouchDB中可用。
  • MongoDB将JSON数据序列化为BSON,而CouchDB则不以JSON格式存储数据。

欲了解更多信息,请点击这里

47)MongoDB和Cassandra有什么区别?

MongoDB和Cassandra之间的区别:

  • MongoDB是跨平台的面向文档的数据库系统,而Cassandra是高性能的分布式数据库系统。
  • MongoDB用C++编写,而Cassandra用Java编写。
  • MongoDB在发生故障时易于管理,而Cassandra提供高可用性而没有单点故障。

欲了解更多信息,请点击这里

48)是否需要在MongoDB中创建数据库命令?

您不需要在MongoDB中手动创建数据库,因为当您第一次将值保存到定义的集合中时,数据库会自动创建。

欲了解更多信息,请点击这里