mongoDB 深入浅出一 了解mongoDB存储结构

  MongoDB 深入浅出

数据逻辑结构

1 mongoDB中的文档(document) 相当于 关系性数据库的一条一条的记录

2 collection 相当于关系性数据库中的表,所以一个collection中有多个document

3 多个集合在逻辑上组成一起 就是database

4 一个mongoDB 和 关系性数据库一样 可以有多个数据库(database)

与关系数据结构比较

MongoDB

关系性数据库

文档(document)

行(row)

集合(collection)

表(table)

Database

Database

数据存储结构

MongoDB 默认的数据目录是data/db,它负责存储所有mongodb的数据文件,在mongoDB中每个数据库都包含一个.ns和一些数据文件,而且这些数据文件会随着数据的增多越来越多,则: 如果系统中有一个叫foo的数据库,那么构成foo这个数据库的文件就会有foo.ns ,foo.0,foo1,foo.2等。

Mongodb内部有预分配空间的机制,每个预分配的文件都用0填充,由于有了这个机制,

mongoDB始终保存额外的空间和空闲的文件,这对系统数据突然暴增时减缓磁盘压力有很大好处.

由于数据量的不断增加,mongoDB每新分配一次,大小都会是上一个文件大小的2倍,最大2G.这种机制保证系统数据较小时 不会浪费太多空间,系统数据较多时 也有相应预留空间。

mongoDB命名空间

每张表都有命名空间,每个索引也有对应的命名空间,这些命令空间的元数据都存在.ns文件中

在下图中,foo数据库包含3个文件存储数据与索引,foo.2文件属于预分配文件,foo.0和foo.1被分配到了相应的盘区对应不同的名字空间。

从上图可以看出,每个命名空间可以包含多个不同的盘区,这些盘区并不是连续的,与数据增长一样,每一个命名空间的盘区大小也随着分配的次数不断增长。在上图有个foo.$freelist命名空间,这个命名空间用于记录不再使用的盘区(如被删除的collection或索引),每当命名空间需要分配新的盘区时,就会检查.$freelist是否有合适大小的空间,这样就可以回收空闲的磁盘空间了。

了解mongoDB存储结构的更多相关文章

  1. MongoDB的存储结构及对空间使用率的影响

    MongoDB的存储结构及对空间使用率的影响 使用MongoDB一段时间的同学肯定会发现,MongoDB往往会占用比实际数据大小多不少空间的问题.如果利用db.stats()命令去查看,会发现Mong ...

  2. Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程

    Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一) 图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图.那么如何在Asp.Net Core W ...

  3. 基于Redis+MySQL+MongoDB存储架构应用

    摘  要: Redis+MySQL+MongoDB技术架构实现了本项目中大数据存储和实时云计算的需求.使用MongoDB切片的水平动态添加,可在不中断平台业务系统的同时保障扩容后的查询速度和云计算效能 ...

  4. Cassandra 的数据存储结构——本质是SortedMap<RowKey, SortedMap<ColumnKey, ColumnValue>>

    Cassandra 的数据存储结构 Cassandra 的数据模型是基于列族(Column Family)的四维或五维模型.它借鉴了 Amazon 的 Dynamo 和 Google's BigTab ...

  5. 使用 MongoDB 存储商品分类信息

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 这是一篇MongoDB官网上的一篇文章,分析了使用MongoDB存储商品分类信息相比其他数据库的优势,并讲述 ...

  6. MongoDB_文档存储结构(三)

    MongoDB 文档数据库的存储结构分为四个层次,从大到小依次是:数据库(database).集合(collection).文档(document).键值对. 图 1 描述了 MongoDB 与 My ...

  7. MongoDB 存储引擎和数据模型设计

    标签: MongoDB NoSQL MongoDB 存储引擎和数据模型设计 1. 存储引擎 1.1 存储引擎是什么 1.2 MongoDB中的默认存储引擎 2. 数据模型设计 2.1 内嵌和引用 2. ...

  8. Java数据结构——树的三种存储结构

    (转自http://blog.csdn.net/x1247600186/article/details/24670775) 说到存储结构,我们就会想到常用的两种存储方式:顺序存储和链式存储两种. 先来 ...

  9. Atitit.数据索引 的种类以及原理实现机制 索引常用的存储结构

    Atitit.数据索引 的种类以及原理实现机制 索引常用的存储结构 1. 索引的分类1 1.1. 按照存储结构划分btree,hash,bitmap,fulltext1 1.2. 索引的类型  按查找 ...

随机推荐

  1. Unity3D 如何图形问题修正旋转模型已导入?

     如何纠正旋转模型被导入? 一些立体艺术资源包导出其模式,以便 Z 轴向上.Unity 大多数标准的脚本中假定的三维世界 Y 轴代表了.在 Unity 比改动脚本使其契合easy得多. Z 轴朝上 ...

  2. Linux GPIO 注册和应用

    Linux GPIO 注册和应用 Linux Kernel, GPIO, ARM 于Linux kernel代码.经常使用 GPIO 作为一个特殊的信号,如芯片片选信号. GPIO 功能应用,我们经常 ...

  3. 面向对象三大特征之封装与static——(Java学习笔记四)

    面向对象     编程本质:以类的方式组织代码,以对象的方式组织(封装)数据 对象:具体的事物,某个类的对象(实例) 类:是对对象的抽象,用于描述同一类型的对象的一个抽象概念 对象和类的关系:特殊到一 ...

  4. Node.js v0.10.31API手工-DNS

    原版的API品种,这是从以前的翻译和翻译风格不同 Node.js v0.10.31API手冊-文件夹 DNS 使用 require('dns') 引入此模块. dns 模块中的全部方法都使用了 C-A ...

  5. 大数据系列修炼-Scala课程03

    前言 今天上班看了很多关于前端js,jQuery.bootstrap.js以及springMVC看得迷迷糊糊的,毕竟以前很少去学习前端的技术,所有看得有点困,还好看得比较多,回家后也开始学习关于Sca ...

  6. JS扩展 或 Jquery的扩展写法

    <script>//JS扩展String函数test,其它类推String.prototype.test = function(s){ alert(this+s);}var str = ' ...

  7. URAL 1404. Easy to Hack! (模拟)

    space=1&num=1404">1404. Easy to Hack! Time limit: 1.0 second Memory limit: 64 MB When Vi ...

  8. Unity插件之NGUI学习(6)—— 关于Widget怎样加入触发事件(触发OnClick)

    NGUI中,Button本身就带有OnClick事件,可是Sprite,Label等( 也绑有Widget的)并没有触发事件,事实上NGUI的事件触发都必须加入Box Collider,并勾选Is T ...

  9. net.sf.json 迄今 时刻 格式 办法

    创作工具类 import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import  ...

  10. Java业务原子性的一种实现(key 独占访问)

    开发过程中,有时候为了解决多线程竞争问题需要加锁,通常锁定的对象是class,object,method,但在特定时候我们需要更细粒度的加锁,也就是根据不同输入参数来锁定不同的资源,这样只有调用此方法 ...