1. 程式人生 > >BSON和JSON的區別

BSON和JSON的區別

類型比較 字符串 格式 額外 存儲格式 整形 成了 兩個 空間

  BSON目前主要用於MongoDB中,是mongoDB的數據存儲格式,BSON基於JSON格式,選擇JSON進行改造的原因主要是JSON的通用性及JSON的schemaless的特性。

  BSON主要實現下面三點:

  1、更快的遍歷速度

  對json格式來說,太大的json結構會導致數據遍歷非常慢。在json中,要跳過一個文檔進行數據讀取,需要對此文檔進行掃描才行,需要進行麻煩的數據結構匹配,比如括號的匹配。
  而bson對json的一大改進就是,它會將json的每一個元素的長度存在元素的頭部,這樣你只需要讀取到元素長度就能直接seek到指定的點上進行讀取了。

  2、操作更簡易

  對json來說,數據存儲是無類型的,比如你要修改基本一個值,從9到10,由於從一個字符變成了兩個,所以可能其後面的所有內容都需要往後移一位才可以。
  而使用bson,你可以指定這個列為數字列,那麽無論數字從9長到10還是100,我們都只是在存儲數字的那一位上進行修改,不會導致數據總長變大。
  當然,在mongoDB中,如果數字從整形增大到長整型,還是會導致數據總長變大的。

  3、增加了額外的數據類型

  json是一個很方便的數據交換格式,但是其類型比較有限。
  bson在其基礎上增加了“byte array”數據類型。這使得二進制的存儲不再需要先base64轉換後再存成json,大大減少了計算開銷和數據大小。

  

  綜上所述

  數據結構上json是按字符串存儲,bson是按結構存儲。

  存儲空間上 bson>json

  操作速度上 bson>json。比如,遍歷查找:json需要掃字符串,而bson可以直接利用預先在字符串前面的字符串長度直接定位。

  修改上json要因為字符串長度的改變而大動大移,bson的話因為是按結構存儲,因此還是占用同樣的存儲空間,不需要移動。

BSON和JSON的區別