lunes, 27 de abril de 2009

Nous models de bases de dades

Aquest post és una introducció a una sèrie d'escrits que aniré fent relacionats amb els nous models de bases de dades que estan apareguent, i que estan tinguent una bona acceptació en diversos sectors del món empreserial relacionat amb informàtica (el perquè d'això mereix un post per si sól)


Primer de tot, aquests nous models s'allunyen bastant del model relacional de bases de dades al que suposo que tots estàvem més que acostumats. Sí, això vol dir tenir una base de dades sense SQL. Estrany oi?


El model relacional funciona molt bé per algunes aplicacions, però no és una solució universal que serveixi per tot. Fins fa poc era ben normal trobar aplicactius o arquitectures que tenien instal·lada una RDB tipus MySql o Postgres i que tant sols era utilitzada com a magatzem de dades. Amb això vull dir que no s'utilitzaven les propietats ACID d'una base de dades relacional, per tant, SELECTS senzills i UPDATES.


Fins aquí tot bé i cap problema, s'està infrautilitzant una eina molt potent, però no és res greu i si funciona doncs perfecte. Ara bé, pot ser que arribin els problemes en forma de:



  • Escalabilitat: La base de dades s'ha fet molt gran i la màquina, o bé la base de dades no pot suportar els continguts que ha de guardar o bé la càrrega de les diverses aplicacions que l'usten. Què cal fer? cal passar-se a una base de dades més potent o intentem repartir la càrrega de la base de dades entre altres màquines?
  • Disponibilitat: Què passa si la màquina de té la base de dades no està disponible? es queda tot aturat? És fàcil fer backups i restaurar-los en cas de que sigui necessari?. Serà un drama?

Qualsevol administrador de bases de dades sabrà que els dos punts anteriors són importants i els dos són, lògicament, solucionables utilitzant qualsevol motor de base de dades decent, fins a cert punt.


Ara bé, si tenim en compte empreses del nivell de Google, Amazon, Linkedin, Yahoo... que maneguen cada dia unes quantitats de dades MOLT grans hem de pensar que les seves bases de dades han de ser inmenses i lògicament els seus administradors han hagut de tenir en compte els dos problemes anteriors. Com s'ho han fet? doncs bàsicament han abandonat el model de bases de dades relacionals (i les seves implementacions) i han passat a uns models nous, fets a mida (lògicament només pels usos que no requerien una base de dades relacionals!).


Hem de tenir en compte que aquestes empreses tenen molts de recursos i que també ténen unes necessitats bastant específiques, probablement per moltes de les seves aplicacions el model relacional els ajudi ben poc. En molts casos el que necessiten és tant sols "una taula de hash monstruosament gran i monstruosament ràpida". Aquest concepte, conegut com DHT (Distributed Hash Table) no és nou, en l'àmbit de recerca ja és ben conegut i fins i tot hi ha diverses implementacions disponibles, cadascuna enfocada a solucionar problemes lleugerament diferents:


Aquests projectes són els que van posar les bases del que després acabaria apareguent. Si aneu a les pàgines d'aquests projectes veureu que tot i que ténen implementacions estables no són utilitzades en entorns de producció empresarial (que jo sàpiga o hagi sapigut trobar, si estic equivocat sisplau feu-m'ho saber). Una part molt interessant d'aquests projectes és l'apartat d'articles, on s'expliquen les diverses decisions de disseny, diferents problemes que s'ha hagut de solucionar així com diferents algorismes molt importants en el món de la informàtica distribuïda i sobre els quals tinc pensat fer algun post properament.


Les DHT no són trivials ni de dissenyar ni d'implementar, el seu concepte és senzill, una taula de hash distribuïda, però no ens hem de deixar enganyar. Ténen molta tela.


Google i Amazon es van posar en marxa i cadascuna va implementar-se la seva pròpia base de dades especificament pels seus usos, un cop les van tenir implementades, provades i en producció van publicar cadascuna un article, que en certa manera són els articles que van començar amb la "moda" de les noves bases de dades:


A partir de llavors han aparegut moltes bases de dades basades en aquests papers, gens sorprenentment algunes basant-se amb el model Bigtable i d'altres que més que bases de dades s'anomenen Key-Value Stores i que, lògicament, es basen en Dynamo.


Els articles són realment molt interessants i de lectura obligada per qualsevol persona interessada en escalabilitat, bases de dades i noves tecnologies.


En el pròxim post resumiré el paper de la Bigtable de google, i en el següent la Dynamo d'Amazon, per veure'n bé les diferències, tant de disseny com d'ús pràctic. I més endavant, i depenent del meu temps descriuré les meves experiències reals amb diverses implementacions, de moment tinc pensades:

1 comentario:

Comenta: