Da quando in azienda abbiamo progettato e sviluppato il nostro primo CMS (circa otto anni fa), mi sono interrogato se i database relazionali fossero lo strumento ideale su cui appoggiarsi.
Gli RDBMS nascono nei primi anni 70 e riflettono le tecnologie, le esigenze di quell’epoca dell’informatica e di quanto avvenuto immediatamente dopo. All’emergere di Internet penso sia stato un passo naturale appoggiarsi a software ben conosciuti, maturi e solidi per sviluppare le web application.
Con il progredire della comunicazione, i database relazionali a mio avviso stanno mostrando i loro limiti e si trovano modi poco aggraziati per superarli. I limiti consistono nel fatto che la tecnologia su web tende a piegarsi alla comunicazione che esprime esigenze di costante flessibilità ed evoluzione: il dato strutturato perde progressivamente di senso, mentre ne acquisisce il dato destrutturato ma relazionato, collegato, affine.
Gli esperimenti più radicali sono andati nelle direzioni di database di nuova concezione: database ad oggetti e database xml. In entrambi i casi, ad oggi, non esistono progretti open mainstream dalle caratteristiche di un MySQL, PostgreSQL o anche solo SQLite. Sono database particolari che si sono ricamati una nicchia, una piccola nicchia.
I più si sono buttati sul creare livelli di astrazione per manipolare i database relazionali in modo comodo. Così nascono gli object relational bridge, in vari linguaggi e con diversi stili di implementazioni. Di fatto però lo strumento di base è pur sempre quello relazionale: forse si fa meno fatica ad utilizzarlo senza dover scrivere chilometri di sql, ma comunque i limiti strutturali permangono.
Parallelamente i database relazionali hanno cercato di dotarsi della flessibilità che viene richiesta. Attualmente la maggiorparte dei database maturi, open o meno, hanno la possibilità di utilizzare internamente xml, sono dotati di capacità di indicizzazione e ricerca fulltext, etc. Di nuovo però ci troviamo di fronte alla nascita di un ibrido senza vocazione.
Sotto il coperchio del pentolone del web in realtà il nuovo bolle da una decina d’anni ed è l’architettura su cui si basa Google. Non entro nel dettaglio perché si rischia di trovarsi con molti meno capelli in testa, ma il concetto di base è che i dati vengono archivati in semplici copie chiave-valore (una mappa o array associativo) e poi liberamente collegati ed espressi attraverso funzioni che li modellano. Il meccanismo è noto come MapReduce.
La testimonianza della flessibilità del sistema sta nella stessa essenza di Google e nella quantità di servizi per il web che riesce ad esprimere utilizzando questa architettura: la sua possibilità di collegare dati, incrociarli e creare nuovi dati da quelli preesistenti é strabiliante.
Fortuna vuole che la grande G voglia passare per “buono” e ogni tanto ci renda partecipe degli scampoli della sua essenza. Parte della tecnologia è stata rilasciata open source, quindi è stata digerita dalla community degli sviluppatori e cominciano a sentirsi i primi vagiti di una tendenza seria. Tra i progetti open si possono segnalare:
- HBase,
- Hypertable,
- CouchDB, progetto che seguo con estrema attenzione perché unisce i concetti di MapReduce e dei web service moderni (parlo di REST, non di quel manicomio di XML-RPC o SOAP).
HBase e Hyertable sono veramente tosti, ma CouchDB forse ha le caratteristiche per essere il MySQL della nuova generazione di database.
Con questo non voglio assolutamente dire che i database relazionali sono destinati a scomparire (con tutta probabilità saranno nostri compagni ancora per moltissimi anni), ma che sono maggiormente adatti ad ambiti maggiormente strutturati: in casi di web-application continuano ad essere la soluzione migliore… per ora.
Il punto è che in questo momento esiste un soggetto fortemente ispiratore che è in grado di trainare verso l’adolescenza e poi alla maturità un nuovo modello di database che meglio si adatta al web. La mia speranza è che, o i progetti già esistenti o i nuovi che nasceranno sull’onda dell’esempio, nei prossimi cinque/dieci anni questo nuovo modello di database emerga e maturi.
