亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

BSON如何優化來實現目標

發布時間:2021-09-26 15:38:43 來源:億速云 閱讀:133 作者:小新 欄目:數據庫

這篇文章給大家分享的是有關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如何優化來實現目標”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

同仁县| 改则县| 田林县| 英吉沙县| 阿瓦提县| 垫江县| 确山县| 松江区| 常州市| 陕西省| 沁源县| 陆川县| 精河县| 苏尼特左旗| 沧源| 乾安县| 铁岭县| 石门县| 大英县| 丰台区| 故城县| 东乌珠穆沁旗| 峨边| 华宁县| 丹棱县| 亚东县| 会宁县| 内丘县| 瑞丽市| 太湖县| 万全县| 德阳市| 南安市| 米泉市| 双鸭山市| 宁晋县| 广州市| 宜兴市| 东方市| 淮南市| 竹山县|