Omet navegació

1 - Introducció

En els últims anys estan eixint noves Bases de Dades que estan fugint del que ells anomenen "rigidesa" de les Bases de Dades Relacionals, on les dades estan molt estructurades: taules amb camps perfectament definits, i amb les restriccions que hem vist que es poden crear.

I si vulguérem guardar dades poc estructurades? Per exemple dels usuaris d'una determinada organització, que no sempre ens guardem la mateixa informació: unes vegades ens guardem el telèfon, altres no, altres ens guardem més d'un telèfon; altres vegades ens volem guardar la seua pàgina web, altres vegades les aficions, ... En el model relacional, molt estructurat, hauríem de preveure tots els camps necessaris, i en cas de que sorgira la necessitat d'una nova informació hauríem de canviar l'estructura de la taula.

O un altre exemple, volem guardar senzillament unes quantes "variables" de forma permanent. Podria ser per exemple guardar les preferències de l'usuari en una aplicació per a dispositius mòbils. Si ho dissenyàrem en una taula, seria una taula amb molts camps, però que després només hi haurà una fila, la de l'usuari.

Un altre exemple seria guardar informació de documents XML o JSON, els estàndars d'intercanvi d'informació. En el Model Relacional hauríem de guardar el document XML o JSON pràcticament en un camp, tot junt, i seria costós buscar dins de l'estructura XML o JSON.

Per a salvar aquestos inconvenients mencionats han eixit una sèrie d'iniciatives noves que s'han agrupat en el terme NoSQL (Not Only SQL). Són en definitiva Bases de Dades que no estan basades en el Model Relacional, i que en determinades ocasions poden ser més eficients que les Bases de Dades Relacionals precisament per fugir de la rigidesa que proporciona aquest model, amb dades tan ben estructurades. El terme clau és "en determinades ocasions", és a dir, per a guardar un determinat tipus d'informació. Així ens trobarem distints tipus de Bases de Dades NoSQL, depenent del tipus d'informació que vulguen guardar:

  • Bases de Dades Orientades a Objectes, per a poder guardar objectes, com per exemple DB4O
  • Bases de Dades Orientades a Documents (o simplement Bases de Dades Documentals), per a guardar documents de determinats tipus: XML, JSON, ... Per exemple eXist que guarda documents XML, o MongoDB que guarda la informació en un format similar a JSON.
  • Bases de Dades Clau-Valor, per a guardar informació de forma molt senzilla, guardant únicament la clau (el nom de la propietat) i el seu valor
  • Bases de Dades Orientades a Grafs, per a guardar estructures com els grafs, on hi ha una sèrie de nodes i arestes que comunicarien (relacionarien) els nodes
  • Altres tipus com les Bases de Dades Multivalor, les Bases de Dades Tabulars, Bases de Dades Orientades a Columna, ...

En aquest tema només veurem una Base de Dades Clau-Valor, Redis, per la seua senzillesa; i dues Bases de Dades documentals, MongoDB, per la seua utilització actual, i eXist-db, que guarda documents XML.