MongoDB資料檔案結構
阿新 • • 發佈:2018-11-09
.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: