Qu'est-ce que BSON et en quoi est-il différent de JSON?

158

Je ne fais que commencer avec MongoDB et l'une des choses que j'ai remarquées est qu'il utilise BSON pour stocker des données en interne. Cependant, la documentation n'est pas exactement claire sur ce qu'est BSON et comment il est utilisé dans MongoDB. Quelqu'un peut-il me l'expliquer, s'il vous plaît?

Akshat Jiwan Sharma
la source
Salut Ivan, Référez-vous à ce lien, il contient une comparaison approfondie entre JSON et BSON Référence: educba.com/json-vs-bson
Nuwa
@Nuwa Ivan n'a pas posé la question, c'était Akshat
UuDdLrLrSs

Réponses:

155

BSON est le codage binaire de documents de type JSON que MongoDB utilise lors du stockage de documents dans des collections. Il ajoute la prise en charge des types de données tels que Date et binaire qui ne sont pas pris en charge dans JSON.

En pratique, vous n'avez pas besoin de beaucoup de connaissances sur BSON lorsque vous travaillez avec MongoDB, il vous suffit d'utiliser les types natifs de votre langage et les types fournis (par exemple ObjectId) de son pilote lors de la construction de documents et ils seront mappés dans le type BSON approprié par le pilote.

JohnnyHK
la source
2
Donc, si mongoDb stocke des documents en tant que bson, quel est le type qui est renvoyé lorsque nous interrogeons la base de données? Sont-ils renvoyés sous forme de json? Ou bson est renvoyé tel quel?
Akshat Jiwan Sharma
13
Non, le pilote MongoDB pour votre langue se charge de convertir le document en types de données adaptés à votre langue. Les types de données natifs sont utilisés autant que possible.
JohnnyHK
2
Cela signifie-t-il que si je récupère des données d'un document BSON en utilisant Javascript , je n'obtiendrai aucune différence de type de données comme je l'obtiendrai lorsque je récupère en utilisant C / C ++, c'est-à-dire que les nombres seront traités comme des entiers s'il n'y a pas de décimal?
abhisekp
1
@abhisekp basé sur l'explication de JohnnyHK et mon expérience récente, je pense que ce que vous avez dit est vrai.
nxmohamad
Le BSON retournera-t-il le type de données exact du champ de colonne? Ou soit-il le renvoyer sous forme de chaîne pour tous les types?
mRhNs13
45
  • Qu'est-ce que BSON ?

    BSON [bee · sahn], abréviation de Binary JSON, est une sérialisation codée en binaire de documents de type JSON.

  • En quoi est-ce différent de JSON ?

    BSON est conçu pour être efficace dans l'espace, mais dans certains cas, il n'est pas beaucoup plus efficace que JSON. Dans certains cas, BSON utilise encore plus d'espace que JSON. La raison en est un autre des objectifs de conception de BSON: la traversabilité. BSON ajoute des informations "supplémentaires" aux documents, comme la longueur des chaînes et des sous-objets. Cela accélère la traversée.

    BSON est également conçu pour être rapide à encoder et à décoder. Par exemple, les entiers sont stockés sous forme d'entiers 32 (ou 64) bits, ils n'ont donc pas besoin d'être analysés vers et depuis le texte. Cela utilise plus d'espace que JSON pour les petits entiers, mais est beaucoup plus rapide à analyser.

    En plus de la compacité, BSON ajoute des types de données supplémentaires non disponibles dans JSON, notamment les types de données BinData et Date .

Source: http://bsonspec.org/

Mehdi Raash
la source
est-ce le même que le type de données jsonb qui représente les données binaires JSON, décomposées en postgresql?
PirateApp
13

MongoDB représente des documents JSON dans un format codé binaire appelé BSON dans les coulisses. BSON étend le modèle JSON pour fournir des types de données supplémentaires et pour être efficace pour le codage et le décodage dans différentes langues.

codergirl22
la source
12

MongoDB représente les documents JSON au format codé binaire , nous l'appelons donc BSON en coulisses .

BSON étend le modèle JSON pour fournir des types de données supplémentaires tels que Date et binaire qui ne sont pas pris en charge dans JSON, fournissent également des champs ordonnés afin qu'il soit efficace pour l'encodage et le décodage dans différentes langues. 

En d'autres termes, nous pouvons dire que   BSON est juste du JSON binaire  (un sur-ensemble de JSON avec quelques types de données supplémentaires, le plus important un tableau d'octets binaires).

Mongodb utilise comme format de sérialisation de JSON avec un format d'encodage pour stocker et accéder aux documents . nous pouvons simplement dire que BSON est un format codé binaire pour les données JSON.

pour plus d'article mongoDB: https://om9x.com/blog/bson-vs-json/

Avinash Maurya
la source
le lien est rompu
PlsWork
5

En utilisant le codage BSON au-dessus de JSON, MongoDB obtient la capacité de créer des index par-dessus les valeurs qui résident dans le document JSON au format brut. Cela aide à exécuter des requêtes analytiques efficaces car le système NoSQL était connu pour ne pas prendre en charge les index.

Anupam Mahapatra
la source
1

Cet article relativement court donne une assez bonne explication de BSON et JSON: il parle de certains des problèmes avec JSON, pourquoi BSON a été inventé, quels problèmes il résout par rapport à JSON et comment cela pourrait vous être bénéfique.

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

Dans mon cas d'utilisation, cet article m'a dit que la sérialisation vers JSON fonctionnerait pour moi et je n'avais pas besoin de sérialiser vers BSON

Les poils du chien
la source