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).