1、概念
BSON(Binary Serialized Document Format)是一種類json的一種二進制形式的存儲格式,簡稱Binary JSON,它和JSON一樣,支持內嵌的文檔對象和數組對象,但是BSON有JSON沒有的一些數據類型,如Date和BinData類型。
BSON可以做為網絡數據交換的一種存儲形式,這個有點類似於Google的Protocol Buffer,但是BSON是一種schema-less的存儲形式,它的優點是靈活性高,但它的缺點是空間利用率不是很理想。
BSON有三個特點:輕量性、可遍歷性、高效性。
{“hello":"world"} 這是一個BSON的例子,其中"hello"是key name,它一般是cstring類型,字節表示是cstring::= (byte*) "/x00" ,其中*表示零個或多個byte字節,/x00表示結束符;后面的"world"是value值,它的類型一般是string,double,array,binarydata等類型。
2、使用情況
MongoDB使用了BSON這種結構來存儲數據和網絡數據交換。把這種格式轉化成文檔這個概念(Document),因為BSON是schema-free的,所以在MongoDB中所對應的文檔也有這個特征,這里的一個Document也可以理解成關系數據庫中的一條記錄(Record),只是這里的Document的變化更豐富一些,如Document可以嵌套。
MongoDB以BSON做為其存儲結構的一種重要原因是其可遍歷性。
3、例子
3.1 一個Document的BSON表示
{ title:"MongoDB", last_editor:"192.168.1.122", last_modified:new Date("27/06/2011"), body:"MongoDB introduction", categories:["Database","NoSQL","BSON"], revieved:false }
這是一個簡單的BSON結構體,其中每一個element都是由key/value對組成的。
3.2 一個嵌套的例子
{ name:"lemo", age:"12", address:{ city:"suzhou", country:"china", code:215000 }, scores:[ {"name":"english","grade:3.0}, {"name":"chinese","grade:2.0} ] }
這是一種相對復雜點的例子,其中包括了地址對象和分數對象數組,這里使用了嵌套文檔對象與文檔對象數據來表示單個學生的信息,這種嵌套的文檔結構要使用關系數據庫來做是比較復雜的。