BSON/ˈbsən/)是一種電腦數據交換格式,主要被用作MongoDB資料庫中的數據儲存和網絡傳輸格式。它是一種二進制表示形式,能用來表示簡單數據結構關聯陣列(MongoDB中稱為「對象」或「文件」)以及MongoDB中的各種資料類型。BSON之名緣於JSON,含義為Binary JSON(二進制JSON)[2]

BSON
副檔名
.bson
網路媒體型式
[1]
格式類型數據交換
延伸自JSON
標準尚無RFC
網站bsonspec.org

資料類型和語法

編輯

BSON文件(對象)由一個有序的元素列表構成。[3][4]每個元素由一個欄位名、一個類型和一個值組成。欄位名為字串。類型包括:

  • string
  • integer(32或64位元)
  • double(64位元IEEE 754浮點數)
  • decimal128(128位元IEEE 754-2008浮點數;Binary Integer Decimal英語Binary Integer Decimal變體),適合作為任意精度為34個十進制數字的數字載體,最大值近似106145
  • date(整數,自UNIX時間的毫秒數)
  • byte array(二進制陣列)
  • 布林truefalse
  • null
  • BSON對象
  • BSON陣列
  • JavaScript代碼
  • MD5二進制數據
  • 正則表達式Perl相容的正則表達式,即PCRE英語PCRE,版本8.41,含UTF-8支援;與Python不完全相容)[5]

BSON的類型名義上是JSON類型的一個超集(JSON沒有date或位元組陣列類型[6]),但一個例外是沒有像JSON那樣的通用「數字」(number)類型。

效率

編輯

與JSON相比,BSON着眼於提高儲存和掃描效率。BSON文件中的大型元素以長度欄位為字首以便於掃描。在某些情況下,由於長度字首和顯式陣列索引的存在,BSON使用的空間會多於JSON。[2]

例子

編輯

一個內容為{"hello":"world"}的文件將儲存為:

Bson:
  \x16\x00\x00\x00               // 总文档大小
  \x02                           // 0x02 = 类型:String(字符串)
  hello\x00                      // 字段名
  \x06\x00\x00\x00world\x00      // 字段值(值大小,值,空终止符)
  \x00                           // 0x00 = 类型:EOO('end of object',对象结尾)

參見

編輯

參考文獻

編輯
  1. ^ MIME Media Types - The Internet Assigned Numbers Authority. [2018-03-18]. (原始內容存檔於2012-12-21). 
  2. ^ 2.0 2.1 BSON Specification. [2018-03-18]. (原始內容存檔於2011-09-28). 
  3. ^ BSON (Binary JSON): Specification. [2018-01-17]. (原始內容存檔於2018-01-17). 
  4. ^ Introducing NoSQL and MongoDB | What Is NoSQL? | InformIT. [2018-01-17]. (原始內容存檔於2018-01-17). 
  5. ^ regex – Tools for representing MongoDB regular expressions — PyMongo 3.6.0 documentation. [2018-01-17]. (原始內容存檔於2018-01-18). 
  6. ^ JSON Specification. [2018-03-18]. (原始內容存檔於2011-02-23). 

外部連結

編輯