Filenam e extension | .bson |
---|---|
Тип Интернет-носителя | application / bson |
Тип формата | Обмен данными |
Расширенный из | JSON |
Веб-сайт | bsonspec.org |
BSON () - это формат обмена данными компьютер. Название «BSON» основано на термине JSON и означает «двоичный JSON». Это двоичная форма для представления простых или сложных структур данных, включая ассоциативные массивы (также известные как пары имя-значение), целочисленные индексированные массивы и набор фундаментальных скалярных типов. BSON возник в 2009 году на MongoDB. Некоторые скалярные типы данных представляют особый интерес для MongoDB, и этот формат используется как формат хранения данных и сетевой передачи для базы данных MongoDB, но его можно использовать независимо за пределами MongoDB. Реализации доступны на различных языках, таких как C, C ++, C#, D, Delphi, Erlang, Go, Haskell, Java, JavaScript, Джулия, Lua, OCaml, Perl, PHP, Python, Ruby, Rust, Scala, Smalltalk и Swift.
Спецификация BSON опубликована. Самый верхний элемент в структуре должен относиться к типу объекта BSON и содержать 1 или несколько элементов, причем элемент состоит из имени поля, типа и значения. Имена полей - это строки. Типы включают:
истина
и ложь
)Важным отличием от JSON является то, что BSON содержит типы, не представленные в JSON (например, datetime и массив байтов), и предлагает строгую обработку типов f или несколько числовых типов вместо универсального «числового» типа. Для ситуаций, когда эти дополнительные типы необходимо представить в текстовом виде, можно использовать расширенный формат JSON MongoDB.
По сравнению с JSON, BSON спроектирован так, чтобы быть эффективным как с точки зрения объема памяти, так и с точки зрения скорости сканирования. Крупные элементы в документе BSON имеют префикс с полем длины для облегчения сканирования. В некоторых случаях BSON будет использовать больше места, чем JSON из-за префиксов длины и явных индексов массива.
Будет сохранен такой документ, как {"hello": "world"} как:
Bson: \ x16 \ x00 \ x00 \ x00 // общий размер документа \ x02 // 0x02 = type String hello \ x00 // имя поля \ x06 \ x00 \ x00 \ x00world \ x00 // значение поля ( размер значения, значение, нулевой ограничитель) \ x00 // 0x00 = тип EOO ('конец объекта')