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 是否有合適大小的空間,這樣就可以回收空閑的磁盤空間了。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
