• 了解mongoDB存储结构


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

      MongoDB 深入浅出

    数据逻辑结构

     

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

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

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

    一个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.0foo.1被分配到了相应的盘区对应不同的名字空间。

     

     

     

     

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

  • 相关阅读:
    PHP-配置方法
    正则表达式-基础使用整理
    SEO-长尾词与分词技术
    SEO-站外优化规范
    SEO-站内优化规范
    SEO-友情链接注意事项
    java netty之ServerBootstrap的启动
    [curator] Netflix Curator 使用
    Netty5.x中新增和值得注意的点
    带连接池的netty客户端核心功能实现剖解
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3579519.html
Copyright © 2020-2023  润新知