mongodb資料檔案格式
本文適合於對mongodb有一定了解的朋友
閱讀。mongodb的資料檔案存在dbpath選項指定的目錄裡。每個庫(database)都有一系列的檔案:dbname.ns, dbname.0, dbname.1, ...資料檔案也叫pdfile,意思是portable data file。
www.2cto.com
dbname.ns檔案
dbname.ns檔案儲存命名空間資訊。在mongodb裡,每個collection都具有乙個命名空間,名字為dbname.collection_name。dbname.ns檔案儲存的是乙個雜湊表節點陣列。key是根據命名空間的名字,value是命名空間資訊。雜湊表節點的大小是628位元組,dbname.ns檔案的預設大小是16m,一共可以存放26715個命名空間。nssize選項可以設定dbname.ns檔案的大小。
相關**類
namespaceindex namespaceindex is the ".ns" file you see in the data directory
namespacedetails 命名空間資訊,儲存在雜湊表節點裡面。
hashtable 雜湊表實現
dbname.系列檔案
dbname.系列檔案儲存了每個庫的所有資料,其檔案格式為
--------------------------------------------
datafileheader
--------------------------------------------
extent (for a particular namespace)
record
...record (some chained for unused space)
--------------------------------------------
more extents...
--------------------------------------------
datafileheader是資料檔案的頭部,後面的部分為extent。檔案空間的分配以extent為單位。每個命名空間的所申請的extent形成乙個雙向鍊錶,表頭和表尾存在命名空間資訊裡。record即記錄,在extent裡分配,每個extent裡的所有record形成乙個雙向鍊錶,表頭和表尾存在extent頭部。可以想到,對命名空間的所有record的遍歷方法為:遍歷extent鍊錶,對每個extent,遍歷其record鍊錶。空閒的record(extent裡剩餘的空間、或者record被刪除),稱作deleterecord,根據其大小,形成19個單向鍊錶(表頭也存在命名空間裡)。可以想到,申請乙個record的方法:先從空閒的record裡面找;如果找不到,則分配新的extent。
當乙個命名空間被刪除的時候,它的所有的extent都會掛到名為$freelist的collection的extent鍊錶中。那麼,分配extent的時候,會先從$freelist的extent鍊錶中尋找。如果找不到,就申請新的extent。
常見資料檔案格式
hex檔案 hex hex檔案是十六進製制檔案,整個檔案以行為單位,每行以冒號開頭,內容全部為16進製製碼 以ascii碼形式顯示 第乙個位元組 0x10表示本行資料的長度 第二 三位元組 0x00 0x08表示本行資料的起始位址 第四位元組 0x00表示資料型別,資料型別有 0x00 0x01 0...
儲存系統實現 資料檔案格式
在第一篇中講到了整個索引檔案的實現方式與檢索方式的實現,這一篇中講到我實現的各個檔案的結構。儲存管理檔案 這個檔案的作用主要是對資料檔案進行分塊管理,管理資料檔案塊是否使用,還有相應的偏移位置,申請資料檔案塊都需要從這裡進行申請。對於檔案的 也相應的改這個檔案的狀態。下面畫的是該檔案的結構 索引檔案...
mongodb 資料檔案太大
問題 開發伺服器mongodb資料檔案太大。占用近80g,其中某個db占用最大 運營環境這個db的資料只有3g大小 分析 開發環境有大量測試的 增加 刪除 修改 操作,長期以來會導致資料檔案非常大,但 實際儲存資料並不是很多.129m db name.1 2.1g db name.10 2.1g d...