Parser BSON
BSON (Binary JSON) e il formato di serializzazione binaria usato da MongoDB per archiviare documenti. Estende JSON con tipi aggiuntivi come ObjectId, Date, Binary e Decimal128. Questo strumento analizza file BSON e visualizza i contenuti come JSON con informazioni sui tipi.
Specifiche
Casi d'uso comuni
- Ispezione dei file di dump MongoDB (.bson)
- Debug di dati BSON nelle code di messaggi o nelle cache
- Analisi delle catture del protocollo wire di MongoDB
- Conversione di BSON in JSON per strumenti esterni
- Audit della struttura e dei tipi del documento
Funzionalità
- Analisi di file binari BSON tramite trascinamento o selezione file
- Decodifica di dati BSON codificati in esadecimale
- Visualizzazione di tutti i tipi BSON inclusi ObjectId, Date, Binary, Regex, Decimal128
- Conversione in JSON con notazione JSON estesa
- Visualizzazione dei metadati del documento (dimensione, numero campi, profondita massima)
- Elenco di tutti gli ObjectId e le date trovati nel documento
- Visualizzazione delle dimensioni dei campi binari e dei tipi di estensione
- Visualizzatore esadecimale per ispezione binaria grezza
Esempi
Documento BSON semplice
Provalo →Un documento BSON minimale con un singolo campo: {"hello":"world"}
16 00 00 00 02 68 65 6c 6c 6f 00 06 00 00 00 77 6f 72 6c 64 00 00BSON codificato in esadecimale
Provalo →Un documento BSON con stringa, numero e booleano: {"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 00Suggerimenti
- Puoi incollare dati BSON codificati in esadecimale direttamente per analizzarli.
- I file BSON possono essere creati con: mongoexport --collection=users --out=users.bson
- Gli ObjectId contengono un timestamp; estrailo con: new ObjectId().getTimestamp()
- BSON supporta piu tipi di JSON: date, binari, regex e decimali.
- La dimensione massima di un documento BSON in MongoDB e 16MB.
Approfondimenti Parser BSON
BSON (Binary JSON) e il formato di serializzazione binaria usato internamente da MongoDB per archiviare e trasmettere documenti. Mentre JSON rappresenta tutti i dati come stringhe, numeri, booleani, array e oggetti, BSON estende questo con tipi aggiuntivi di cui i database hanno bisogno: ObjectId (un identificatore univoco di 12 byte), Date (timestamp con precisione al millisecondo), Binary (array di byte arbitrari), Decimal128 (aritmetica decimale esatta) e espressioni regolari.
I documenti BSON sono prefissati dalla lunghezza, il che significa che ogni documento e documento incorporato inizia con un campo dimensione di 4 byte. Questo consente ai parser di saltare i documenti senza decodificarli completamente, permettendo scansione e indicizzazione efficienti. Ogni elemento e contrassegnato con un byte di tipo, seguito dal nome del campo come stringa C, seguito dal valore in una codifica specifica per il tipo.
MongoDB archivia i documenti come BSON internamente, li trasmette tramite il protocollo wire e li esporta con mongodump come file .bson. Comprendere BSON e essenziale per il debug delle applicazioni MongoDB, l'analisi dei file di dump e il lavoro con il protocollo wire. Il formato JSON esteso fornisce una rappresentazione leggibile che preserva le informazioni sui tipi BSON.
BSON non e sempre piu piccolo di JSON. Stringhe corte e numeri piccoli possono effettivamente essere piu grandi in BSON a causa del byte di tipo e dell'overhead del prefisso di lunghezza. Il vantaggio di BSON non e la dimensione ma la velocita: il formato prefissato dalla lunghezza consente un attraversamento rapido e i tipi estesi forniscono supporto nativo per date, dati binari e decimali ad alta precisione senza convenzioni di codifica.
ObjectId e un tipo BSON di 12 byte usato come _id predefinito nei documenti MongoDB. Contiene un timestamp di 4 byte (secondi dall'epoca), 5 byte di valore casuale (unico per macchina/processo) e un contatore incrementale di 3 byte. Questo design garantisce l'unicita tra server distribuiti senza alcuna coordinazione. Il timestamp incorporato significa che puoi estrarre l'orario di creazione di un documento con ObjectId.getTimestamp().
I file di dump MongoDB (.bson) creati da mongodump sono documenti BSON grezzi concatenati insieme. Puoi incollare dati BSON codificati in esadecimale in questo strumento per analizzare singoli documenti. In alternativa, l'utility bsondump (inclusa con MongoDB Database Tools) puo convertire file .bson in JSON dalla riga di comando per ispezione massiva.