Що таке BSON і чим він відрізняється від JSON?


158

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


Привіт Іване, перейдіть за цим посиланням, воно містить глибоке порівняння між JSON та BSON. Довідка: educba.com/json-vs-bson
Nuwa,

@Nuwa Іван не задавав питання, це був Акшат
UuDdLrLrSs

Відповіді:


155

BSON - це двійкове кодування документів, схожих на JSON, які MongoDB використовує для зберігання документів у колекціях. Він додає підтримку таких типів даних, як дата та двійкові, які не підтримуються в 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 для надання додаткових типів даних, таких як дата та двійкові дані, які не підтримуються в 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.