Что такое BSON и чем он отличается от JSON?

158

Я только начинаю с MongoDB, и одна из вещей, которые я заметил, это то, что он использует BSON для внутреннего хранения данных. Однако в документации не совсем ясно, что такое BSON и как он используется в MongoDB. Может кто-нибудь объяснить это мне, пожалуйста?

Акшат Дживан Шарма
источник
Привет Иван, Ссылка на эту ссылку, она содержит глубокое сравнение между JSON и BSON Ссылка: educba.com/json-vs-bson
Nuwa
@Нува Иван не задавал вопрос, это был
Акшат

Ответы:

155

BSON - это двоичное кодирование JSON-подобных документов, которое MongoDB использует при хранении документов в коллекциях. Добавлена ​​поддержка типов данных, таких как Date и двоичные, которые не поддерживаются в JSON.

На практике вам не нужно много знать о BSON при работе с MongoDB, вам просто нужно использовать собственные типы вашего языка и предоставленные типы (например, ObjectId) его драйвера при построении документов, и они будут отображены в соответствующий тип BSON водителем.

JohnnyHK
источник
2
Так что, если mongoDb хранит документы как bson, какой тип возвращается, когда мы запрашиваем базу данных? Они возвращаются как json? Или bson возвращается как есть?
Акшат Дживан Шарма
13
Нет, драйвер MongoDB для вашего языка заботится о преобразовании документа в типы данных, соответствующие вашему языку. Нативные типы данных используются в максимально возможной степени.
JohnnyHK
2
Означает ли это, что если я получу данные из документа BSON с использованием Javascript , я не получу никакой разницы в типе данных, как я получу, когда получу с помощью C / C ++, то есть числа будут считаться целыми числами, если у них нет десятичной дроби?
abhisekp
1
@abhisekp, основываясь на объяснениях JohnnyHK и моем недавнем опыте, я думаю, что вы сказали, что это правда.
nxmohamad
Будет ли BSON возвращать точный тип данных поля столбца? Или он возвращает его как String для всех типов?
mRhNs13
45
  • Что такое BSON ?

    BSON [bee · sahn], сокращение от Binary JSON, представляет собой двоичную кодировку сериализации JSON-подобных документов.

  • Чем он отличается от JSON ?

    BSON разработан для эффективной работы в космосе, но в некоторых случаях он не намного эффективнее, чем JSON. В некоторых случаях BSON использует даже больше места, чем JSON. Причиной этого является еще одна из целей проектирования BSON: проходимость. BSON добавляет некоторую «дополнительную» информацию к документам, например длину строк и подобъектов. Это ускоряет прохождение.

    BSON также разработан для быстрого кодирования и декодирования. Например, целые числа хранятся как 32 (или 64) битные целые, поэтому их не нужно анализировать в тексте и из текста. Это использует больше места, чем JSON для маленьких целых чисел, но намного быстрее для анализа.

    В дополнение к компактности, BSON добавляет дополнительные типы данных, недоступные в JSON, в частности, типы данных BinData и Date .

Источник: http://bsonspec.org/

Мехди Рааш
источник
это то же самое, что тип данных jsonb, который обозначает двоичные данные JSON, разложенные в postgresql?
PirateApp
13

MongoDB представляет документы JSON в двоичном кодированном формате, называемом BSON. BSON расширяет модель JSON, чтобы обеспечить дополнительные типы данных и быть эффективной для кодирования и декодирования на разных языках.

codergirl22
источник
12

MongoDB представляет документы JSON в двоично-кодированном формате, поэтому мы называем его BSON за кулисами .

BSON расширяет модель JSON, предоставляя дополнительные типы данных, такие как Date и двоичные, которые не поддерживаются в JSON, а также предоставляют упорядоченные поля для обеспечения эффективности для кодирования и декодирования на разных языках. 

Другими словами, мы можем сказать, что   BSON - это просто двоичный JSON  (расширенный набор JSON с некоторыми другими типами данных, наиболее важным является двоичный байтовый массив).

Mongodb, использующий в качестве формата сериализации JSON, включает в себя формат кодирования для хранения и доступа к документам . просто мы можем сказать, что BSON - это двоичный кодированный формат для данных JSON.

для более mongoDB статьи: https://om9x.com/blog/bson-vs-json/

Авинаш Маурья
источник
ссылка не работает
PlsWork
5

Используя кодировку BSON поверх JSON, MongoDB получает возможность создавать индексы поверх значений, которые находятся внутри документа JSON в необработанном формате. Это помогает в выполнении эффективных аналитических запросов, поскольку система NoSQL, как известно, не поддерживала индексы.

Анупам Махапатра
источник
1

Эта относительно короткая статья дает довольно хорошее объяснение BSON и JSON: в ней рассказывается о некоторых проблемах с JSON, о том, почему был изобретен BSON, какие проблемы он решает по сравнению с JSON и как он может вам помочь.

https://www.compose.com/articles/from-json-to-bson-and-back/

В моем случае эта статья говорила мне, что сериализация в JSON будет работать для меня, и мне не нужно сериализовать в BSON

Собачья шерсть
источник