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副本集提供了高可用性、高性能、横向扩展能力
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 1.4 初探Spring – 采用Java配置类管理Bean
一、采用Java配置类管理Bean 1、打开项目 Maven项目 – SpringDemo 2、创建子包 在net.hf.spring包里创建day04子包 3、创建杀龙任务类 在day04子包里创建杀龙任务类 – SlayDragonQuest packag…