Что такое 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 водителем.


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, чтобы обеспечить дополнительные типы данных и быть эффективной для кодирования и декодирования на разных языках.


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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.