BSON - jellyfish-tom/TIL GitHub Wiki
[SOURCES]
BSON is a computer data interchange format. The name "BSON" is based on the term JSON and stands for "Binary JSON". It is a binary form for representing simple or complex data structures including associative arrays (also known as name-value pairs), integer indexed arrays.
BSON originated in 2009 at MongoDB
BSON has a published specification [4][5]. The topmost element in the structure must be of type BSON object and contains 1 or more elements, where an element consists of a field name, a type, and a value. Field names are strings. Types include:
- string
- 32 bit integer
- 64 bit integer
- double (64-bit IEEE 754 floating point number)
- decimal128 (128-bit IEEE 754-2008 floating point number; Binary Integer Decimal (BID) variant), suitable as a carrier for decimal-place sensitive financial data and arbitrary precision numerics with 34 decimal digits of precision, a max value of approximately 106145
- datetime w/o timezone (long integer number of milliseconds since the Unix epoch)
- byte array (for arbitrary binary data)
- boolean (true and false)
- null
- BSON object
- BSON array
- JavaScript code
- MD5 binary data
- Regular expression (Perl compatible regular expressions ("PCRE") version 8.41 with UTF-8 support)[6]
An important differentiator to JSON is that BSON contains types not present in JSON (e.g. datetime and byte array) and offers type-strict handling for several numeric types instead of a universal "number" type.
Compared to JSON, BSON is designed to be efficient both in storage space and scan-speed. Large elements in a BSON document are prefixed with a length field to facilitate scanning. In some cases, BSON will use more space than JSON due to the length prefixes and explicit array indices.
JavaScript Object Notation (JSON) is a standard file format that uses human type readable text to transmit data with attribute-value pairs and array data types. This is one of the most common data formats which are mainly used for asynchronous browser-server communication. JSON is a language-independent format. BSON, on the other hand, is a computer interchange format that is mainly used for data storage and as a network transfer format in the MongoDB database. It is a simple binary form which is used to represent data structures and associative arrays (often called documents or objects in MongoDB).