MongoDB详解(二)——MongoDB架构与原理

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: MongoDB详解(二)——MongoDB架构与原理

今天继续给大家介绍Linux运维相关知识,本文主要内容是MongoDB架构与原理。

一、MongoDB架构简介
MongoDB采取主从架构,官方建议3个节点组成副本集,MongoDB的架构图如下所示:

注意,在上图中,Primary主库会讲其数据信息同步到Secondary从库上,但是与MySQL主从同步架构不同的是,在MongoDB的架构中,对数据库的读和写都会发送给到Primary主库上去。

二、MongoDB副本集
MongoDB的副本集是一组配置成可自动同步数据和进行故障切换的节点。早期版本的MongoDB复制只提供数据同步,但是不支持故障切换,因此现在已经被副本集所替代。MongoDB的journaling日志功能也提供了数据保护能力,与副本集相比,journaling可以大幅度提升故障和数据恢复的速度,常与副本集一起使用。
一个MongoDB的副本集至少有三个节点组成,其中提供读写功能的Primary节点有且仅有一个,提供数据备份的副节点(Secondary)可以有一个或者多个。副节点采用长轮询(Long Polling)机制,可以准实时的从主节点local集合中获取包含数据变化的oplog,并应用于副节点库。
总的来看,MongoDB的副本集优点有以下三点:
1、提供数据保护、负载均衡和容灾能力。
2、可以进行节点心跳的检查,以检测和维护副本集。
3、通过选举机制完成故障切换。

三、MondoDB存储引擎
MongoDB中有一个核心组件——存储引擎,其负责管理和组织数据采取什么样的格式存储在硬盘和内存上。MongoDB支持的存储引擎有wiredTiger、MMAPv1、In-memory,在MongoDB3.2版本以前,默认的存储引擎是wiredTiger,在3.2版本之后和4.0版本之前,默认的存储引擎是MMAPv1,在4.0版本之后,默认的存储引擎是In-memory。
MMAPv1引擎是一种多数据引擎,即在一个MongoDB复制集中,可以有多种存储并存,这可以满足应用更为复杂的需求。In-memeor引擎即可以将数据只存储的内存中,还可以将数据持久化到硬盘中。当只将数据存储到内存中时,只会讲少量的元数据和诊断文件存储到硬盘中,这样减少了磁盘I/O的消耗,大大降低了数据查询的延时。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_40228200/article/details/124812623

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
11天前
|
存储 缓存 NoSQL
MongoDB内部的存储原理
这篇文章详细介绍了MongoDB的内部存储原理,包括存储引擎WiredTiger的架构、btree与b+tree的比较、cache机制、page结构、写操作流程、checkpoint和WAL日志,以及分布式存储的架构。
26 1
MongoDB内部的存储原理
|
4月前
|
存储 监控 NoSQL
MongoDB索引解析:工作原理、类型选择及优化策略
MongoDB索引解析:工作原理、类型选择及优化策略
|
11天前
|
存储 缓存 Java
JAVA并发编程系列(11)线程池底层原理架构剖析
本文详细解析了Java线程池的核心参数及其意义,包括核心线程数量(corePoolSize)、最大线程数量(maximumPoolSize)、线程空闲时间(keepAliveTime)、任务存储队列(workQueue)、线程工厂(threadFactory)及拒绝策略(handler)。此外,还介绍了四种常见的线程池:可缓存线程池(newCachedThreadPool)、定时调度线程池(newScheduledThreadPool)、单线程池(newSingleThreadExecutor)及固定长度线程池(newFixedThreadPool)。
|
1月前
|
存储 SQL Cloud Native
Hologres 的架构设计与工作原理
【9月更文第1天】随着大数据时代的到来,实时分析和处理数据的需求日益增长。传统的数据仓库在处理大规模实时数据分析时逐渐显露出性能瓶颈。为了解决这些问题,阿里巴巴集团研发了一款名为 Hologres 的新型云原生交互式分析数据库。Hologres 能够支持 SQL 查询,并且能够实现实时的数据写入和查询,这使得它成为处理大规模实时数据的理想选择。
46 2
|
2月前
|
存储 分布式计算 Hadoop
ChunkServer 原理与架构详解
【8月更文第30天】在分布式文件系统中,ChunkServer 是一个重要的组件,负责存储文件系统中的数据块(chunks)。ChunkServer 的设计和实现对于确保数据的高可用性、一致性和持久性至关重要。本文将深入探讨 ChunkServer 的核心原理和内部架构设计,并通过代码示例来说明其实现细节。
33 1
|
2月前
|
数据采集 存储 Java
Flume Agent 的内部原理分析:深入探讨 Flume 的架构与实现机制
【8月更文挑战第24天】Apache Flume是一款专为大规模日志数据的收集、聚合及传输而设计的分布式、可靠且高可用系统。本文深入解析Flume Agent的核心机制并提供实际配置与使用示例。Flume Agent由三大组件构成:Source(数据源)、Channel(数据缓存)与Sink(数据目的地)。工作流程包括数据采集、暂存及传输。通过示例配置文件和Java代码片段展示了如何设置这些组件以实现日志数据的有效管理。Flume的强大功能与灵活性使其成为大数据处理及实时数据分析领域的优选工具。
63 1
|
2月前
|
消息中间件 存储 SQL
Kafka架构及其原理
Kafka架构及其原理
76 1
|
3月前
|
NoSQL Redis
Redis 主从复制架构配置及原理
Redis 主从复制架构配置及原理
51 5
|
3月前
|
存储 NoSQL MongoDB
MongoDB 索引原理与索引优化
MongoDB 索引原理与索引优化
31 1
|
2月前
|
存储 缓存 Java
Eureka原理与实践:深入探索微服务架构的核心组件
在微服务架构日益盛行的今天,服务之间的注册与发现成为了保证系统高可用性和灵活性的关键。Eureka,作为Netflix开源的服务注册与发现框架,凭借其简单、健壮的特性,在微服务领域占据了举足轻重的地位。本文将深入剖析Eureka的原理,并通过实践案例展示其在实际项目中的应用,以期为开发者提供一个高端、深入的视角。
下一篇
无影云桌面