mongo体系架构学习
MongoDB是一个可移植的数据库,它在流行的每一个平台上都可以使用,即所谓的跨平台性,在不同的操作系统上虽然略有差别,但是从整体架构上来看,MongoDB在不同的平台上是一样的,如数据逻辑结构和数据存储等等。
一个运行着的MongoDB数据库就可以看成是一个MongoDB Server,该Server由实例和数据库组成,在一般情况下,一个MongoDB Server机器上包含一个实例或者多个与之对应的数据库,但是在特殊情况下,如硬件投入成本或者特殊的应用需求,也允许一个Server机器上可以有多 个实例或者多个数据库。
MongoDB中一系列物理文件(数据文件、日志文件等)的集合与之对应的逻辑结构(集合、文档等)被称之为数据库,简单的说,就是数据库是由一系列与磁盘有关系的物理文件的组成。
3.1、数据逻辑结构
很多人在学习MongoDB体系结构的时候会遇到各种各样的问题,我在这里给大家简
单的介绍下MongoDB体系结构之一的逻辑结构,MongoDB的逻辑结构是一种层次结构,主要由:文档(Document)、集合
(Collection)、数据库(database)这三部分组成,逻辑结构是面向用户的,用户使用MongoDB开发应用程序使用的就是逻辑结构。
- MongoDB的文档(Document),相当于关系数据库中的一行记录。
- 多个文档组成一个集合(Collection),相当于关系数据库的表。
- 多个集合(Collection),扩及上组织在一起,就是数据库(database)。
- 一个MongoDB实例支持多个数据库(database)。
的默认数据目录是/daba/db,它负责存储所有的MongoDB的数据文件,在MongoDB内部,每个数据库都包含一个.ns文件和一些数据文件,
而且这些文件会随着数据量的增加变的越来越多,所以如果系统中有一个叫做foo的数据库,那么构成foo这个数据库的文件就会由foo.ns、
foo.0、foo.1、foo.2等组成,具体如下:
图显示了命名空间和盘区的关系,每个命名空间可以包含多个不同的盘区,这些盘区并不是连续的,与数据文件的增长相同,每个命名空间对应的盘区大小的而是随
着分配的次数不断增长的,这样做的目的是为了平衡命名空间浪费的空间与保持某一个命名空间中数据的连续性,上图中还有一个需要注意的命名空
间:$freelist,这个命名空间用户记录不再使用的盘区(被删除的Collection或者索引),每当命令空间需要分配新的盘区的时候,都会先查
看$freelist是否有大小合适的盘区可以使用,这样就回收空闲的磁盘空间。
mongo体系架构学习的更多相关文章
- MySQL体系架构
MySQL体系架构 学习一门数据库系统首先得了解它的架构,明白它的架构原理对于后期的分析问题和性能调优都有很大的帮助,接下来就通过分析架构图来认识它. 数据库:物理操作系统文件或者其它文件的集合,在m ...
- 2020再见&新的计划(建立Android体系架构)
2020,再见 关于2020,我心中有四个关键词: 疫情 年初突如其来的疫情,打破了原本生活的节奏,也没想到会笼罩全世界整整一年,希望这个世界早点好起来吧. 科比 初三的早晨,噩耗传来,我一度不敢相信 ...
- Netty学习-IO体系架构系统回顾 & 装饰模式Decorator的具体使用
Netty学习-IO体系架构系统回顾 IO和NIO的学习 NIO - 1.4 开始出的 在网络应用框架中,NIO得到了大量的使用,特别是netty里面 前提:对IO及其了解 对IO的总结和回顾 理解J ...
- Oracle学习笔记—oracle体系架构及状态(nomount、mount和open)简介
oracle体系架构简介 先来简要了解一下Oracle数据库体系架构以便于后面深入理解,Oracle Server主要由实例(instance)和数据库(database)组成.实例(instance ...
- 说说面向服务的体系架构SOA
序言 在.Net的世界中,一提及SOA,大家想到的应该是Web Service,WCF,还有人或许也会在.NET MVC中的Web API上做上标记,然后泛泛其谈! 的确,微软的这些技术也确实推动着面 ...
- 、web前端的这么知识应该是怎样的一个知识体系架构?
.web前端的这么知识应该是怎样的一个知识体系架构?之前我以为可以以W3C为纲要,把W3C的东西学会了就够了.后来发现我错了,W3C还不全面. 真正全面的覆盖了web前端知识体系的东西是——浏览器内核 ...
- 面向服务的体系架构SOA
面向服务的体系架构SOA 序言 在.Net的世界中,一提及SOA,大家想到的应该是Web Service,WCF,还有人或许也会在.NET MVC中的Web API上做上标记,然后泛泛其谈! 的确,微 ...
- [转]OpenContrail 体系架构文档
OpenContrail 体系架构文档 英文原文:http://opencontrail.org/opencontrail-architecture-documentation/ 翻译者:@KkBLu ...
- mongo源码学习(三)请求接收传输层
在上一篇博客中(mongo源码学习(二)db.cpp之mongoDbMain方法分析),我们把db.cpp中的mongoDbMain的执行过程分析了一下,最后会调用initAndListen(serv ...
随机推荐
- K8S调度之pod亲和性
目录 Pod Affinity Pod亲和性调度 pod互斥性调度 Pod Affinity 通过<K8S调度之节点亲和性>,我们知道怎么在调度的时候让pod灵活的选择node,但有些时候 ...
- python---基础知识回顾(十)进程和线程(协程gevent:线程在I/O请求上的优化)
优点:使用gevent协程,可以更好的利用线程资源.(基于线程实现) 需求:使用一个线程,去请求多个网站的资源(注意,请求上会有延时)<实际上是去请求了大量的网站信息,我们使用了多线程,只不过每 ...
- JS中的异步与回调
问题的引出:在js中使用异步调用时,有可能会出现在异步的回调函数中设置调用之外的变量值,但在异步调用完成后去使用变量,却发现这些变量值并没有被成功设置的情况.如: google map中的地理编码,地 ...
- Spring MVC处理响应的 header
我们经常需要在HttpResponse中设置一些headers,我们使用Spring MVC框架的时候我们如何给Response设置Header呢? So easy, 看下面的代码: @Request ...
- Django 2.0.1 官方文档翻译: 编写你的第一个 Django app,第四部分(Page 9)
编写你的第一个 Django app,第四部分(Page 9)转载请注明链接地址 该教程上接前面的第三部分.我们会继续开发 web-poll 应用,并专注于简单的表单处理和简化代码. 写一个简单的表单 ...
- Android SDK更新失败对策
Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml Failed to fetch URL https:// ...
- Linux系统接入小区宽带
jollywing(jollywing@foxmail.com) 安装 rp-pppoe 今天去联通营业厅开通了家庭宽带,回到家就搜索怎么用Linux接入小区宽带,发现大多数人都选择用PPPOE拨号上 ...
- select标签的描述
1.标签html与js如下代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...
- 【原创】Linux环境下的图形系统和AMD R600显卡编程(1)——Linux环境下的图形系统简介
Linux/Unix环境下最早的图形系统是Xorg图形系统,Xorg图形系统通过扩展的方式以适应显卡和桌面图形发展的需要,然而随着软硬件的发展,特别是嵌入式系统的发展,Xorg显得庞大而落后.开源社区 ...
- 64_t8
trytond-account-de-skr03-4.0.0-3.fc26.noarch.rpm 12-Feb-2017 13:06 53278 trytond-account-invoice-4.0 ...