Che cos'è BSON ed esattamente in cosa differisce da JSON?


158

Ho appena iniziato con MongoDB e una delle cose che ho notato è che utilizza BSON per archiviare i dati internamente. Tuttavia, la documentazione non è esattamente chiara su cosa sia BSON e su come viene utilizzato in MongoDB. Qualcuno può spiegarmelo, per favore?


Ciao Ivan, fai
Nuwa

@Nuwa Ivan non ha posto la domanda, ovvero Akshat
UuDdLrLrSs

Risposte:


155

BSON è la codifica binaria di documenti simili a JSON che MongoDB utilizza per archiviare documenti nelle raccolte. Aggiunge supporto per tipi di dati come Date e binari che non sono supportati in JSON.

In pratica, non devi sapere molto su BSON quando lavori con MongoDB, devi solo usare i tipi nativi della tua lingua e i tipi forniti (ad esempio ObjectId) del suo driver durante la costruzione di documenti e verranno mappati nel tipo BSON appropriato dal driver.


2
Quindi, se mongoDb memorizza i documenti come bson, qual è il tipo che viene restituito quando eseguiamo una query sul database? Vengono restituiti come json? O bson viene restituito così com'è?
Akshat Jiwan Sharma,

13
No, il driver MongoDB per la tua lingua si occupa di convertire il documento in tipi di dati appropriati per la tua lingua. I tipi di dati nativi vengono utilizzati il ​​più possibile.
JohnnyHK,

2
Ciò significa che, se recupero i dati dal documento BSON usando Javascript , non otterrò alcuna differenza di tipo di dati come otterrò quando recupererò usando C / C ++, cioè i numeri saranno trattati come numeri interi se non hanno decimali?
abhisekp,

1
@abhisekp basato sulla spiegazione di JohnnyHK e sulla mia recente esperienza, penso che quello che hai detto sia vero.
nxmohamad,

Il codice BSON restituirà il tipo esatto di dati del campo colonna? O lo restituisce come stringa per tutti i tipi?
mRhNs13

45
  • Che cos'è BSON ?

    BSON [bee · sahn], abbreviazione di Binary JSON, è una serializzazione con codifica binaria di documenti simili a JSON.

  • In che cosa differisce da JSON ?

    BSON è progettato per essere efficiente nello spazio, ma in alcuni casi non è molto più efficiente di JSON. In alcuni casi BSON utilizza ancora più spazio di JSON. La ragione di ciò è un altro degli obiettivi di progettazione BSON: la traversabilità. BSON aggiunge alcune informazioni "extra" ai documenti, come la lunghezza delle stringhe e degli oggetti secondari. Questo rende più veloce l'attraversamento.

    BSON è inoltre progettato per essere veloce da codificare e decodificare. Ad esempio, i numeri interi vengono memorizzati come numeri interi a 32 (o 64) bit, quindi non è necessario analizzarli da e verso il testo. Questo utilizza più spazio di JSON per numeri interi piccoli, ma è molto più veloce da analizzare.

    Oltre alla compattezza, BSON aggiunge altri tipi di dati non disponibili in JSON, in particolare i tipi di dati BinData e Date .

Fonte: http://bsonspec.org/


è lo stesso del tipo di dati jsonb che sta per dati binari JSON, scomposti in postgresql?
PirateApp

13

MongoDB rappresenta i documenti JSON in formato con codifica binaria chiamato BSON dietro le quinte. BSON estende il modello JSON per fornire tipi di dati aggiuntivi ed essere efficiente per la codifica e la decodifica in lingue diverse.


12

MongoDB rappresenta i documenti JSON in formato con codifica binaria, quindi lo chiamiamo BSON dietro le quinte .

BSON estende il modello JSON per fornire tipi di dati aggiuntivi come Date e binari che non sono supportati in JSON forniscono anche campi ordinati affinché sia ​​efficiente per la codifica e la decodifica in lingue diverse. 

In altre parole, possiamo dire che   BSON è solo JSON binario  (un superset di JSON con alcuni tipi di dati, soprattutto array di byte binari).

Mongodb che utilizza come formato di serializzazione di JSON include un formato di codifica per l'archiviazione e l'accesso ai documenti . semplicemente possiamo dire che BSON è un formato codificato binario per i dati JSON.

per ulteriori articoli mongoDB: https://om9x.com/blog/bson-vs-json/


il collegamento è interrotto
PlsWork

5

Utilizzando la codifica BSON su JSON, MongoDB ha la capacità di creare indici su valori che risiedono all'interno del documento JSON in formato raw. Questo aiuta a eseguire query analitiche efficienti poiché il sistema NoSQL era noto per non avere supporto per gli indici.


1

Questo articolo relativamente breve fornisce una spiegazione abbastanza buona di BSON e JSON: parla di alcuni dei problemi con JSON, del motivo per cui BSON è stato inventato, di quali problemi risolve rispetto a JSON e di come potrebbe trarne beneficio.

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

Nel mio caso d'uso quell'articolo mi diceva che la serializzazione su JSON avrebbe funzionato per me e non avevo bisogno di serializzare su BSON

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.