24 de setembre 2007

Bases de dades

Portava molt de temps preguntant-me per a què nassos fer servir les maleïdes bases de dades i les seves instruccions SQL.

Mirem doncs quina alternativa tenim a les bases de dades: Podríem tenir un sistema sense bases de dades, on les dades estiguessin en simples fitxers de text: Rotllo fitxers de configuració de Linux (a Linux tenim totes les nostres dades per a poder fer login al fitxer /etc/passwd [sí, el password el tenim encriptat aquí tb]). Amb això podem fer directament cridese a sistema per obtenir les nostres dades, clar, que també haurem de filtrar les dades (voldrem aconseguir el nostre nom d'usuari i no el del veí!) per això també ens hauríem de montar un seguit de funcions per a filtrar la informació. Tot això, ben fet, faria que l'accés a les dades fós realment ràpid i eficient.

El problema ve quan volem relacionar un seguit de dades (la típica taula d'estudiants i la d'assignatures que es relacionen a través de les matrícules) i quan tenim una gran quantitat de dades. Clar que ho podríem fer a base de codi i a base d'accedir a fitxers. Però és que acabaríem montant una base de dades com MySQL o PostGress. A més afegeixir que molts dels Sistemes Gestors de Bases de Dades (SGBD o DBMS)emmagatzemen les dades en forma d'arbres (arbres B+ per ser precisos) amb lo qual tenen més rapidesa d'accés i a més cada tupla l'enmagatzemen aprofitant el mínim nombre de bits possibles.

I dius, si ja estan fets els SGBD, perquè haig de montar-ne un jo? i certament, per això es fan servir els servidors de bases de dades.

Però clar, després et trobes amb articles, i veus com es queixen els de les grans web-sites del món dient que les bases de dades actuals són molt poc escalables. I com molts d'ells s'han fet la seva pròpia solució per a poder gestionar el bon grapat de milions d'usuaris que reben diàriament (Google, Flikr...).

Així que tot i que pensava que em formulava una pregunta una mica estúpida, veig que al cap i a la fi no era tant trivial.

PS: Si voleu provar de barallar-vos amb bases de dades i fer algún programet que ho vagi gestionant tot us recomano el llenguatge de programació Python i el servidor de bases de dades MySQL(No m'acaba de fer el pes aquest tutorial, es massa introductori, però per copmençar...) junt, es clar, amb el paquet python-mysql per tenir els accesos des de Python a MySQL.