首页 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
资讯 业界资讯 软件杂谈 编程开发 网站建设 网络观查 搜索引擎 移动应用 网站运营 网络地图
开发 移动开发 Web前端 架构设计 编程语言 互联网 数据库 系统运维 云计算 开发杂谈
[互联网] 第一部分 基础篇 第三章 MongoDB体系结构
第一部分 基础篇 第三章 MongoDB体系结构

声明:该文章主要来自《MongoDB实战》一书内容,主要想通过该书学习MongoDB的相应知识,加深理解,故写在自己的博文当中,作为记录,在最后的章节中,会有一个自己集合MongoDB数据库应用的JavaEE的web应用。
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)。

文档(Document)、集合(Collection)、数据库(Database)的层次结构如下图:



对于习惯了关系型数据库的朋友们,我将MongoDB与关系型数据库的逻辑结构进行了对比,以便让大家更深刻的理解MongoDB的逻辑结构:





3.2、数据存储结构
MongoDB对国内用户来说比较新,它就像是一个黑盒子,但是如果对于它内部的数据存储了解多一些的话,那么就会很快的理解和驾驭MongoDB,让它发挥更大的作用。
MongoDB的默认数据目录是/daba/db,它负责存储所有的MongoDB的数据文件,在MongoDB内部,每个数据库都包含一个.ns文件和一些数据文件,而且这些文件会随着数据量的增加变的越来越多,所以如果系统中有一个叫做foo的数据库,那么构成foo这个数据库的文件就会由foo.ns、foo.0、foo.1、foo.2等组成,具体如下:



MongoDB内部有预分配空间的机制,每个预分配的文件都用0进行填充,由于有了这个机制,MongoDB始终保持额外的空间和空余的数据文件,从而有效避免了由于数据暴增而带来的磁盘压力过大的问题。
由于表中数据量的增加,数据文件每新分配一次,它的大小都会是上一个数据文件大小的2倍,每个数据文件最大2G,这样的机制有利于防止较小的数据库浪费过多的磁盘空间,同时又能保证较大的数据库有相应的预留空间使用。
数据库的每张表都对应一个命名空间,每个索引也有对应的命名空间,这些命名空间的元数据集中在*.ns文件中。
在下图中。foo这个数据库包含3个文件用于存储表和索引数据,foo.2文件属于预分配的空文件,foo.0和foo.1这两个数据文件被分为了相应的盘区对应不同的名字空间。



上图显示了命名空间和盘区的关系,每个命名空间可以包含多个不同的盘区,这些盘区并不是连续的,与数据文件的增长相同,每个命名空间对应的盘区大小的而是随着分配的次数不断增长的,这样做的目的是为了平衡命名空间浪费的空间与保持某一个命名空间中数据的连续性,上图中还有一个需要注意的命名空间:$freelist,这个命名空间用户记录不再使用的盘区(被删除的Collection或者索引),每当命令空间需要分配新的盘区的时候,都会先查看$freelist是否有大小合适的盘区可以使用,这样就回收空闲的磁盘空间。


 此文从网络中自动搜索生成,不代表本网站赞成被搜索网站的内容或立场    查看原文
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 新闻资讯 小游戏 Chinese Culture 股票 三丰软件 开发 中国文化 网文精选 阅读网 看图 日历 万年历 2018年9日历
2018-9-25 15:44:02
 
  网站联系 软件世界网-www.sjsjw.com ©2014 蜀ICP备06016416号 三峰网旗下网站