BSON - BSON
Расширение имени файла | .bson |
---|---|
Тип интернет-СМИ | приложение / bson [1] |
Тип формата | Обмен данными |
Расширен с | JSON |
Интернет сайт | bsonspec |
BSON (/ˈбяsəп/) это компьютер формат обмена данными. Название "BSON" основано на термине JSON и означает «двоичный JSON».[2] Это двоичная форма для представления простых или сложных структуры данных включая ассоциативные массивы (также известные как пары имя-значение), целочисленные индексированные массивы и набор фундаментальных скалярных типов. BSON возник в 2009 году в MongoDB. Некоторые скалярные типы данных представляют особый интерес для MongoDB, и этот формат используется как формат хранения данных и сетевой передачи для базы данных MongoDB, но его можно использовать независимо за пределами MongoDB. Реализации доступны на различных языках, таких как C, C ++, C #, D, Delphi, Erlang, Идти, Haskell, Ява, JavaScript, Юля, Lua, OCaml, Perl, PHP, Python, Рубин, Ржавчина, Scala, Болтовня, и Быстрый.[3]
Типы данных и синтаксис
BSON имеет опубликованную спецификацию.[4][5] Самый верхний элемент в структуре должен относиться к типу объекта BSON и содержать 1 или несколько элементов, причем элемент состоит из имени поля, типа и значения. Имена полей - это строки. Типы включают:
- Unicode строка (используя UTF-8 кодировка)
- 32-битное целое число
- 64-битное целое число
- двойной (64-битный IEEE 754 число с плавающей запятой)
- десятичный128 (128-битный IEEE 754-2008 число с плавающей запятой; Вариант Binary Integer Decimal (BID)), подходит в качестве носителя для конфиденциальных финансовых данных с десятичной запятой и чисел произвольной точности с точностью 34 десятичных знака, максимальное значение примерно 106145
- datetime без часового пояса (длинное целое число миллисекунд с момента Эпоха Unix )
- байтовый массив (для произвольных двоичных данных)
- логический (
истинный
иложный
) - ноль
- Объект 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: x16x00x00x00 // общий размер документа x02 // 0x02 = тип String Приветx00 // имя поля x06x00x00x00worldx00 // значение поля (размер значения, значение, нулевой терминатор) x00 // 0x00 = тип EOO ('конец объекта')
Смотрите также
- Сравнение форматов сериализации данных
- JSON
- CBOR
- Улыбка (двоичный JSON)
- UBJSON
- Буферы протокола
- Формат сообщения действия
- Apache Thrift
- Пакет сообщений
- Документно-ориентированная база данных
- Первая абстрактная синтаксическая нотация (ASN.1)
- Беспроводной двоичный XML (WBXML)
- Эффективный обмен XML
Рекомендации
- ^ «Поддержка BSON в ASP.NET Web API 2.1 - ASP.NET 4.x». Документы Microsoft. 2014-01-20. Получено 2010-01-12.
- ^ а б BSON Спецификация
- ^ «Проекты внедрения BSON». Получено 20 января 2019.
- ^ "BSON (двоичный JSON): Спецификация". bsonspec.org. Получено 2018-01-17.
- ^ «Знакомство с NoSQL и MongoDB | Что такое NoSQL? | InformIT». www.informit.com. Получено 2018-01-17.
- ^ "regex - Инструменты для представления регулярных выражений MongoDB - документация PyMongo 3.6.0". api.mongodb.com. Получено 2018-01-17.
- ^ «Расширенная документация MongoDB JSON». docs.mongodb.com. Получено 2020-05-03.