My2cents: I database

Esistono essenzialmente 2 tipi di database: quelli relazionali e quelli ad oggetti.

Per il momento (e peraltro da molto tempo) sono i primi a farla da padrone, essi si basano su una struttura logica simile ad una tabella identificando le colonne con i campi e le righe con i records di dati.
Ciò che ha sicuramente dato una grande spinta ai database relazionali è stato il linguaggio SQL: un semplice linguaggio di interrogazione delle basi di dati creato appunto per permettere agli utenti di interrogare ed eseguire query sui dati senza la necessità di rivolgersi ad un programmatore e/o ad un db administrator.

I database ad oggetti invece prevedono sostanzialmente la memorizzazione di tante entità che possono avere un numero variabile e irregolare di legami tra di loro. Verso la fine della pagina parlo di uno dei più conosciuti database ad oggetti opensource: ZODB.

MySQL

E' un robusto e performante RDBMS adatto per applicazioni mission-critical, supporta parzialmente lo standard SQL92. MySQL è rilasciato sia con licenza gpl (utilizzabile liberamente per progetti opensource) che con licenza commerciale (utilizzabile per applicazioni commerciali).

Il database è nato per essere molto performante, qualità indiscussa che va però a volte a discapito della completezza di aderenza agli standards.

E' multipiattaforma (gira indifferentemente su windows, linux, e sistemi unix-like in modo nativo), è semplice da installare e mantenere, ha una documentazione molto ricca e completa.

Vantaggi: è assolutamente libero per progetti gpl, è attivamente sviluppato e si finanzia con i progetti commerciali, è probabilmente il dbms più diffuso sui siti internet e non solo nel mondo, è estremamente veloce e performante, Si interfaccia con moltissimi linguaggi tra cui c/c++, java, perl, python, php, tcl, ecc., il formato dei database è indipendente dalla piattaforma: basta copiare i files dei dati e mysql funziona normalmente, si può scegliere se si vuole il supporto alle transazioni (maggiore sicurezza, minore velocità)

Svantaggi: per essere un database professionale è decisamente "lite", non supporta ancora alcuni costrutti come le subquery, l'integrità referenziale, le stored procedures, le viste logice

MySQL è probabilmente il miglior database per applicazioni web: non ha la pesantezza (e aimè la completezza dei database più professionali) ma ha dalla sua ottimi tempi di risposta. Va inoltre detto che è una buona scelta per chi al momento non ha bisogno delle caratteristiche mancanti a MySQL: nello sviluppo della versione 4 e nella futura versione 5 molte di esse (subquery, stored procedures, trigger) verranno implementate e le capacità del database potranno così crescere parallelamente con le proprie necessità.

Licenza: GPL o, a scelta, commerciale.

PostgreSQL

Si tratta di un ORDBMS (object-relational database management system) ed è probabilmente il più robusto, longevo e completo database opensource del mondo linux/unix.

Supporta gli standard SQL92/SQL99 ed è sostanzialmente un database di tipo relazionale con alcune caratteristiche che lo fanno definire object-oriented.

Nato ad opera dell'università della California a Berkeley sotto il nome di postgres, venne poi ripreso da un gruppo esterno di sviluppatori che gli diedero il nome attuale, gli aggiunsero un dialetto sql e lo rilasciarono opensource.

Dopo varie vicissitudini, il suo sviluppo è ora finanziato e attivamente sostenuto dalla RedHat.

Vantaggi: è un prodotto molto completo e professionale che supporta i trigger, le stored procedures, l'integrità referenziale, le viste logiche e molto altro. Si interfaccia facilmente con molti linguaggi di programmazione tra i quali c/c++, java, perl, python, tcl.

Svantaggi: è un prodotto sviluppato e funzionante prettamente su piattaforma linux/unix, non ha certo la possibilità di competere in ambito windows diventando così poco appetibile per chi cerca prodotti che facilitino la migrazione tra i sistemi operativi. Esistono anche versioni per windows compilate generalmente con le librerie cygwin ma non vantano certo la robustezza e le prestazioni di quelle native sotto linux. PostgreSQL è un database decisamente più lento di molti altri, tra i quali spicca in particolare mysql.

Se si necessita di un RDBMS completamente libero e completo su piattaforma linux/unix PostgreSQL è probabilmente la scelta migliore.

Licenza: BSD

Firebird

E' la versione opensource del famoso dbms della Borland: Interbase. Nel 2000 la Borland (allora Imprise) sembrava essere stata contagiata dalla vocazione opensource e rilasciò il codice di Interbase 6.0. Poco tempo dopo però riprese lo sviluppo del prodotto in modalità closedsource ritornando alle vecchie abitudini.

