A proposito di Joomla, Joda, MySQL e PostgreSQL

Ieri ho aperto il forum di Joomla.org e mi sono ritrovato questa schermata poco simpatica :x

Errore sul sito Joomla.org

Errore sul sito Joomla.org

Il numero di connessioni al server MySQL ha superato il limite, per cui niente connessione al forum. E come è successo a me, probabilmente è successo a centinaia di altre persone che in quel momento stavano consultando il forum. Poco ci azzecca con Joomla, dato che il software su cui gira il forum è phpBB, ma molto ci azzecca con MySQL.

Questo mi ha fatto tornare in mente una e-mail che ho ricevuto qualche tempo fa, in cui mi veniva chiesto se fosse meglio PostgreSQL o MySQL, ed i piani di Joomla per quanto riguarda il database, ed ho approfondito un po' il discorso.

Al momento Joomla supporta esclusivamente il database MySQL.

MySQL è un database pensato per essere il più possibile veloce, e per raggiungere tale velocità ha volutamente rinunciato a certe caratteristiche proprie di DBMS completi, scalabili (e costosi!) come Oracle.

Ciononostante, MySQL è un grandioso prodotto che ha avuto nel Web il proprio successo proprio per le sue caratteristiche di velocità e snellezza.

Joomla è in piena espansione e potrebbe trarre molto vantaggio dalla possibilità di utilizzare diversi DBMS a seconda delle preferenze, dell'ambiente di deployment e dalle esigenze di sviluppo.

Per questo qualche tempo fa è stato lanciato il progetto Joda, che vuole proporsi come framework per l'astrazione delle connessioni al database, in modo che supportare un nuovo DBMS significherebbe semplicemente svilupparne un driver.

Come si può leggere nella discussione, persino Microsoft si è dichiarata interessata a quello che è iniziato come progetto one-man, fornendo la disponibilità di fondi ed aiuto. Questo per introdurre il supporto di MS SQL Server in Joomla.. ma in modo costruttivo: non realizzare l'integrazione soltanto con MS SQL Server, bensì aiutare a realizzare il framework in modo da poter supportare ANCHE il loro prodotto. Complimenti davvero.

Se ne è parlato anche nella mailing list degli sviluppatori e presto potremmo vedere novità importanti in questa direzione.

Un cambiamento del genere è una delle cose che probabilmente mettono ansia agli sviluppatori, per cui non penso che questa feature vedrà la luce nell'immediato futuro.. non è nei piani di Joomla 1.6, forse vedrà la luce in Joomla 1.7.. o ancora più avanti.

Infatti nonostante SQL sia uno standard, è in continua evoluzione e ogni vendor di DBMS realizza implementazioni che differiscono l'un l'altro, se pur nei dettagli: il formato della data, l'uso delle virgolette singole o doppie, i tipi di dato.. qualche anno fa ho realizzato un programmino Java per convertire un database PostgreSQL in un DB Access per poter eseguire un'applicazione da CD, ed ho trovato davvero molte differenze.. anche soltanto lievi modifiche che non consentono di realizzare applicazioni che funzionano in modo trasparente con entrambi i database.

Joomla contiene al suo interno molte query che si possono definire "specifiche" per MySQL: con un altro DBMS potrebbero non funzionare e in tal modo causare grossi problemi al sito Web.

Per non parlare delle estensioni: già il passaggio da Joomla 1.0 a 1.5 è stato traumatico per molte (ed alcune non hanno ancora rilasciato una versione funzionante..): dover ristrutturare da capo un'estensione significa creare una spaccatura netta come quella che sta avvenendo ora sulla JED, dove si vedono estensioni per Joomla 1.0 e per 1.5, premurosamente separate.

Si prevede un futuro molto roseo per il legacy mode :roll:

Tags: , , ,

7 Commenti al post “A proposito di Joomla, Joda, MySQL e PostgreSQL”

  1. odino Says:

    Credo che rendere Joomla! compatibile a più DBMS sia un suicidio. Per ora abbiamo MySQL e MySQLi, e viene ovviamente supportata anche la versione non free-ware di MySQL.

    PostgreSQL e affini….finchè rimaniamo nel campo “sintassi SQL” potrei anche accettarlo, alla fine cambia veramente poco…

    Ma al di fuori dell’SQL sarebbe un disastro: dovremmo acquistare gli hosting, scaricare e sviluppare le estensioni scegliendo sia la versione di Joomla! sia il DB a cui interfacciarci. Nono…

  2. Copes Flavio Says:

    Tutti i prodotti citati (Oracle, MSSQL, PostgreSQL) supportano il linguaggio SQL per gestire le query ;)

    Il problema IMHO sono i dialetti introdotti da ogni DBMS.

    Oltretutto, introdotto un nuovo DB ci sarebbe una corsa per cercare di rendere compatibile (quasi) ogni altro DB disponibile sul mercato.. con conseguente complicazione della questione.

    Hai ragione a preoccuparti ma credo che se mai questa cosa vedrà la luce, dovrebbe essere trasparente al massimo per gli sviluppatori e per gli utenti.. con una nuova API per l’accesso al database che si preoccupi di tutto quanto.

    Vedremo 8)

  3. odino Says:

    mmm flavio sperem bene…
    ok che quelli che hai citato tu si basano sull’SQL, ma ci vorrà poco a vedere qualcos’altro “in mezzo”.

    Ah beh poi se mi scrivono il framework ancora più “power”, con una gestione di connessioni, query e recupero dati migliore…nessuno si lamenterebbe!

    ( e già ora mi pice… )

  4. Santo Caruso Says:

    Un progetto per Joomla di Google Summer Code 2008 si interessa proprio di questo, del supporto multi-db http://developer.joomla.org/gsoc2008/multi-db-support.html , viste queste premesse spero che avere un tale risultato in Joomla 1.7 sia ottimistico :)

  5. Copes Flavio Says:

    Grazie del riferimento Santo, questo progetto sembra proprio interessante e sembra che lo “student” abbia deciso di creare la propria versione di Joda.. vedremo :)

  6. Copes Flavio Says:

    Ho trovato anche questo bel post scritto dal creatore di Joda.. datato Maggio. http://developer.joomla.org/developer-team-blog/111-joda-an-attempt-to-make-joomla-a-multi-database-platform.html

    Così pare che abbiamo due versioni in concorrenza.. bene! La concorrenza in ambito GPL vuol dire prodotti migliori per noi users :D

  7. odino Says:

    …o dispersione delle risorse :(

Lascia un commento

Nome (obbligatorio)

Mail (non sarà pubblicata) (obbligatoria)

Sito web