redis:
– interruptThread---只处理信号量。
– DataFileSync::run(后台)---调用MemoryMappedFile::flush方法将内存中的数据(脏页)刷到磁盘上。 我们知道,mongodb是调用mmap把磁盘中的数据映射到内存中的,所以必须有一个机制时刻的刷数据到硬盘才能保证可靠性,多久刷一次是与syncdelay参数相关的。
– FileAllocator::run---用于分配新文件,它决定分配文件的大小,例如用翻倍的方式。
– durThread--做批量提交和回滚工作。
– SnapshotThread::run---将生成快照文件帮助快速恢复
– ClientCursorMonitor::run---将管理用户的游标,每4秒调用一次idleTimeReport()方法,每一分钟调用sayMemoryStatus()方法
– PeriodicTask::Runner::run---将从动态数组std::vector<PeriodicTask* > _tasks中获取周期性任务执行
– TTLMonitor::run---理TTL,通过调用doTTLForDB()方法检查所有db。
– replSlaveThread---是当前结点作为secondary时的同步线程
– replMasterThread---是当前结点作为master时的同步线程。
– webServerThread
– 处理数据库请求的主线程
每一个数据库都有自己独立的文件。如果你开启了directoryperdb选项,那你每个库的文件会单独放在一个文件夹里。
数据库文件在内部会被切分成单个的块,每个块只保存一个名字空间的数据。在MongoDB中,名字空间用于区分不同的存储类别。比如每个collection有一个独立的名字空间,每个索引也有自己的名字空间。
在一个块中,会保存多条记录,每条记录是BSON格式的,记录与记录之间通过双向链表进行连接。
索引数据也存在数据文件中,不过索引是被组织成B Tree结构,而不是双向链表。
对每个数据库,有一个命名空间文件,用于保存每个名字空间对应的元数据。我们通过查询这些元数据来找到对应的名字空间的存储块位置。
如果你开启了jorunaling日志,那么还会有一些文件存储着你所有的操作记录
– DataFileSync::run(后台)---调用MemoryMappedFile::flush方法将内存中的数据(脏页)刷到磁盘上。 我们知道,mongodb是调用mmap把磁盘中的数据映射到内存中的,所以必须有一个机制时刻的刷数据到硬盘才能保证可靠性,多久刷一次是与syncdelay参数相关的。
journal(进行恢复用)是Mongodb中的redo log,而Oplog则是负责复制的binlog(对应Mysql)。
如果打开journal,那么即使断电也只会丢失100ms的数据,这对大多数应用来说都可以容忍了。从1.9.2+
,mongodb都会默认打开journal功能,以确保数据安全。而且journal的刷新时间是可以改变的,2-300ms的
范围,使用 --journalCommitInterval 命令。
Oplog和数据刷新到磁盘的时间是60s,对于复制来说,不用等到oplog刷新磁盘,在内存中就可以直接复
制到Sencondary节点。
相关推荐
学习千锋教育的mongodb和redis数据库教程文档资料,你可以深入理解这两种数据库的原理、操作和最佳实践。通过这些文档,你将掌握如何安装配置数据库,如何进行数据操作,如何设计合适的数据库架构,以及如何优化性能...
MongoDB和Redis是两种非常流行的NoSQL数据库,它们在现代数据存储和处理中扮演着重要角色。本资料包“左手MongoDB,右手Redis.zip”包含了关于这两种数据库的深入理解和实践指导,主要通过PDF文档的形式呈现。 ...
在构建一个基于SpringMVC、MongoDB和Redis的初步架构设计时,我们需要深入了解这三大技术以及它们如何协同工作。SpringMVC是Spring框架的一部分,主要用于处理Web应用的模型-视图-控制器(MVC)结构。MongoDB是一个...
通过实际操作和实践,可以深入理解这两个数据库的工作原理,学习如何优化查询性能,如何设计高可用和可扩展的数据库架构,以及如何在具体项目中有效地整合这两个数据库。同时,这些资源也可能包含一些最佳实践和常见...
本压缩包“mysql+mongodb+redis.rar”包含了三个主流的数据库系统:MySQL、MongoDB和Redis,它们各自有着独特的特性和用途。以下是对这三个数据库系统的详细介绍: 1. **MySQL**: MySQL是一款开源、免费的关系型...
spring 使用MongoDB/redis使用示例,简单易懂
### NoSQL数据库-MongoDB和Redis #### 一、NoSQL简述 NoSQL数据库的出现是为了应对传统关系型数据库无法解决的一些问题,特别是在大规模数据处理方面。CAP理论(Consistency,Availability,Partition Tolerance)...
m-mall-admin后台管理界面演示用户名/密码admin/123456项目说明基于Node.js、MongoDB、Redis开发的系统基于Express提供RESTful API基于apidoc提供接口文档基于Angular.js、Ionic、Webpack部署基础基于 ECMAScript 6 ...
Discord Clone 使用 React、ReactQuery、Tailwindcss、Redux、Socket IO、NodeJS、Express、MongoDB 和 Redis。Discord Clone 使用 React、ReactQuery、Tailwindcss、Redux、Socket IO、NodeJS、Express、MongoDB 和...
这个平台的前端采用了Vue.js框架,后端使用了Node.js与Koa2,数据库部分则选择了MongoDB和Redis。接下来,我们将详细探讨这些技术及其在项目中的应用。 首先,Vue.js是一个轻量级、高性能的JavaScript框架,用于...
结果:本项目为基于sanic异步IO框架设计的Python后端服务源码,包含51个文件,其中包括45个Python源代码文件、2个文本描述文件、1个Git忽略规则...该服务封装了mongodb和redis功能,旨在加速后端Python服务的开发过程。
在本项目中,我们利用Koa作为Web应用框架,MongoDB作为主要的数据存储,Redis...通过这个项目,学生不仅可以掌握Koa、MongoDB和Redis的基本用法,还能了解到如何将它们整合到一个实际的应用中,从而提升Web开发技能。
dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis, dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis整合
这通常通过在`pom.xml`文件中引入Maven依赖来完成,例如MongoDB的`spring-boot-starter-data-mongodb`和Redis的`spring-boot-starter-data-redis`。 MongoDB的集成涉及创建MongoDB的配置类,设置数据库连接信息,如...
本示例项目整合了多种数据库技术,包括 MongoDB、Redis 和 MyBatis,同时使用 MySQL 作为传统的关系型数据库。 MongoDB 是一个基于分布式文件存储的非关系型数据库,适用于处理大量数据的场景,尤其适合文档型数据...
在实践中,理解数据模型的概念(如文档、集合和数据库)以及如何有效地利用这些概念来设计数据结构至关重要。 其次,Redis作为一个高性能的键值存储系统,广泛用于缓存、消息队列和实时数据分析等领域。PHP与Redis...
在本项目中,我们主要利用Spring Boot、MongoDB和Redis三个关键组件来构建一个高性能的RESTful API服务。下面将详细解析这些技术及其在项目中的应用。 **Spring Boot** Spring Boot是Spring框架的一个子项目,旨在...
一个node.js Hapi服务器,使用MongoDB和Redis在本地和OpenShift上运行
mysql, mongodb, redis三大数据库的基本是用命令, 以及举例