mongodb介绍

1.mongodb简介

MongoDB是一种流行的NoSQL数据库,它使用文档数据模型来存储数据。相比关系型数据库,MongoDB更加灵活,具有更好的可扩展性和性能。它支持水平扩展,可以在多个服务器之间分布数据,从而实现更高的可用性和性能

2.mongodb的作用

存储半结构化数据:MongoDB使用文档数据模型来存储数据,这使得它非常适合存储半结构化数据,例如JSON文档。这种数据模型非常灵活,可以轻松地进行嵌套和复杂查询

支持各种数据类型:MongoDB支持各种数据类型,包括数字、日期、字符串、数组和嵌入式文档等。这使得它非常适合存储不同类型的数据

提供高级功能:MongoDB提供了许多高级功能,例如全文搜索、地理空间索引和图形搜索等。它还有一个强大的聚合框架,可以用于数据聚合和分析

适用于各种应用程序:MongoDB的文档模型和可扩展性使其成为许多应用程序的理想选择,例如Web应用程序、移动应用程序和物联网设备。它可以用于各种不同类型的应用程序,从简单的博客到复杂的企业级应用程序

3.mongodb的架构

mongodb在企业中通常使用副本集集群或者分片集群架构

副本集:MongoDB副本集是MongoDB的高可用性机制之一,它通过在多个服务器上复制数据来提高可用性

副本集角色讲解

主节点(Primary):主节点是副本集中的主要节点,它负责所有写入操作,并将写入操作记录到Oplog中。主节点还负责管理副本集的元数据信息,例如副本集的成员列表和状态信息

从节点(Secondary):从节点是副本集中的备份节点,它们负责复制主节点上的数据,并提供读取操作。从节点会异步地复制Oplog中的数据,并将其应用到本地副本中。从节点还可以被用作查询节点,以减轻主节点的负载,搭建好后需要配置从节点才能在从节点上实现读取,否则从节点是不提供读写功能的,一般在开发使用mongodb的时候通过连接命令配置

仲裁节点(Arbiter):仲裁节点是一个特殊的节点,它不存储数据,只用于投票选举主节点。仲裁节点通常被用于小型副本集中,以减少节点数量和成本

副本集组件

Oplog(操作日志):Oplog是MongoDB副本集中的一个特殊集合,它记录了所有写入操作。主节点将写入操作记录到Oplog中,并将Oplog中的数据发送到从节点。从节点会异步地复制Oplog中的数据,并将其应用到本地副本中

配置文件(Config File):配置文件是MongoDB副本集的一个配置文件,它存储了副本集的元数据信息,例如成员列表和状态信息。配置文件通常存储在一个独立的配置服务器上

副本集作用

主节点选举:当主节点发生故障或不可用时,副本集会自动选举一个新的主节点。选举过程基于多数投票原则,只有获得大多数节点的投票才能成为新的主节点

数据复制:MongoDB副本集使用异步复制来复制数据。主节点将写入操作记录到Oplog(操作日志)中,并将Oplog中的数据发送到从节点。从节点会异步地复制Oplog中的数据,并将其应用到本地副本中

读取操作:当客户端执行读取操作时,路由器会将请求路由到主节点或从节点。如果请求是只读操作,则通常会将其路由到一个从节点上,以减轻主节点的负载

写入操作:当客户端执行写入操作时,路由器会将请求路由到主节点上。主节点将写入操作记录到Oplog中,并将其发送到所有从节点上。从节点异步地复制Oplog中的数据,并将其应用到本地副本中

故障转移:当主节点发生故障或不可用时,副本集会自动选举一个新的主节点。选举过程基于多数投票原则,只有获得大多数节点的投票才能成为新的主节点

MongoDB副本集提供了高可用性和数据冗余功能,可以帮助应用程序保持可用性并保护数据免受故障和灾难的影响

注意在MongoDB副本集中,主节点和备节点的数据在任意时间并不总是完全一致。虽然MongoDB副本集旨在确保数据在主节点和备节点之间的复制是准确和可靠的,但是在某些情况下,主节点和备节点之间可能会存在数据延迟,当主节点收到写操作时,它会将操作应用于本地副本,并将操作异步地传输到副本集中的其他节点。这意味着,如果您在主节点上执行写操作,数据将首先被写入主节点,然后异步地传输到备节点。因此,在某些情况下,备节点上的数据可能会略微滞后于主节点上的数据

分片集群:MongoDB的横向扩展机制,它可以将数据分布到多个服务器上,从而实现更高的可用性和性能。MongoDB分片集群由多个分片组成,每个分片都是一个独立的MongoDB实例,它可以在不同的服务器上运行,一般在生产中会使用分片+副本集的组合实现分片集群的高可用和横向扩展功能,如果单单使用分片集群的话,某节点挂掉时,MongoDB会自动将数据迁移到其他分片上

分片集群特点和工作原理

