Segueix-nos a:

Blogs

Els enginyers de La Salle-URL comparteixen les últimes novetats i projectes en el camp de les solucions de xarxes en enginyeria telemàtica.

22 abril 2021 | Publicat per userDataCenter

SQL vs NoSQL

Introducció

Quan parlem de temes relacionats amb els Data Centers, els primers temes que se'ns vénen al cap solen ser especificacions de maquinari i xarxa, i fins i tot temes de virtualització. Un altre tema molt rellevant que no se sol associar tant amb els centres de dades però que creiem que val la pena tenir un post dedicat és la forma en què s'estructuren les dades que es guarden en aquests centres de dades, ja que, com el seu nom indica, són precisament centres que entre altres funcions tenen les d'emmagatzemar, consultar, modificar i eliminar dades.

En el món de la programació se sol dir que un bon informàtic no és aquest que programa amb menys línies de codi o més ràpid, sinó aquell que pot analitzar un problema i trobar les estructures de dades que faran que aquest problema es pugui solucionar de la forma més òptima i senzilla possible, estalviant tant costos temporals com espacials (encara que se solen sacrificar els costos espacials enfront dels temporals a causa de que l'espai en disc és molt barat comparat amb el valor que se li atribueix a el temps).

Així doncs, en aquest post es compararan les bases de dades relacionals amb les no relacionals.

 

Bases de dades relacionals (SQL)

Quan pensem en bases de dades, normalment imaginem directament una base de dades estructurada en taules relacionades entre si (el que vindria a ser una base de dades SQL), ja que aquestes són molt populars.

El principi de les bases de dades relacionals es basa en l'organització de la informació en trossos petits (taules), que es relacionen entre si mitjançant la relació d'identificadors (una espècie de punters que fan que alguns camps d'algunes taules apuntin a altres camps d'altres taules per evitar així repetir una informació).

En l'àmbit informàtic es parla molt de ACID (Atomicidad, Consistència, Aïllament i Durabilitat). Aquestes són propietats que les bases de dades relacionals aporten als sistemes i els permeten ser més robustos i menys vulnerables davant fallades.

Dues de les bases de dades relacionals més usades i conegudes són MySQL i PostgreSQL, dues ensenyades en l'assignatura de bases de dades de La Salle.

 

Bases de dades no relacionals (NoSQL)

Com el seu propi nom indica, les bases de dades no relacionals són les que, a diferència de les relacionals, no tenen un identificador que serveixi de relació entre un conjunt de dades i altres, és a dir que no tenen relacions entre si (realment existeixen aquestes relacions en molts llenguatges com MongoDB, encara que la gràcia és reduir el seu ús a l'mínim o fins i tot eliminar). La informació s'organitza normalment mitjançant documents (arxius JSON per exemple) i és molt útil quan no tenim un esquema exacte del que es va a emmagatzemar.

La base de dades no relacional més popular i més usada actualment és MongoDB, encara que existeixen alternatives a aquesta orientades a arquitectures distribuïdes, big data i IoT. Entre aquestes es troba Cassandra, per exemple.

 

SQL vs NoSQL

Encara que tots dos tipus de bases de dades són del tot vàlids, hi ha casos en què és millor fer servir una base de dades relacional o un no relacional. Tot i que no hi ha manera de poder saber quina de les dues va a tenir millor rendiment llevat que es provi (i tot i així és difícil de mesurar i depèn de com s'estructurin les dades i quin llenguatge es faci servir), es poden seguir unes pautes bàsiques per a identificar les necessitats de la base de dades respecte el problema:

  • Volum de dades: quan el volumende dades no creix o ho fa poc a poc, pot ser un indicatiu per utilitzar una base de dades SQL, mentre que si el volum de dades creix molt ràpidament en moment puntuals, aquest pot ser un indicatiu per utilitzar una base de dades NoSQL.
  • Necesiades de procés: quan les necessitats de procés es poden assumir en un sol servidor es pot usar una base de dades SQL, mentre que quan no es poden preveure les necessitats de procés o fins i tot quan es preveu que es necessitarà una capacitat de procés superior a la que ofereix un únic servidor, es recomana usar una base de dades NoSQL, per la facilitat que solen oferir aquestes per muntar sistemes ditribuidos.
  • Pics d'ús: quan no hi ha pics d'ús en el sistema per part dels usuaris (a part dels ja previstos en l'anàlisi de el problema), es pot usar una base de dades SQL, mentre que si tenim pics d'ús per part dels usuaris en múltiples ocasions, seria més adequat fer ús de NoSQL.

 

Conclusions

Si bé tant SQL com NoSQL són vàlids i usats en una gran varietat de contextos i ocasions, a l'hora de comparar-los es pot veure que si es treballa sota un entorn controlat, amb poc creixement i amb un comportament estàtic i sense sorpreses, SQL pot ser la millor opció. No obstant això, els serveis en el núvol es troben en entorns no controlats, amb un creixement enorme i irregular, així com un comportament de caràcter impredictible. Tot això, juntament amb les eines ja existents per crear bases de dades amb arquitectures distribuïdes, fa que cada dia més projectes allotjats en data centers usin bases de dades no relacionals.

 

Autors

Joan Farràs Tasias

Ferran Montoliu Boneu

Share

Afegeix un nou comentari

CAPTCHA
Aquesta pregunta es fa per comprovar si vostè és o no una persona real i impedir l'enviament automatitzat de missatges brossa.
1 + 0 =
Resol aquest problema matemàtic simple i escriu el resultat. Ex. per 1+3, escriu 4.