Per fortuna si era formata una comunità di sviluppatori con l'intento di prendere in mano la manutenzione e lo sviluppo della versione opensource di Interbase: nacque così Firebird. Firebird è in pratica un fork opensource del prodotto, compatibile all'indietro con Interbase, che cerca (senza alcuna garanzia) di implementare anche la compatibilità con le successive release del fratello closedsource.

Vantaggi: è multipiattaforma e, rispetto ad Interbase che girava su windows, linux e solaris, esiste anche per MacOS X, OpenBSD, FreeBSD e HP-UX e AIX, è robusto e affidabile.

Svantaggi: il futuro del prodotto è incerto, mentre la Borland sta continuando lo sviluppo di Interbase in closedsource, Firebird viene mantenuto in vita da un gruppo di volontari. Non può essere garantita la futura compatibilità con Interbase.

Firebird è un po' l'alternativa a PostgreSQL: se si ha bisogno di un RDBMS completo e professionale ma nativo anche su piattaforma windows allora Firebird è probabilmente la scelta migliore.

Licenza: Interbase Public License (derivata dalla Mozilla Public License)

SAP DB

Si tratta di un database professionale paragonabile ad Oracle, rilasciato opensource da un paio di anni. Non si tratta di semplice database ma comprende anche una serie di tools professionali di amministrazione via gui e via web.

E' stato acquisito recentemente da MySQL AB (la società che produce MySQL) e cambierà presto il nome in MaxDB. Il nome SAP DB quindi è destinato a scomparire entro la fine del 2003, il sito verrà incorporato in quello di MySQL.

Vantaggi: ottimo per una grande azienda che prevede di gestire una elevata mole di dati e necessita di tools professionali di amministrazione. E' una ottima, nonchè gratuita (per il momento), alternativa a Oracle. Con l'integrazione con MySQL diventerà molto più semplice lo scambio di dati tra i 2 RDBMS.

Svantaggi: A brevissimo termine entrerà a far parte della famiglia MySQL: conviene forse aspettare per capire meglio il tipo di licenza con cui verrà rilasciato nonchè i cambiamenti a cui sarà inevitabilmente sottoposto.

Licenza: GPL

Altri database

Cito brevemente di seguito alcuni database che pur non avendo la vocazione di essere dei veri e propri RDBMS professionali, supportano comunque un dialetto SQL, sono leggeri e funzionali, si interfacciano facilmente attraverso appositi moduli con i linguaggi di programmazione più conosciuti e rappresentano spesso la soluzione più leggera e funzionale per piccole/medie applicazioni.

PicoSQL

E' un database completamente italiano, è stato creato da una software house di Pisa che in sostanza ha esteso un driver odbc che già produceva.

E' un database molto leggero ma con funzionalità client/server, supporto dell'SQL92 con le transazioni e tutto quanto serve per creare una robusta applicazione.

Nelle limitazioni rientrano alcune caratteristiche non proprio adatte a database professionali e di grandi dimensioni come il fatto che i campi varchar hanno comunque lunghezza fissa.

Ha però il vantaggio di supportare le viste e le stored procedures (solo in c).

Licenza: gpl

SQLLite

Si tratta di un motore di database che consiste semplicemente in una libreria c che può facilmente essere inclusa nei propri applicativi per dotarli di un supporto di memorizzazione interfacciabile via sql.

Non si tratta quindi di un vero e proprio rdbms con supporto client/server e i dati di ogni database vengono memorizzati in un unico file su disco (stile access) e tutti i tipi di dato sono salvati come stringhe.

Nonostante sia molto limitato e non adatto a realtà aziendali collaborative, esso rappresenta invece una ottima soluzione di memorizzazione dati per piccole applicazioni che ne guadagnano così in portabilità (funziona sotto win e linux) e riducono notevolmente i requisiti di sistema richiesti per farle funzionare. Si interfaccia facilmente con linguaggi come python, perl, ruby, tcl.

Licenza: pubblico dominio.

ZODB

Zope Object Datase è un database ad oggetti realizzato in python e facente parte del progetto Zope pur essendo utilizzabile anche separatemente.

I database ad oggetti, per le loro caratteristiche intrinseche, sono in genere strettamente legati al linguaggio di programmazione con cui sono realizzati e ZODB non fa eccezione.

ZODB implementa la persistenza fisica degli oggetti a scelta in 3 modi diversi: semplice file su disco, su un file BerkeleyDB, su un db relazionale.

Vantaggi: è scritto in python e gira ovunque esista una implementazione di python (moltissime piattaforme), è un db ad oggetti e per chi programma in python fornisce probabilmente il miglior supporto alla persistenza degli oggetti

ZODB comprende anche facoltativamente ZEO: una sorta di server che permette l'accesso al database di oggetti in rete nonchè la gestione contemporanea multiprocesso con funzioni di caching.

Svantaggi: è indissolubilmente legato al linguaggio python e quindi difficilmente utilizzabile con altri linguaggi.

Licenza: ZPL 2 (compatibile opensource e gpl)