分片键:MongoDB使用分片键来将数据分布到多个分片上。分片键是一个用于划分数据的字段或字段组合。MongoDB会根据分片键的值将数据分配到不同的分片上

路由器:路由器是MongoDB的组件之一,它负责接收客户端请求,并将请求路由到正确的MongoDB分片上。路由器还负责维护分片键和分片元数据信息

配置服务器:配置服务器是MongoDB的组件之一,它存储了MongoDB分片集群的元数据信息,例如分片键和分片元数据信息。配置服务器通常由多个副本组成,以提高可用性和容错性

分片元数据:MongoDB使用分片元数据来跟踪数据在分片集群中的位置。分片元数据包括每个分片的状态、分片键范围和分片版本等信息。配置服务器负责维护分片元数据信息

数据迁移:当需要添加或删除分片时,MongoDB会自动进行数据迁移。数据迁移是将数据从一个分片移动到另一个分片的过程。MongoDB会自动将数据分配到新的分片上,并将数据从旧的分片上删除

故障转移:当一个分片发生故障或不可用时,MongoDB会自动将数据迁移到其他分片上。这个过程是自动的,无需人工干预

分片集群组件

分片(Shard):每个分片是一个MongoDB实例,用于存储部分数据集。分片可以在同一台机器上或分布在多台机器上运行,可以根据需要添加或删除

路由器(Router):路由器是一个mongos进程,作为客户端与分片集群之间的接口。它将客户端请求路由到适当的分片,并将分片的响应汇总并返回给客户端

配置服务器(Config Server):配置服务器是一个MongoDB实例,用于存储分片集群的元数据(如分片信息和数据位置)。通常情况下,配置服务器有三个副本,以提供高可用性和数据冗余

客户端(Client):客户端是使用MongoDB分片集群的应用程序或工具。客户端通过路由器与分片集群进行交互,并使用MongoDB查询语言来操作数据

分片集群角色

分片节点(Shard Node):每个分片节点是一个MongoDB实例,用于存储部分数据集。分片节点可以是主节点或从节点

配置节点(Config Node):配置节点是一个MongoDB实例,用于存储分片集群的元数据。配置节点通常是主节点,但也可以是从节点

MongoDB副本集提供了高可用性、高性能、横向扩展能力

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MongoDB是一种开源的NoSQL数据库,它使用文档存储数据,而不是传统的关系型数据库中的表。它具有高可用性、可扩展性和灵活性等优点,因此在大数据和云计算领域得到广泛应用。 以下是一些可能在MongoDB面试中被问到的问题及其回答: 1. 什么是MongoDB? 答:MongoDB是一种开源的NoSQL数据库,它使用文档存储数据,而不是传统的关系型数据库中的表。它具有高可用性、可扩展性和灵活性等优点,因此在大数据和云计算领域得到广泛应用。 2. MongoDB的优点是什么? 答:MongoDB具有以下优点: - 高可用性:MongoDB支持主从复制和分片,可以保证数据的高可用性和可靠性。 - 可扩展性:MongoDB可以通过添加更多的节点来扩展数据库的容量和性能。 - 灵活性:MongoDB使用文档存储数据,可以存储不同结构的数据,非常灵活。 - 高性能:MongoDB使用内存映射技术,可以快速读取数据。 - 开源免费:MongoDB是开源的,可以免费使用。 3. MongoDB的数据模型是什么? 答:MongoDB使用文档存储数据,文档是一个键值对的集合,类似于JSON格式。每个文档都有一个唯一的_id字段,用于标识该文档。文档可以包含嵌套文档和数组等复杂数据类型。 4. MongoDB的查询语言是什么? 答:MongoDB使用基于JSON的查询语言,称为MongoDB查询语言(MQL)。MQL支持各种查询操作,如等于、不等于、大于、小于、范围查询、正则表达式查询等。 5. MongoDB的索引是什么? 答:MongoDB支持各种类型的索引,包括单字段索引、复合索引、全文索引、地理空间索引等。索引可以提高查询性能和数据访问速度。 6. MongoDB的主从复制是什么? 答:MongoDB的主从复制是一种数据复制技术,用于提高数据的可用性和可靠性。主节点负责写入数据,从节点负责读取数据。主节点将写入的数据复制到从节点,从节点可以用于读取数据和备份数据。 7. MongoDB的分片是什么? 答:MongoDB的分片是一种数据分布技术,用于扩展数据库的容量和性能。分片将数据分布到多个节点上,每个节点负责存储一部分数据。客户端可以通过路由节点访问分片集群,路由节点负责将请求路由到正确的节点上。 8. MongoDB的事务是什么? 答:MongoDB的事务是一种数据操作技术,用于保证数据的一致性和完整性。事务可以将多个操作组合成一个原子操作,要么全部执行成功,要么全部回滚。MongoDB的事务支持多文档事务和分布式事务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值