¿Qué es BSON y exactamente cómo es diferente de JSON?

158

Estoy comenzando con MongoDB y una de las cosas que he notado es que usa BSON para almacenar datos internamente. Sin embargo, la documentación no es exactamente clara sobre qué es BSON y cómo se usa en MongoDB. ¿Alguien me lo puede explicar, por favor?

Akshat Jiwan Sharma
fuente
Hola Ivan, consulta este enlace, contiene una comparación profunda entre JSON y BSON Referencia: educba.com/json-vs-bson
Nuwa
@Nuwa Ivan no hizo la pregunta, eso fue Akshat
UuDdLrLrSs

Respuestas:

155

BSON es la codificación binaria de documentos similares a JSON que MongoDB usa cuando almacena documentos en colecciones. Agrega soporte para tipos de datos como Fecha y binarios que no son compatibles con JSON.

En la práctica, no tiene que saber mucho sobre BSON cuando trabaja con MongoDB, solo necesita usar los tipos nativos de su idioma y los tipos proporcionados (por ejemplo, ObjectId) de su controlador al construir documentos y se asignarán al tipo de BSON apropiado por el conductor.

JohnnyHK
fuente
2
Entonces, si mongoDb almacena documentos como bson, ¿cuál es el tipo que se devuelve cuando consultamos la base de datos? ¿Se devuelven como json? ¿O bson se devuelve como está?
Akshat Jiwan Sharma
13
No, el controlador MongoDB para su idioma se encarga de convertir el documento en tipos de datos apropiados para su idioma. Los tipos de datos nativos se utilizan tanto como sea posible.
JohnnyHK
2
¿Significa eso que si recupero datos del documento BSON usando Javascript , no obtendré ninguna diferencia de tipo de datos que obtendré cuando recupere usando C / C ++, es decir, los números serán tratados como enteros si no tienen ningún decimal?
abhisekp
1
@abhisekp basado en la explicación de JohnnyHK y mi experiencia reciente, creo que lo que dijiste es verdad.
nxmohamad
¿BSON devolverá el tipo de datos exacto del campo de columna? ¿O lo devuelve como Cadena para todos los tipos?
mRhNs13
45
  • ¿Qué es BSON ?

    BSON [bee · sahn], abreviatura de Binary JSON, es una serialización codificada en binario de documentos similares a JSON.

  • ¿Cómo es diferente de JSON ?

    BSON está diseñado para ser eficiente en el espacio, pero en algunos casos no es mucho más eficiente que JSON. En algunos casos, BSON usa aún más espacio que JSON. La razón de esto es otro de los objetivos de diseño de BSON: la capacidad de desplazamiento. BSON agrega información "adicional" a los documentos, como longitud de cadenas y subobjetos. Esto hace que el recorrido sea más rápido.

    BSON también está diseñado para ser rápido de codificar y decodificar. Por ejemplo, los enteros se almacenan como enteros de 32 (o 64) bits, por lo que no es necesario analizarlos desde y hacia el texto. Esto usa más espacio que JSON para enteros pequeños, pero es mucho más rápido de analizar.

    Además de la compacidad, BSON agrega tipos de datos adicionales no disponibles en JSON, en particular los tipos de datos BinData y Date .

Fuente: http://bsonspec.org/

Mehdi Raash
fuente
¿Es esto lo mismo que el tipo de datos jsonb que significa datos JSON binarios, descompuestos en postgresql?
PirateApp
13

MongoDB representa documentos JSON en formato codificado en binario llamado BSON detrás de escena. BSON extiende el modelo JSON para proporcionar tipos de datos adicionales y ser eficiente para codificar y decodificar en diferentes idiomas.

codergirl22
fuente
12

MongoDB representa documentos JSON en formato codificado en binario, por lo que lo llamamos BSON detrás de escena .

BSON amplía el modelo JSON para proporcionar tipos de datos adicionales, como Date y binary, que no son compatibles con JSON, también proporcionan campos ordenados para que sea eficiente para codificar y decodificar en diferentes idiomas. 

En otras palabras, podemos decir que   BSON es solo JSON binario  (un superconjunto de JSON con algunos tipos de datos más, lo más importante es la matriz de bytes binarios).

El uso de Mongodb como formato de serialización de JSON incluye un formato de codificación para almacenar y acceder a documentos . simplemente podemos decir que BSON es un formato binario codificado para datos JSON.

para más artículo de mongoDB: https://om9x.com/blog/bson-vs-json/

Avinash Maurya
fuente
el enlace está roto
PlsWork
5

Al usar la codificación BSON en la parte superior de JSON, MongoDB tiene la capacidad de crear índices en la parte superior de los valores que residen dentro del documento JSON en formato sin formato. Esto ayuda a ejecutar consultas analíticas eficientes, ya que el sistema NoSQL era conocido por no tener soporte para índices.

Anupam Mahapatra
fuente
1

Este artículo relativamente breve ofrece una explicación bastante buena de BSON y JSON: habla sobre algunos de los problemas con JSON, por qué se inventó BSON, qué problemas resuelve en comparación con JSON y cómo podría beneficiarlo.

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

En mi caso de uso, ese artículo me dijo que la serialización a JSON funcionaría para mí y que no necesitaba serializar a BSON

Pelo del perro
fuente