BSON ( / б я с ə п / ) представляет собой компьютерный формат обмена данными. Название «BSON» основано на термине JSON и означает «двоичный JSON». [2] Это двоичная форма для представления простых или сложных структур данных, включая ассоциативные массивы (также известные как пары имя-значение), целочисленные индексированные массивы и набор фундаментальных скалярных типов. BSON возник в 2009 году на MongoDB.. Некоторые скалярные типы данных представляют особый интерес для MongoDB, и этот формат используется как формат хранения данных и сетевой передачи для базы данных MongoDB, но его можно использовать независимо за пределами MongoDB. Реализации доступны на различных языках, таких как C , C ++ , C # , D , Delphi , Erlang , Go , Haskell , Java , JavaScript , Julia , Lua , OCaml , Perl , PHP , Python , Ruby , Rust., Scala , Smalltalk и Swift . [3]
Расширение имени файла | .bson |
---|---|
Тип интернет-СМИ | application/bson [1] |
Тип формата | Обмен данными |
Расширен с | JSON |
Веб-сайт | bsonspec |
Типы данных и синтаксис
BSON имеет опубликованную спецификацию. [4] [5] Самый верхний элемент в структуре должен относиться к типу объекта BSON и содержать 1 или несколько элементов, где элемент состоит из имени поля, типа и значения. Имена полей представляют собой строки. Типы включают:
- Строка Unicode (в кодировке UTF-8 )
- 32-битное целое число
- 64-битное целое число
- double (64-битное число с плавающей запятой IEEE 754 )
- decimal128 (128-битное число с плавающей запятой IEEE 754-2008 ; вариант Binary Integer Decimal (BID)), подходит в качестве носителя для конфиденциальных финансовых данных с десятичным разрядом и чисел произвольной точности с точностью 34 десятичных знака, максимальное значение приблизительно 10 6145
- datetime без часового пояса (длинное целое число миллисекунд с эпохи Unix )
- байтовый массив (для произвольных двоичных данных)
- логическое (
true
иfalse
) - ноль
- Объект BSON
- BSON массив
- Код JavaScript
- Двоичные данные MD5
- Регулярное выражение ( Perl- совместимые регулярные выражения (" PCRE ") версии 8.41 с поддержкой UTF-8) [6]
Важным отличием JSON является то, что BSON содержит типы, отсутствующие в JSON (например, datetime и массив байтов), и предлагает строгую обработку нескольких числовых типов вместо универсального «числового» типа. В ситуациях, когда эти дополнительные типы необходимо представить в текстовом виде, можно использовать расширенный формат JSON MongoDB [7] .
Эффективность
По сравнению с JSON, BSON отличается эффективностью как с точки зрения памяти, так и с точки зрения скорости сканирования. Большие элементы в документе BSON имеют префикс с полем длины для облегчения сканирования. В некоторых случаях BSON будет использовать больше места, чем JSON, из-за префиксов длины и явных индексов массива. [2]
Пример
Документ, такой как {"hello": "world"}, будет сохранен как:
Bson : \ x16 \ x00 \ x00 \ x00 // общий размер документа \ x02 // 0x02 = type String hello \ x00 // имя поля \ x06 \ x00 \ x00 \ x00world \ x00 // значение поля (размер значения, значение , нулевой терминатор) \ x00 // 0x00 = тип EOO ('конец объекта')
Смотрите также
- Сравнение форматов сериализации данных
- JSON
- CBOR
- Улыбка (двоичный JSON)
- UBJSON
- Буферы протокола
- Формат сообщения действия
- Apache Thrift
- Пакет сообщений
- Документно-ориентированная база данных
- MongoDB
- Первая абстрактная синтаксическая нотация (ASN.1)
- Беспроводной двоичный XML (WBXML)
- Эффективный обмен XML
Рекомендации
- ^ «Поддержка BSON в ASP.NET Web API 2.1 - ASP.NET 4.x» . Документы Microsoft . 2014-01-20 . Проверено 12 января 2010 .
- ^ a b Спецификация BSON
- ^ «Проекты внедрения BSON» . Дата обращения 20 января 2019 .
- ^ «BSON (двоичный JSON): Спецификация» . bsonspec.org . Проверено 17 января 2018 .
- ^ «Знакомство с NoSQL и MongoDB | Что такое NoSQL? | InformIT» . www.informit.com . Проверено 17 января 2018 .
- ^ «regex - Инструменты для представления регулярных выражений MongoDB - документация PyMongo 3.6.0» . api.mongodb.com . Проверено 17 января 2018 .
- ^ «Расширенная документация MongoDB JSON» . docs.mongodb.com . Проверено 3 мая 2020 .
Внешние ссылки
- BSON Спецификация
- Документация BSON на сайте MongoDB
- инструмент bsondump , включенный в MongoDB