posts - 110, comments - 101, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

                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.0foo.1被分配到了相應的盤區對應不同的名字空間。

           

           

           

           

          從上圖可以看出,每個命名空間可以包含多個不同的盤區,這些盤區并不是連續的,與數據增長一樣,每一個命名空間的盤區大小也隨著分配的次數不斷增長。在上圖有個foo.$freelist命名空間,這個命名空間用于記錄不再使用的盤區(如被刪除的collection或索引),每當命名空間需要分配新的盤區時,就會檢查.$freelist是否有合適大小的空間,這樣就可以回收空閑的磁盤空間了。

           

           

           

           


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 宝坻区| 穆棱市| 江永县| 甘谷县| 安陆市| 田东县| 盐池县| 临安市| 皋兰县| 唐海县| 和顺县| 广饶县| 达孜县| 凤山县| 大邑县| 新郑市| 武汉市| 白山市| 大庆市| 同心县| 马龙县| 临沭县| 景宁| 阿勒泰市| 琼结县| 石棉县| 土默特左旗| 樟树市| 永德县| 绍兴市| 耒阳市| 泽州县| 当阳市| 延长县| 巴林左旗| 资中县| 都匀市| 独山县| 九寨沟县| 双柏县| 兴海县|