BSON
| BSON | |
|---|---|
| | |
| Расширение |
.bson |
| MIME-тип |
application/bson[1] |
| Тип формата | Обмен данными |
| Расширен из | JSON |
| Сайт | bsonspec.org |
BSON (англ. Binary JavaScript Object Notation, произносится /ˈbiːsən/) — формат электронного обмена цифровыми данными, бинарная форма представления простых структур данных и ассоциативных массивов (которые в контексте обмена называют объектами или документами). Является надмножеством JSON, включая дополнительно регулярные выражения, двоичные данные и даты[2].
Типы данных и синтаксис
[править | править код]BSON-документы (объекты) состоят из сортированных списков элементов. Каждый элемент состоит из имени поля, типа и значения. Имена полей — это строки. Типы включают:
string— строка,int— целое число,double— число с плавающей запятой двойной точности,DateTime— дата,byte[]— массив байтов (бинарные данные),bool— булевые (TrueиFalse),null— «Null» (специальное значение),BsonObject— BSON-объект,BsonObject[]— массив BSON-объектов.
Не все эти типы доступны в JSON, в котором, например, нет массива с типом «бинарные данные», но из-за ограничений по длине некоторые действительные значения JSON (такие как очень длинные строки) не являются действительными значениями BSON[уточнить].
Эффективность
[править | править код]В сравнении с JSON, BSON спроектирован и для эффективного в отношении занимающего дискового пространства хранения данных, и скорости сканирования. Большие элементы в документе BSON имеют префикс с собственной длиной для облегчения сканирования.
BSON во многом аналогичен Protocol Buffers — реализации языково- и платформно-независимого формата для обмена данными, но BSON является более свободным от схемы данных. Тем самым, бо́льшая гибкость BSON уменьшает преимущества в производительности в случае, когда схема определена[2].
Пример
[править | править код]Документ, такой как {"hello": "world"}, будет сохранён следующим образом:
\x16\x00\x00\x00 // общий размер документа
\x02 // 0x02 = тип String
hello\x00 // имя поля
\x06\x00\x00\x00world\x00 // значение поля (размер значения, значение, null terminator)
\x00 // 0x00 = type EOO ('end of object', 'конец объекта')
Примечания
[править | править код]- ↑ BSON Support in ASP.NET Web API 2.1 - ASP.NET 4.x. Microsoft Docs (20 января 2014). Дата обращения: 12 января 2010.
- 1 2 Tiwari, 2011, Chapter 4: Understanding the Storage Architecture > Document Store Internals.
Литература
[править | править код]- Shashank Tiwari. Professional NoSQL. — Packt Publishing, 2011. — 384 p. — ISBN 978-0-470-94224-6.
Ссылки
[править | править код]- BSON Specification (англ.)