BSON-Parser

BSON (Binary JSON) ist das binäre Serialisierungsformat, das MongoDB zum Speichern von Dokumenten verwendet. Es erweitert JSON um zusätzliche Typen wie ObjectId, Date, Binary und Decimal128. Dieses Tool parst BSON-Dateien und zeigt den Inhalt als JSON mit Typinformationen an.

Spezifikationen

Haeufige Anwendungsfaelle

  • MongoDB-Dump-Dateien (.bson) untersuchen
  • BSON-Daten in Message-Queues oder Caches debuggen
  • MongoDB-Wire-Protocol-Mitschnitte analysieren
  • BSON in JSON für externe Tools konvertieren
  • Dokumentstruktur und Typen prüfen

Funktionen

  • BSON-Binärdateien per Drag-and-Drop oder Dateiauswahl parsen
  • Hex-kodierte BSON-Daten dekodieren
  • Alle BSON-Typen anzeigen, einschließlich ObjectId, Date, Binary, Regex, Decimal128
  • Konvertierung zu JSON mit Extended-JSON-Notation
  • Dokument-Metadaten anzeigen (Größe, Feldanzahl, maximale Tiefe)
  • Alle ObjectIds und Datumsangaben im Dokument auflisten
  • Binärfeld-Größen und Erweiterungstypen anzeigen
  • Hex-Viewer zur Untersuchung der Rohdaten

Beispiele

Einfaches BSON-Dokument

Ausprobieren →

Ein minimales BSON-Dokument mit einem einzelnen Feld: {"hello":"world"}

16 00 00 00 02 68 65 6c 6c 6f 00 06 00 00 00 77 6f 72 6c 64 00 00

Hex-kodiertes BSON

Ausprobieren →

Ein BSON-Dokument mit String, Zahl und Boolean: {"name":"Alice","age":30,"active":true}

27 00 00 00 02 6e 61 6d 65 00 06 00 00 00 41 6c 69 63 65 00 10 61 67 65 00 1e 00 00 00 08 61 63 74 69 76 65 00 01 00

Tipps

  • Sie können hex-kodierte BSON-Daten direkt einfügen, um sie zu parsen.
  • BSON-Dateien können erstellt werden mit: mongoexport --collection=users --out=users.bson
  • ObjectIds enthalten einen Zeitstempel; extrahierbar mit: new ObjectId().getTimestamp()
  • BSON unterstützt mehr Typen als JSON: Datumsangaben, Binärdaten, Regex und Dezimalzahlen.
  • Die maximale BSON-Dokumentgröße in MongoDB beträgt 16 MB.

Verstaendnis BSON-Parser

BSON (Binary JSON) ist das binäre Serialisierungsformat, das intern von MongoDB zum Speichern und Übertragen von Dokumenten verwendet wird. Während JSON alle Daten als Strings, Zahlen, Booleans, Arrays und Objekte darstellt, erweitert BSON dies um zusätzliche Typen, die Datenbanken benötigen: ObjectId (ein 12-Byte-Unique-Identifier), Date (Zeitstempel mit Millisekundengenauigkeit), Binary (beliebige Byte-Arrays), Decimal128 (exakte Dezimalarithmetik) und reguläre Ausdrücke.

BSON-Dokumente sind längenbasiert, was bedeutet, dass jedes Dokument und eingebettete Dokument mit einem 4-Byte-Größenfeld beginnt. Dies ermöglicht es Parsern, Dokumente zu überspringen, ohne sie vollständig zu dekodieren, und ermöglicht effizientes Scannen und Indizieren. Jedes Element ist mit einem Typ-Byte versehen, gefolgt vom Feldnamen als C-String, gefolgt vom Wert in einer typspezifischen Kodierung.

MongoDB speichert Dokumente intern als BSON, überträgt sie über das Wire-Protokoll und exportiert sie mit mongodump als .bson-Dateien. Das Verständnis von BSON ist wichtig für das Debuggen von MongoDB-Anwendungen, die Analyse von Dump-Dateien und die Arbeit mit dem Wire-Protokoll. Das Extended-JSON-Format bietet eine menschenlesbare Darstellung, die BSON-Typinformationen bewahrt.

BSON ist nicht immer kleiner als JSON. Kurze Strings und kleine Zahlen können in BSON aufgrund des Typ-Bytes und des Längenfeld-Overheads tatsächlich größer sein. Der Vorteil von BSON liegt nicht in der Größe, sondern in der Geschwindigkeit — das längenbasierte Format ermöglicht schnelles Durchlaufen, und die erweiterten Typen bieten native Unterstützung für Datumsangaben, Binärdaten und hochpräzise Dezimalzahlen ohne Kodierungskonventionen.

ObjectId ist ein 12-Byte-BSON-Typ, der als Standard-_id in MongoDB-Dokumenten verwendet wird. Er enthält einen 4-Byte-Zeitstempel (Sekunden seit der Epoche), 5 Bytes Zufallswert (eindeutig pro Maschine/Prozess) und einen 3-Byte-Inkrementzähler. Dieses Design gewährleistet Eindeutigkeit über verteilte Server hinweg ohne jegliche Koordination. Der eingebettete Zeitstempel bedeutet, dass die Erstellungszeit eines Dokuments mit ObjectId.getTimestamp() extrahiert werden kann.

MongoDB-Dump-Dateien (.bson), die mit mongodump erstellt werden, sind aneinandergereihte rohe BSON-Dokumente. Sie können hex-kodierte BSON-Daten in dieses Tool einfügen, um einzelne Dokumente zu parsen. Alternativ kann das bsondump-Dienstprogramm (enthalten in den MongoDB Database Tools) .bson-Dateien auf der Kommandozeile in JSON konvertieren, um sie massenweise zu inspizieren.

← Zurueck zu allen Tools