MongoDB的數據結構非常松散,是類似json的bjson格式,同時支持對數據建立索引。是一個面向集合的,模式自由的文檔型數據庫。
?
1.面向集合
意思是數據被分組存儲在數據集合中,被稱為一個集合
2.模式自由
意味著對于存儲在MongoDB 數據庫中的文件,我們不需要知道它的任何結構定義。提了這 么多次"無模式"或"模式自由",它到是個什么概念呢?例如,下面兩個記錄可以存在于同一 個集合里面: ?
{"welcome" : "Beijing"} {"age" : 25}
?
特點:?
??面向集合存儲,易于存儲對象類型的數據?
?
體系結構:
MongoDB 中一系列物理文件(數據文件,日志文件等)?
MongoDB 的文檔(document),相當于關系數據庫中的一行記錄。?
? 多個文檔組成一個集合(collection),相當于關系數據庫的表。?
多個集合(collection),邏輯上組織在一起,就是數據庫(database)?
數據存儲結構:
在MongoDB 內部,每個數據庫都包含一個.ns 文件和一些數據文件,而且這些數據文件會隨著數據量的 增加而變得越來越多。所以如果系統中有一個叫做 foo的數據庫,那么構成foo這個數據庫 的文件就會由foo.ns,foo.0,foo.1,foo.2 等等組成?
?MongoDB 內部有預分配空間的機制,每個預分配的文件都用 0 進行填充,由于有了這個機制, MongoDB始終保持額外的空間和空余的數據文件,從而有效避免了由于數據暴增而帶來的磁盤壓力過大的問題。
? 由于表中數據量的增加,數據文件每新分配一次,它的大小都會是上一個數據文件大小的2 倍,每個數據文件最大 2G。這樣的機制有利于防止較小的數據庫浪費過多的磁盤空間,同 時又能保證較大的數據庫有相應的預留空間使用。
數據庫的每張表都對應一個命名空間,每個索引也有對應的命名空間。這些命名空間的元數 據都集中在*.ns文件中。?
需要注意的命名空間:$freelist,這個命名空間用于記錄不再使用 的盤區(被刪除的 Collection 或索引)。每當命名空間需要分配新的盤區的時候,都會先查 看$freelist是否有大小合適的盤區可以使用,這樣就回收空閑的磁盤空間。
??
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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