Was ist BSON und wie unterscheidet es sich genau von JSON?

158

Ich fange gerade mit MongoDB an und eines der Dinge, die mir aufgefallen sind, ist, dass es BSON verwendet , um Daten intern zu speichern. Die Dokumentation ist jedoch nicht genau klar, was BSON ist und wie es in MongoDB verwendet wird. Kann mir das bitte jemand erklären?

Akshat Jiwan Sharma
quelle
Hallo Ivan, siehe diesen Link enthält es einen tiefen Vergleich zwischen JSON und BSON Referenz: educba.com/json-vs-bson
Nuwa
@ Nuwa Ivan hat die Frage nicht gestellt, das war Akshat
UuDdLrLrSs

Antworten:

155

BSON ist die binäre Codierung von JSON-ähnlichen Dokumenten, die MongoDB beim Speichern von Dokumenten in Sammlungen verwendet. Es bietet Unterstützung für Datentypen wie Datum und Binär, die in JSON nicht unterstützt werden.

In der Praxis müssen Sie bei der Arbeit mit MongoDB nicht viel über BSON wissen. Sie müssen nur die nativen Typen Ihrer Sprache und die bereitgestellten Typen (z. B. ObjectId) des Treibers verwenden, um Dokumente zu erstellen, und sie werden dem zugeordnet geeigneter BSON-Typ vom Fahrer.

JohnnyHK
quelle
2
Wenn mongoDb Dokumente als bson speichert, welcher Typ wird zurückgegeben, wenn wir die Datenbank abfragen? Werden sie als json zurückgegeben? Oder wird bson so zurückgegeben, wie er ist?
Akshat Jiwan Sharma
13
Nein, der MongoDB-Treiber für Ihre Sprache sorgt dafür, dass das Dokument in für Ihre Sprache geeignete Datentypen konvertiert wird. Native Datentypen werden so oft wie möglich verwendet.
JohnnyHK
2
Bedeutet das, wenn ich Daten mit Javascript aus einem BSON- Dokument abrufe , erhalte ich keinen Datentypunterschied wie beim Abrufen mit C / C ++, dh Zahlen werden als Ganzzahlen behandelt, wenn sie keine Dezimalzahl haben?
Abhisekp
1
@abhisekp basierend auf JohnnyHKs Erklärung und meiner jüngsten Erfahrung denke ich, dass das, was Sie gesagt haben, wahr ist.
Nxmohamad
Gibt der BSON den genauen Datentyp des Spaltenfelds zurück? Oder gibt es es als String für alle Typen zurück?
mRhNs13
45
  • Was ist BSON ?

    BSON [bee · sahn], kurz für Binary JSON, ist eine binär codierte Serialisierung von JSON-ähnlichen Dokumenten.

  • Wie unterscheidet es sich von JSON ?

    BSON ist so konzipiert, dass es im Weltraum effizient ist, in einigen Fällen jedoch nicht viel effizienter als JSON. In einigen Fällen belegt BSON sogar mehr Speicherplatz als JSON. Der Grund dafür ist ein weiteres BSON-Entwurfsziel: Durchquerbarkeit. BSON fügt Dokumenten einige "zusätzliche" Informationen hinzu, z. B. die Länge von Zeichenfolgen und Unterobjekten. Dies beschleunigt das Durchlaufen.

    BSON ist außerdem so konzipiert, dass es schnell codiert und decodiert werden kann. Ganzzahlen werden beispielsweise als 32- (oder 64-) Bit-Ganzzahlen gespeichert, sodass sie nicht in und aus Text analysiert werden müssen. Dies benötigt mehr Speicherplatz als JSON für kleine Ganzzahlen, ist jedoch viel schneller zu analysieren.

    Zusätzlich zur Kompaktheit fügt BSON zusätzliche Datentypen hinzu, die in JSON nicht verfügbar sind, insbesondere die Datentypen BinData und Date .

Quelle: http://bsonspec.org/

Mehdi Raash
quelle
Entspricht dies dem Datentyp jsonb, der für binäre JSON-Daten steht, die in postgresql zerlegt wurden?
PirateApp
13

MongoDB repräsentiert JSON-Dokumente im binär codierten Format BSON hinter den Kulissen. BSON erweitert das JSON-Modell, um zusätzliche Datentypen bereitzustellen und das Codieren und Decodieren in verschiedenen Sprachen effizient zu gestalten.

codergirl22
quelle
12

MongoDB repräsentiert JSON-Dokumente im binär codierten Format, daher nennen wir es BSON hinter den Kulissen .

BSON erweitert das JSON-Modell um zusätzliche Datentypen wie Datum und Binär, die in JSON nicht unterstützt werden. Außerdem werden geordnete Felder bereitgestellt, damit es in verschiedenen Sprachen effizient codiert und decodiert werden kann. 

Mit anderen Worten können wir sagen, dass   BSON nur binäres JSON ist  (eine Obermenge von JSON mit einigen weiteren Datentypen, vor allem binärem Byte-Array).

Mongodb, das als Serialisierungsformat von JSON verwendet wird, enthält ein Codierungsformat zum Speichern und Zugreifen auf Dokumente . Wir können einfach sagen, dass BSON ein binär codiertes Format für JSON-Daten ist.

Weitere Informationen zu mongoDB: https://om9x.com/blog/bson-vs-json/

Avinash Maurya
quelle
Die Verbindung ist unterbrochen
PlsWork
5

Durch die Verwendung der BSON-Codierung über JSON erhält MongoDB die Möglichkeit, Indizes über Werten zu erstellen, die sich im JSON-Dokument im Rohformat befinden. Dies hilft bei der Ausführung effizienter analytischer Abfragen, da bekannt ist, dass das NoSQL-System keine Unterstützung für Indizes bietet.

Anupam Mahapatra
quelle
1

Dieser relativ kurze Artikel bietet eine ziemlich gute Erklärung für BSON und JSON: Er spricht über einige Probleme mit JSON, warum BSON erfunden wurde, welche Probleme es im Vergleich zu JSON löst und wie es Ihnen zugute kommen könnte.

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

In meinem Anwendungsfall sagte mir dieser Artikel, dass die Serialisierung in JSON für mich funktionieren würde und ich nicht in BSON serialisieren musste

Hundehaare
quelle