您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關BSON如何優化來實現目標的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
BSON是由10gen開發的一個數據格式,目前主要用于MongoDB中,是MongoDB的數據存儲格式。BSON基于JSON格式,選擇JSON進行改造的原因主要是JSON的通用性及JSON的schemaless的特性。
1.更快的遍歷速度
對JSON格式來說,太大的JSON結構會導致數據遍歷非常慢。在JSON中,要跳過一個文檔進行數據讀取,需要對此文檔進行掃描才行,需要進行麻煩的數據結構匹配,比如括號的匹配,而BSON對JSON的一大改進就是,它會將JSON的每一個元素的長度存在元素的頭部,這樣你只需要讀取到元素長度就能直接seek到指定的點上進行讀取了。
MongoDB優化:對于MongoDB來說,由于采用了MMAP來做內存與數據文件的映射,在更新或者獲取Document的某一個字段時,如果需要先讀取其前面的所有字段,會導致物理內存由于讀操作被加載到不必要的字段上,導致資源的不合理分配。而采用BSON只需要讀到相應的位置然后跨過無用內容讀取需要內容即可。
2.操作更簡易
對JSON來說,數據存儲是無類型的,比如你要修改基本一個值,從9到10,由于從一個字符變成了兩個,所以可能其后面的所有內容都需要往后移一位才可以。而使用BSON,你可以指定這個列為數字列,那么無論數字從9長到10還是100,我們都只是在存儲數字的那一位上進行修改,不會導致數據總長變大。當然,在MongoDB中,如果數字從整形增大到長整型,還是會導致數據總長變大的。
MongoDB優化:所以使用MongoDB的一個技巧是將長度可能變化的字段盡量命名靠后(MongoDB在update操作后會將字段按key值按字母順序重排,所以靠后的意思是按a-z的順序取名)。這樣在更新的時候如果導致數字變長,不需要移動大量數據。一個典型的例子是如果用二進制類型存儲文件時,如果文件名或者文件描述可能會變長,那么盡量將這個字段取名靠后是一個明智的選擇,否則在文件名或文件描述字段變化時,會導致移動很長的二進制數據,造成不必要的浪費。
BSON怎優化來實現目標
3.增加了額外的數據類型
JSON是一個很方便的數據交換格式,但是其類型比較有限。BSON在其基礎上增加了“bytearray”數據類型。這使得二進制的存儲不再需要先base64轉換后再存成JSON。大大減少了計算開銷和數據大小。
當然,在有的時候,BSON相對JSON來說也并沒有空間上的優勢,比如對{“field”:7},在JSON的存儲上7只使用了一個字節,而如果用BSON,那就是至少4個字節(32位)
MongoDB優化:在MongoDB中,如果你的字段是數字型,并且涉及到數據加減操作的,那么建議存在int型,但如果是一個固定不變的數字,并且在四位以下的話,可以考慮存成字符串類型。這樣會節省空間。
目前在10gen的努力下,BSON已經有了針對多種語言的編碼解碼包。并且都是Apache2license下開源的。并且還在隨著MongoDB進一步地發展。關于BSON,你可以在其官方網站bsonspec.org上獲取更多信息。
感謝各位的閱讀!關于“BSON如何優化來實現目標”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。