BSON
外觀
副檔名 |
.bson |
---|---|
網路媒體型式 |
無[1] |
格式類型 | 數據交換 |
延伸自 | JSON |
標準 | 尚無RFC |
網站 | bsonspec |
BSON(/ˈbiːsən/)是一種計算機數據交換格式,主要被用作MongoDB數據庫中的數據存儲和網絡傳輸格式。它是一種二進制表示形式,能用來表示簡單數據結構、關聯數組(MongoDB中稱為「對象」或「文檔」)以及MongoDB中的各種數據類型。BSON之名緣於JSON,含義為Binary JSON(二進制JSON)[2]。
數據類型和語法
[編輯]BSON文檔(對象)由一個有序的元素列表構成。[3][4]每個元素由一個字段名、一個類型和一個值組成。字段名為字符串。類型包括:
- string
- integer(32或64位)
- double(64位IEEE 754浮點數)
- decimal128(128位IEEE 754-2008浮點數;Binary Integer Decimal變體),適合作為任意精度為34個十進制數字的數字載體,最大值近似106145
- date(整數,自UNIX時間的毫秒數)
- byte array(二進制數組)
- 布林(
true
或false
) - null
- BSON對象
- BSON數組
- JavaScript代碼
- MD5二進制數據
- 正則表達式(Perl兼容的正則表達式,即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',对象结尾)
參見
[編輯]- 數據系列化格式比較
- JSON
- CBOR
- Smile(二進制JSON)
- UBJSON
- Protocol Buffers
- Action Message Format
- Thrift
- MessagePack
- 文件導向的數據庫
- ASN.1
- Wireless Binary XML(WBXML)
- Efficient XML Interchange
參考文獻
[編輯]- ^ MIME Media Types - The Internet Assigned Numbers Authority. [2018-03-18]. (原始內容存檔於2012-12-21).
- ^ 2.0 2.1 BSON Specification. [2018-03-18]. (原始內容存檔於2011-09-28).
- ^ BSON (Binary JSON): Specification. [2018-01-17]. (原始內容存檔於2018-01-17).
- ^ Introducing NoSQL and MongoDB | What Is NoSQL? | InformIT. [2018-01-17]. (原始內容存檔於2018-01-17).
- ^ regex – Tools for representing MongoDB regular expressions — PyMongo 3.6.0 documentation. [2018-01-17]. (原始內容存檔於2018-01-18).
- ^ JSON Specification. [2018-03-18]. (原始內容存檔於2011-02-23).
外部連結
[編輯]- BSON Specification(頁面存檔備份,存於網際網路檔案館)
- BSON documentation on the MongoDB website(頁面存檔備份,存於網際網路檔案館)
- bsondump tool included with MongoDB(頁面存檔備份,存於網際網路檔案館)
|