Capitolo 1

JSON e BSON


Capitolo 1: Introduzione e Basi


Introduzione database no-SQL
Join, Transaction e Pre-Join
MongoDB in un'App
Come installare MongoDB
JSON e BSON
Schema Dinamico
Da Relazionale ai Documenti
Schema Design

JSON e BSON

Tutto ciò che bisogna sapere sul JSON e sul BSON (Binary JSON) per utilizzare MongoDB.

JSON: dati object-style facilmente leggibili

Il JSON non è l’unica codifica o linguaggio orientato ai documenti, c’è anche l’XML, il suo fratellastro brutto. L’XML tende ad essere più pesante nell’interpretazione, nel parsing e poi è proprio umanamente meno leggibile, guardate!


Questo è un piccolo esempio di documento XML, non si capisce praticamente niente, bisogna proprio sforzarsi parecchio per capire cosa rappresenta.

Se guardate invece il documento JSON non c’è paragone in fatto di semplicità, è leggero e senza grassi quindi JSON tutta la vita.

JSON: tipi e sintassi

Adesso facciamo un piccolo ripasso della sintassi e dei tipi di dato, JSON ne supporta ben 6:
abbiamo le stringhe,
sempre tra le virgolette, valori numerici (quindi senza virgolette), booleani (true o false), NULL per i valori nulli, gli array: delle liste ordinate di valori caratterizzate delle parentesi quadre, non ci sono restrizioni per i valori della lista, quindi può contenere sia numeri che stringhe o qualsiasi altra cosa, ed infine il sesto tipo sono gli oggetti o documenti: intesi come mappe associative chiave-valore caratterizzati dalle parentesi graffe, al loro interno possiamo inserire quello che ci pare: altri attrbuti e anche altri oggetti.


Molto semplice. Sono sicuramente familiari a tutti i programmatori a prescindere da quale sia il vostro linguaggio. Adesso vediamo alcune cose sul JSON che probabilmente vi siete dimenticati.

JSON: alcune cose da ricordare

Innanzitutto, il JSON è formato da una lista di chiave e valore, mentre i valori possono essere di sei tipi diversi, quelli che abbiamo appena visto, la chiave può essere solo e sempre una stringa.

Lo standard consiglia di usare sempre le virgolette per le chiavi ma in realtà nella shell di Mongo possiamo ometterlo a patto che la chiave inizi con una lettera, in questo caso capirà da solo che si tratta di una stringa, mentre se iniziasse con un numero allora ovviamente le virgolette diventerebbero obbligatorie.


In caso lo stesso documento abbia due chiavi ripetute viene considerato il valore dell’ultima dichiarazione; cioè se noi stiamo salvando un oggetto dove l’attributo Nome è settato con due valori diversi, quando lo salveremo nel database sarà presente solo l’ultimo valore assegnato.


Nel JSON abbiamo solo due strutture dati basilari che possiamo combinare in tutti i modi che ci vengono in mente: gli array e i dizionari (in sostanza gli oggetti o documenti).

Se ci fate caso tutti i documenti JSON che abbiamo visto sino ad ora erano a loro volta dei dizionari.


Pochi e semplici punti da ricordare, ve li siete segnati? Non vi ho visto prendere appunti… mhh.. adesso vediamo cos’è il famoso BSON.

BSON (Binary JSON)

Il BSON è la rappresentazione binaria del JSON, questa frase fa sorgere altri dubbi? Non importa, tanto il BSON viene utilizzato internamente, in maniera totalmente automatica, per questioni di efficienza, praticamente a noi non cambia proprio niente, viene gestito tutto da Mongo e dai drivers.


Il BSON permette a Mongo di effettuare scansioni dei documenti molto veloci. Pensiamo ad esempio ad un lungo articolo con un testo che da solo pesa 200 KB. Se a noi servisse l’attributo successivo ai 200 KB, senza una scansione intelligente dovremmo analizzare tutti i suoi attributi precedenti con uno sforzo inutile invece il BSON consente a Mongo di saltare tutto e andare dritto all’attributo che ci serve.


Questi sono tutti meccanismi interni, a noi basta sapere che il BSON consente a Mongo di estendere i 6 tipi del JSON aggiungendone qualcuno nuovo. Abbiamo il tipo Date, che come potete facilmente immaginare serve per le date, il tipo BinData che viene usato per i sorgenti di immagini, file e simili quindi dati binari, ed infine forse il più importante che vi capiterà di usare più spesso è l’ObjectID, ogni documento su Mongo deve obbligatoriamente avere l’attributo _id quindi hanno pensato di creare un tipo apposito per ottenere uno storage più compatto.


Questo è tutto quello che bisogna sapere sul JSON e sul BSON per usare Mongo.