hosting

July 15, 2019
61764-1

SQL vs NoSQL: diferències, avantatges i mites

Durant més de quatre dècades, les bases de dades SQL o relacionals han estat un mecanisme primari d'emmagatzematge de dades però, no va ser fins a finals dels 90, amb el creixement de les aplicacions web i les opcions de codi obert com MySQL, PostgreSQL i SQLite quan va començar a utilitzar-se de manera molt més assídua. 

A aquestes bases de dades tradicionals els va sortir un nou competidor, les bases de dades NoSQL o no relacionals, ja que gràcies a opcions populars com MongoDB, CouchDB, Redis i Apache Cassandra, aquestes bases de dades han anat guanyant terreny dins del sector IT. 

Segurament t’hauràs adonat que quan comences un projecte que requereix l’ús de BBDD podem optar per SQL, per NoSQL o per una barreja de les dues (o més). I segur que et preguntaràs, quina és millor? Ni una ni l’altra és millor sinó que posseeixen una evolució diferent, tot dependrà del projecte. Per la qual cosa cada desenvolupador haurà de conèixer en quins casos són les més recomanables per optar a una o altra. 

Des d’Ilimit, coneixem de primera mà les diferències existents i els avantatges que ofereix una base de dades relacional i una base de dades no relacional, per això, volem apropar-nos una mica més a la necessitat de prendre la millor decisió analitzant les seves diferències. Però primer, destaparem alguns dels mites que giren entorn d’aquestes dues bases de dades. 

Mites SQL i NoSQL

Sabies que al voltant de les dues circulen una sèrie de mites que poden portar a generar una guerra entre alguns especialistes? Volem donar a conèixer els mites més comuns per què la teva empresa o departament IT no caigui a la trampa de les llegendes que circulen per internet. 

NoSQL substitueix a SQL

Això seria com dir que els ordinadors van substituir als televisors perquè són tecnologies més modernes. SQL i NoSQL realitzen la mateixa funció: emmagatzemar dades, però cada un ho fa amb diferents enfocaments, que poden ajudar a obstaculitzar el projecte. Per tant, malgrat que NoSQL és menys antic i molts desenvolupadors han optat per migrar els seus projectes a aquest model per ser la “novetat”, no substitueix de cap manera a SQL, és a dir, és una alternativa més. 

NoSQL és millor/pitjor que SQL

Hi ha la possiblitat que alguns dels projectes segurament s’adapti millor a l’ús d’una base de dades SQL i altres a una base de dades NoSQL i, inclús, existeixen projectes que podrien optar per ambdues bases de dades. Pel que, no podem englobar una o altra en el sentit de millor o pitjor, ja que dependrà de les necessitats de cada projecte en qüestió. 

SQL vs NoSQL és una distinció clara

Això, no és del tot cert, ja que algunes bases de dades SQL han començat a adoptar característiques de NoSQL i viceversa. Al final la tecnologia s’acaba adaptant a les necessitats dels usuaris.                                                                   

El llenguatge/framework determina la base de dades

Podem utilitzar una base de dades MongoDB NoSQL en un projecte PHT o.NET o conectar a MySQL o SQL Server en Node.js. És a dir, els requeriments del producte acabaran marcant el tipus de base de dades que s’adapta millor u no el llenguatge com a tal. 

Després de conèixer els mites més comuns anem a veure quines són les diferències de cada una de les bases de dades per conèixer què és el que més ens pot arribar a interessar. 

Diferències entre SQL i NoSQL

Quan fem referència a SQL ens estem referint a Structured Query Language o llenguatge de consulta estructurat. A través de les bases de dades relacionals tenim l’oportunitat de consultar, modificar, afegir i esborrar dades de bases de dades relacionals. Aquí podem trobar-nos amb dues característiques clau: 

  1. Les dades són emmagatzemades seguint l’esquema estrictament fixat
  2. Aquests volums de dades acaben emmagatzemats en unes taules que es connecten a través de les relacions. D’aquí, que siguin coneguts com a bases de dades relacionals. 
  3. Un exemple de consulta SQL seria: Consultar el llistat de marca-model dels vehicles d’una cartera de clients: “Clients” (tabla1) “tienen” (relación) “Coches” (tabla 2) 

Podem observar com es relacionarien aquestes dues taules. 

Captura de pantalla 2019-07-15 a las 8.38.21

En un altre sentit, quan parlem de NoSQL ens referim a bases de dades no relacionals, no hi ha esquemes fixats i no existeixen relacions. Què passa llavors? Són bases de dades que no tenen una taula fixe i les dades s’emmagatzemen en documents que en conjunt generen col·leccions, com passa amb MongoDB

En una forma d’emmagatzematge no estructura, per tant, al no regir-se per una taula fixe, l’escalabilitat augmenta considerablement les seves prestacions respecte al paradigma relacional. Malgrat això, no hem de passar per alt que les dades emmagatzemades en una mateixa col·lecció tenen relació entre sí i aporten informació sobre un mateix objectiu. 

Captura de pantalla 2019-07-15 a las 8.38.33

