Pagine

mercoledì 17 marzo 2010

DataBase non relazioniali, un diverso approccio

Noi tutti ormai siamo abituati a pensare al database come un insieme di tabelle messe in relazione fra di loro. Questo è il classico approccio di database dove tutti i dati sono rappresentati come relazioni e vengono manipolati con gli operatori dell'algebra relazionale.

La struttura base di un DB relazionale è il domino, caratterizzato da un insieme di valori noti come attributi il cui insieme è detto tupla.

Ma vediamo cosa rende questo tipo di DB, relazionale.

Per definizione, la relazione è una connessione che intercorre tra due o più elementi. Nel campo dei DB una relazione è la connessione che intercorre fra i valori inseriti in una tabella. Questa consta di una testata contenente un insieme di attributi, e di un corpo avente un insieme di tuple.

Espletiamo ora il concetto di database non relazionale.

Parlare di DB non relazionale è troppo vago in quanto è un "ecosistema" sviluppatosi da poco e la maggior parte dei suoi organismi sono in fase di sviluppo non stabile. Sussiste anche un altro aspetto che potrebbe portare confusione a che si avvicina per la prima volta al mondo dei DB non relazionali, ovvero la molteplicità degli approcci usati.

Vorrei soffermarmi sull'approccio che usano DB "collaudati" come Cassandra e CouchDb, due dei più utilizzati e performanti.

Questi DB sono di tipo document-oriented ed utilizzano la notazione JSON per la definizione degli schemi e creazione delle viste, tramite l'utilizzo dinamico dello JavaScript.

Per illustrare al meglio questo diverso approccio, vi mostro come sono rappresentati i dati negli oggetti JSON e come vengono inviati al server.

Ecco un esempio di struttura JSON prendendo in considerazione una semplice anagrafica universitaria;

var university = { "studente" : [ // "studente" è un array in "university"
                 { "nome"      : "Mario",  // First element
                   "cognome"   : "Rossi",
                   "matricola" : 547937 },

                 { "nome"      : "Enzo",   // Second element
                   "cognome"   : "Verdi",
                   "matricola" : 542456 }
               ] } // fine "university"
var server = university.toJSONString();       

Per quanto riguarda l'accesso ai dati, la procedura è ancora più semplice, difatti basterebbe soltanto stampare il valore dei vari campi dell’oggetto;

document.writeln(university.studente[0].nome);
document.writeln(university.studente[0].cognome);
document.writeln(university.studente[0].matricola);

Tutto veramente molto semplice.

Nessun commento:

Posta un commento