mercoledì 11 novembre 2009

Diminutio

Il database non è un programma per computer. E' IL programma.
Qualsiasi applicazione (ad esclusione, forse, di quelle che si occupano di manipolazione audio-video) per funzionare ha bisogno di dati, e questi dati devono essere ben organizzati per poter essere raccolti velocemente.
Non sto ovviamente parlando della mia rubrica telefonica, per la quale un foglietto di carta strappato da un quaderno è più che bastevole, ma esistono situazioni nelle quali occorre selezionare qualche centinaio (migliaio, milione) di righe di dati da tabelle che ne contengono milioni o miliardi in funzione di un qualche valore in esso contenuto.

Facciamo un esempio, tanto per capirci: supponiamo di voler estrarre dalla guida del telefono gli indirizzi di tutti gli abitanti di Milano che hanno cognome Rossi. E' una lavorata, però è relativamente semplice, perche nella guida del telefono i nominativi sono raggruppati per comune e con i cognomi in ordine alfabetico. Sarebbe assai più complicato raccogliere gli indirizzi di tutti quelli che si chiamano Paolo: l'unico modo a nostra disposizione sarebbe quello di scorrere ad una ad una tutte le righe della guida, un compito decisamente proibitivo.

Per i computer e i database la situazione è la stessa: per estrarre i dati da una tabella deve scorrere le righe ad una ad una, a meno che non abbia a disposizione un elenco ordinato, un indice.
Ovviamente ogni particolare ricerca avrebbe bisogno di un particolare indice, e visto che questi indici hanno un "costo" (occupano spazio, e devono essere aggiornati ogni volta che si variano i dati, e quindi impegnano tempo) bisogna ponderare bene quanti e quali valga la pena di creare.

La corretta progettazione degli indici era una di quelle cose che distinguevano le applicazioni ben fatte da quelle raffazzonate.

Parlo al passato perchè adesso esistono i profiler: tu lo accendi, lavori un po' con i tuoi dati, magari proprio in un contesto di utilizzo reale del programma, e alla fine il profiler ti dice quali indici sarebbe bene inserire nella tua tabella, anzi, se schiacci un bottone li genera direttamente lui.
Bello è bello, ma mi sento tanto ridotto a una scimmietta.

2 commenti:

  1. Ma qualcuno che fa il tuo stesso lavoro ci avrà pensato. Prova a inventare qualche altra favolosa utilità :-)

    RispondiElimina