Loading

| HT articoli

| MySQL e Database

Cosa sono i database non relazionali (NoSQL)

di Andrea Usuelli

I database non relazionali, pur non essendo una novità assoluta, hanno registrato una crescita esponenziale nel loro sviluppo e utilizzo negli ultimi mesi grazie al sempre più crescente bisogno di scalare in orizzontale, dove i classici RDBMS (database relazionali) presentano diverse limitazioni. Pensate infatti ai sempre più in voga sistemi cloud dove i nodi possono diventare veramente molti, gestire un RDBMS in un ambiente del genere risulta complicato e la potenza computazionale non viene sfruttata in modo ottimale (pensate per esempio alla replicazione con MySQL dove il log binario costituisce già di per sé un enorme calo prestazionale).

Viste le problematiche di cui sopra, i giganti del web, che si trovano a dover gestire database di dimensioni veramente imponenti, hanno sviluppato (o contribuito allo sviluppo) vari NRDBMS (database non relazionali) con approci leggermente diversi, ma tutti con gli stessi principi di base, si raggruppano infatti sotto la dicitura di movimento NoSQL (Not Only SQL).
 
I principali metodi d’implementazione dei database NoSQL sono i seguenti:
 
Coloumnfamily: i dati sono organizzati in righe e colonne, ma le righe possono avere quante colonne si vogliono e non c’è bisogno di definire le colonne come prima cosa.
 
Document store: è l’evoluzione del metodo key/value, rispetto ai normali database relazionali invece che immagazzinare i dati in tabelle con dei campi fissi, questi vengono messi in un documento che può contenere illimitati campi di illimitata lunghezza, così se ad esempio di una persona conosciamo solo nome e cognome, ma magari di un’altra persona anche indirizzo, data di nascita e codice fiscale, si evita che per il primo nominativo ci siano campi inutilizzati che occupano inutilmente spazio.
 
Graph: i dati vengono immagazzinati sotto forma di strutture a grafi, rendendo più performante l’accesso a questi da applicativi orientati agli oggetti.
 
Key/Value: in questo caso i dati vengono immagazzinati in un elemento che contiene una chiave assieme ai dati veri e propri, questo metodo è il più semplice da implementare, ma anche il più inefficiente se la maggior parte delle operazioni riguardano soltanto una parte di un elemento.
 
database_icona

Commenti Recenti

Powered by Disqus
Monday 10 May 2010