2. Bases de dades NoSQL

2.2. Fitxers JSON

JavaScript Object Notation (JSON) és un format de dades basat en text estàndard per representar dades estructurades que segueix la sintaxi d’objecte de JavaScript. Tot i que és molt semblant a la sintaxi d’objecte literal de JavaScript, pot ser utilitzat independentment de JavaScript.

Els fitxers per emmagatzemar dades amb format JSON cada vegada són més usats en la informàtica i també en l’àmbit de la bioinformàtica.

Figura 72. Exemple d’un document amb format JSON.
Font: elaboració pròpia.

En aquest format la forma de guardar les dades és semblant al model clau/valor, on la clau seria el nom del camp o atribut i a continuació tenim el valor.

Els fitxers JSON en realitat emmagatzemen una col·lecció de documents amb aquest format i cada document és la representació o la instància d’una entitat.

Si fem el símil amb la informació que emmagatzemem en una taula relacional, cada fila de la taula correspon a un document, i totes les files de la taula serien una col·lecció de documents.

JSON requereix usar cometes dobles per a les cadenes i els noms de propietats. Les cometes simples no són vàlides.

Una coma o dos punts mal ubicats poden produir que un arxiu JSON no funcioni. S’ha de ser curós per validar qualsevol dada que es vulgui utilitzar. És possible validar JSON utilitzant una aplicació com JSONLint.

Vegem com s’emmagatzema la informació que tenim guardada a la taula genomes en un fitxer JSON.

{especie:"D. Melanogaster", nom:"Mosca de la fruita", descripcio:"També denominada del 
vinagre"} {especie:"H. Sapiens", nom:"Huma",descripcio:"Nostra pròpia especie"}
{especie:"M. Musculus", nom:"Ratolí", descripcio:"Altre organisme model"}

En aquest cas tenim 3 documents que corresponen a les 3 files de la taula genomes. Cada document comença amb el símbol {, i finalitza amb el símbol }

En cada document es repeteix el nom del camp i a continuació el seu valor, separats pel símbol :

Cada combinació camp/valor se separa per comes.

No es descriuen els tipus de dades, si el valor és una cadena de caràcters s’utilitzen les cometes dobles ” “, i si el valor és numèric no cal escriure’l entre cometes.

Una altra forma molt habitual de guardar la col·lecció de documents és dins d’un array amb els símbols [ ] i separant els diferents documents per comes. Es considera tota la col·lecció de documents com un sol objecte, ja que estan tots en un array.

[{especie:"D. Melanogaster", nom:"Mosca de la 
fruita", descripcio:"També denominada del vinagre" }, {especie:"H. 
Sapiens", nom:"Huma", descripcio:"la nostra pròpia especie" }, 
{especie:"M. Musculus", nombre:"Ratolí", descripcio:"Altre organisme model" }]

Un camp pot guardar un array de valors:

{dies:["dilluns", "dijous", "dissabte"]}

Un camp també pot guardar un altre document JSON. També s’anomena document incrustat.

{direccio: {carrer: "Valencia", número: 334, codi: 08012}}

Un camp pot guardar un array de documents JSON.

{amics:

[{nom: "Pedro", edat: 34, telèfon: 666737211},

{nom: "Soraya", edat: 31, telèfon: 666737212},

{nom: "Arnau", edat: 29, telèfon: 666737213}

]}

A partir de la versió 8 de MySQL és possible treballar amb documents JSON a les taules SQL amb el tipus de dades JSON.

Podem emmagatzemar tot un document JSON en un camp de la taula i realitzar consultes amb l’ordre JSON_EXTRACT, actualitzacions amb JSON_REPLACE i eliminacions amb l’ordre JSON_REMOVE.