DAM - DAW - MP 0484 Bases de Dades
Revisió BSON / JSON
RFC 4627 - The application/json Media Type for JavaScript Object Notation (JSON) (ietf.org)
JSON, o Notació d'Objectes de JavaScript (JavaScript Object Notation), és l'estàndard més popular per a l'intercanvi de dades a la web, en què es basa BSON (Binary JSON).
JSON va ser definit com a part del llenguatge JavaScript a principis dels 2000 i no va ser fins el 2013 que el format va ser oficialment especificat.
A mesura que JavaScript es va convertir en el llenguatge predeterminat del desenvolupament web del costat del client, JSON va començar a cobrar vida pròpia. Les seves principals virtuts són la seva fàcil llegibilitat per a humans i màquines i fàcil implementació en altres llenguatges.
JSON ràpidament va superar XML, que és més difícil de llegir per a un humà, significativament més detallat i menys adequat per representar estructures d'objectes utilitzades en els llenguatges de programació moderns.
Format JSON
El seu format bàsic està construït per dues estructures:
-
una col·lecció de parells clau/valor
-
una llista ordenada de valors.
En JSON, aquestes estructures es representen d’aquestes formes objecte o array:
- objecte:
{ "clau" : valor , "clau" : valor }
- array:
[ valor , valor , valor ]
- valor:
false / null / true / objecte / array / number / stringexpl
- string:
- numero:
- espai_en_blanc: espai | tabulador horitzontal | nova línia | retorn de carro
Exemple
{ "nom" : "Pilar", "cognom" : "Arc" , "edat" : 12 ,
"aficions" : [ "pintura" , "viatges" , "vela"] ,
"pares" : [ { "nom" : "Maria", "cognom" : "Jou"} ,
{ "nom" : "Josep", "cognom" : "Arc" } ] ,
"estudis" : { "nivell" : "CFGS", "curs" : 1,
"matricula" : true }}
o bé en forma d’arbre seria quelcom com ara:
{
"nom" : "Pilar",
"cognom" : "Arc" ,
"edat" : 12 ,
"aficions" : [
"pintura" ,
"viatges" ,
"vela"
] ,
"pares" : [
{
"nom" : "Maria",
"cognom" : "Jou"
} ,
{
"nom" : "Josep",
"cognom" : "Arc"
}
] ,
"estudis" : {
"nivell" : "CFGS",
"curs" : 1,
"matricula" : true
}
}
Podem generar documents JSON aleatoris...
a la següent pàgina: https://www.json-generator.com/
o bé la nova versió: https://next.json-generator.com/
BSON
BSON simplement vol dir "JSON binari". L'estructura binària de BSON codifica informació de tipus i longitud, cosa que permet analitzar-la molt més ràpidament.
Des de la seva formulació inicial, BSON s'ha ampliat per afegir alguns tipus de dades opcionals no nadius de JSON, com ara dates i dades binàries, sense les quals a MongoDB li hauria faltat un suport valuós.
Els llenguatges que admeten qualsevol tipus de matemàtica complexa solen tenir nombres enters de diferents mides (ints vs longs) o diversos nivells de precisió decimal (float, double, decimal128, etc.).
No només és útil poder representar aquestes distincions en les dades emmagatzemades a MongoDB, sinó que també permet que les comparacions i els càlculs es facin directament en les dades de formes que simplifiquen el consum del codi de l'aplicació.
MongoDB emmagatzema dades en format BSON tant internament com a través de la xarxa, però això no vol dir que no es pugui pensar en MongoDB com una base de dades JSON.
Qualsevol cosa que pugui representar a JSON pot emmagatzemar-se de forma nativa a MongoDB i recuperar-se amb la mateixa facilitat a JSON.
Per exemple, MongoDB permet als desenvolupadors consultar i manipular objectes mitjançant claus específiques dins del document JSON/BSON, fins i tot en documents imbricats en moltes capes en un registre, i crear índexs d'alt rendiment en aquestes mateixes claus i valors.
JSON vs BSON
| JSON | BSON | |
|---|---|---|
| Codificació | Cadena UTF-8 | Binària |
| Suport de dades | String, Boolean, Number, Array | String, Boolean, Number, (Integer, Float, Long, Decimal128, ...), Array, Date, Raw Binary |
| Llegibilitat | Humana i màquina | Només màquina |

