MongoDB學習筆記之了解MongoDB
MongoDB的數據結構非常松散,是類似json的bjson格式,同時支持對數據建立索引。是一個面向集合的,模式自由的文檔型數據庫。
1.面向集合
意思是數據被分組存儲在數據集合中,被稱為一個集合
2.模式自由
意味著對于存儲在MongoDB 數據庫中的文件,我們不需要知道它的任何結構定義。提了這 么多次"無模式"或"模式自由",它到是個什么概念呢?例如,下面兩個記錄可以存在于同一 個集合里面:
- {"welcome" : "Beijing"} {"age" : 25}
特點:
面向集合存儲,易于存儲對象類型的數據
- 模式自由
- 支持動態查詢
- 支持完全索引,包含內部對象
- 支持查詢
- 支持復制和故障恢復
- 使用高效的二進制數據存儲,包括大型對象(如視頻等)
- 自動處理碎片,以支持云計算層次的擴展性
- 文件存儲格式為BSON(一種JSON的擴展)
體系結構:
- 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是否有大小合適的盤區可以使用,這樣就回收空閑的磁盤空間。
原文鏈接:http://www.cnblogs.com/zhy4606/archive/2011/09/13/2174411.html
【編輯推薦】