DAM - DAW - MP 0484 Bases de Dades
Introducció al concepte NoSQL
NoSQL fa referència a una base de dades no relacional o no SQL.
Una base de dades relacional és un format de bases de dades molt estructurat basat en taules, com MariaDB, MySQL, Oracle, PostgreSQL, Microsoft SQL Server o tants altres SGBDR.
Les bases de dades NoSQL estan orientades a documents i permeten emmagatzemar i recuperar dades en formats que no siguin taules.
Algunes de les plataformes NoSQL més conegudes son MongoDB, Elasticsearch i Redis.
Els sistemes NoSQL, sovint, s'anomenen no només SQL per remarcar que també poden suportar el llenguatge de consulta SQL tot i que no l'utilitzin com a llenguatge principal.
Les dades emmagatzemades:
-
no requereixen estructures fitxes, com taules,
-
normalment no suporten operacions JOIN,
-
ni garanteixen completament ACID (atomicitat, consistència, aïllament i durabilitat - Atomicity, Consistency, Isolation, and Durability) i
-
normalment escalen horitzontalment molt bé.
Les bases de dades NoSQL estan altament optimitzades per a les operacions de recuperar i afegir, i normalment no ofereixen molt més que la funcionalitat d'emmagatzemar els registres (p.ex. emmagatzematge clau-valor).
La pèrdua de flexibilitat en temps d'execució, comparat amb els sistemes SQL clàssics, es veu compensada per guanys significatius en escalabilitat i rendiment quan es tracta amb certs models de dades.
Diferents bases de dades NoSQL
Bases de dades de documents
En aquestes bases de dades s'emparella cada clau amb una estructura de dades complexa que s'anomena document. Els documents poden contenir molts parells de clau-valor diferents, o parells de clau-matriu, o fins i tot documents imbricats.
Exemples de bases de dades documentals són MongoDB i CouchDB.
Magatzems de grafs
S'utilitzen per emmagatzemar informació sobre xarxes de dades, com ara les connexions socials.
Exemples de magatzems de grafs són Neo4J i InfoGrid.
Magatzems de clau-valor
Són les bases de dades NoSQL més simples. Cada element de la base de dades s'emmagatzema com un nom d'atribut (o "clau"), juntament amb el valor. Les claus compleixen funcions d'identificadors únics.
Exemples de magatzems de clau-valor són Cassandra i HBase.
Bases de dades orientades a objectes
En aquest tipus, la informació es representa mitjançant objectes, de la mateixa manera que són representats en els llenguatges de Programació Orientada a Objectes (POO) o Object-Oriented Programming (OOP).
Les BBDD d'aquesta mena estan conformades per objectes. Aquests objectes poden ser de diferents tipus, sobre els quals es defineixen unes operacions que en determinen les propietats d'interacció. Les bases de dades orientades a objectes han reviscut l'interès dels usuaris gràcies a les característiques principals.
Aquestes BBDD són altament flexibles i admeten llenguatges de programació com ara JAVA, Visual Basic o C++.
Exemples daquest tipus de bases de dades són ObjectDB i ZopeZope.
Bases de dades documentals
Aquest tipus emmagatzema la informació com un document, generalment utilitzant una estructura simple com JSON o XML i on s'utilitza una clau única per a cada registre. Aquest tipus d'implementació permet, a més de fer cerques per clau-valor, fer consultes més avançades sobre el contingut del document.
Són les bases de dades NoSQL més versàtils. Es poden utilitzar en gran quantitat de projectes, incloent-hi molts que tradicionalment funcionarien sobre bases de dades relacionals.
Bases de dades orientades a grafs
En aquest tipus de bases de dades, la informació es representa com a nodes d'un graf i les seves relacions amb les arestes del mateix, de manera que es pot fer ús de la teoria de grafs per recórrer-la. Per treure el màxim rendiment a aquest tipus de bases de dades, la seva estructura ha d'estar totalment normalitzada, de manera que cada taula tingui una sola columna i cada relació dues.
Aquest tipus de bases de dades ofereix una navegació més eficient entre relacions que no pas en un model relacional.
Bases de dades clau-valor
Són el model de base de dades NoSQL més popular, a més de ser la més senzilla quant a funcionalitat. En aquest tipus de sistema, cada element està identificat per una clau única, cosa que permet la recuperació de la informació de forma molt ràpida, informació que habitualment està emmagatzemada com un objecte binari (BLOB - Binary Large OBject). Es caracteritzen per ser molt eficients tant per a les lectures com per a les escriptures.