Per exemple, una mateixa col·lecció de pòlisses de seguros podríem obtenir dades referents a diferents famílies (o taules) com les dades de la pòlissa, del client, econòmiques, dates de venciment, franquícies, del vehicle, etc., en un mateix document. En canvi, tornant a un model clàssic - base de dades relacional - la informació concreta de cada família de dades la trobaríem continguda en diferents taules (taula de pòlisses, taula de clients, taula de cobertures, etc.) pel que, seria necessari fer ús de les entitats relacionals per poder accedir a la informació. 

D’aquesta manera, per poder conèixer les dades del client d’una pòlissa concreta hauríem d’accedir a la taula de pòlisses, obtenir el número de client (variable que relaciona les dues taules) per poder posteriorment obtenir les dades del client. 

Mentre que, NoSQL opta per un esquema més dinàmic per dades no estructurades, és a dir, les dades poden orientar-se a documents, columnes, basades en gràfics i organitzades com a un magatzem. La flexibilitat que ofereix es deu al fet que no és necessària una estructura definida prèviament. 

Una altra de les seves diferències és l’escalabilitat, on les bases de dades relacionals són escalables verticalment, això significa que poden augmentar la càrrega en un únic servidor, el que suposa l’increment en RAM, CPY o espai en disc. 

En canvi, les bases de dades no relacional són horitzontalment escalables, pel que, és possible afegir més servidors i la base de dades s’haurà de distribuir. 

Malgrat això, s’ha d’assenyalar que no tot és blanc o negre, és a dir, encara que normalment fem referència a l’escalabilitat vertical per les bases de dades SQL i l’escalabilitat horitzontal a les bases de dades NoSQL, és possible trobar excepcions. Ja que, a vegades, les NoSQL no escalen sempre de forma horitzontal i les SQL poden escalar de forma horitzontal fins a un cert punt. 

Per altra banda, SQL segueix les propietats d’ACID (Atomicitat, Consistència, Aïllament i Durabilitat), mentre que, NoSQL segueix el teorema Brewers CAP (Consistència, Disponibilitat i Tolerància de Partició). 

Ja coneixem les diferències però, ¿quina escullo? 

Com ja hem avançat sempre estarà lligat dins del projecte en el qual estem immersos. I és que tant les bases de dades relacionals com les no relacionals són aptes, és a dir, no guanyen ni una ni l’altre, sinó que posseeixen diferents enfocaments segons el problema que es necessiti resoldre. 

Segurament, necessites conèixer quins avantatges i desavantatges poden oferir per tenir una idea més clara pel que decantar-se. Et deixem les principals: 

Avantatges

  • SQL 
  • Dins del disseny, es contempla la necessitat de la no duplicitat de dades a causa de l’ús de relacions entre taules. 
  • Facilita un esquema definit i la integritat de les dades.                                                  
  • NoSQL
  • Existeix una major flexibilitat perquè no es regeix per un esquema estricte. 

Desavantatges 

  • SQL 
  • No posseeix tanta flexibilitat, ja que és necessari planificar amb temps d’antelació l’esquema i posteriorment això fa més difícil la seva actualització. 
  • Utilitzar relacions pot donar consultes JOIN massa complexes. 
  • NoSQL
  • Es pot donar el cas que es produeixin duplicacions de dades. 
  • La flexibilitat amb la qual compta pot arribar a postposar decisions d’estructura importants. 

Casos reals amb SQL i NoSQL

Quan ens trobem davant del dilema de les bases de dades, en moltes ocasions, no sabem quin tipus escollir o quina seria la base de dades que necessitem. A Ilimit coneixem i analitzem els casos de cada client i els oferim les millors solucions com en els següents exemples. 

AVUXI

Startup que facilita de manera ràpida i eficaç la localització d’un bon lloc per menjar, allotjar-se, comprar, passejar o visitar els entorns urbans més famosos en qualsevol destí de vacances de tot el món. 

Aquesta startup recopila informació de diverses fonts i són emmagatzemades en un sistema SQL tradicional pel seu processament i tractament. Una vegada s’han realitzat aquests passos, per obtenir un menor temps de resposta i agilitat en les consultes, aquestes dades són reformatejades i traspassades a una base de dades NoSQL. A més, les dades d’usuari com a preferències són directament emmagatzemades en una altra base de dades no relacional. Per què hem optat per un model de combinació? Perquè així obtindrem un major rendiment i seguretat. 

SÒNAR

Festival de música de caràcter internacional que se celebra a Barcelona i que combina el lúdic amb l’artístic i tecnològic a través de les noves corrents musicals electròniques. El festival compte amb una BBDD relacional on emmagatzema tota la informació dels festivals, artistes i esdeveniments relacionats, on les dades sempre són regides per un patró, per exemple, tots els esdeveniments sempre tenen una data i ubicació, a més, cada un d’ells pot comptar amb l’actuació d’un o més artistes, i aquests a la vegada, poden participar en més d’un esdeveniment al llarg de l’any. 

La clau està a adaptar-se a les necessitats dels clients i escollir el que més els convingui segons el projecte.

Vols saber més? T’has quedat amb ganes de conèixer els serveis que et poden oferir les diferents bases de dades? A Ilimit estarem encantats d’ajudar-te amb qualsevol dubte i/o resposta que necessitis.Descargar eBook

Cloudflare, la protección e impulso que necesita tu negocio