1. 程式人生 > >MongoDB資料檔案結構

MongoDB資料檔案結構

.ns檔案記錄著若干個集合名稱空間和索引名稱空間。

一個集合名稱空間又有多個數據域(extent),集合名稱空間裡儲存著集合的元資料,比如集合名稱,集合的第一個資料域和最後一個數據域的位置等等。而一個數據域由若干條文件(document)組成,每個資料域都有一個頭部,記錄著第一條文件和最後一條文件的為知,以及該資料域的一些元資料。extent之間,document之間通過雙向連結串列連線。



每頁的儲存空間為4K

TotalSize(4)| { BSONType(1)| FieldName | Data } * EOO(1)

TotalSize:Document轉換為BSON後的總長度,4個位元組表示

BSONType:Data的資料型別,佔一個位元組

FieldName:欄位名,例子中的hello,key/value的"key",UTF-8字串,字串都有一個結束符'\0'

Data:key/value的value,例子中的"world",如果是字串則在Data前需要另加四個位元組儲存Data的長度,如果是其他格式可以參考官網規範

*:key/value的對數,比如{"hello":"world", "hello1":"world1"},有兩對

EOO:結束符,\x00

分析例子{"hello":"world"}的長度:

TotalSize(4) + BSONType(1) + FieldName(5+1) + Data(4 + 5 + 1) + EOO(1) = 22 位元組


Record: