Chi conosce il progetto Doctrine, uno dei più potenti ORM per PHP in commercio, dovrebbe sapere che la sua architettura è basata su DBAL. DBAL sta per Database aBstraction & Access Layer e dal nome è evidente la sua funzione principale.
I programmatori PHP sanno pure che dalla versione 5.1 è disponibile l'estensione PDO (PHP Data Objects), prezioso strumento che permette di interfacciarsi ai database in modo comodo e, al contempo, potente. Usando il PDO basta specificare il driver che si intende usare (un driver per un sistema di database management) e il gioco è fatto, con grande beneficio per gli sviluppatori.
Il grande successo di Symfony e, quindi direttamente, di Doctrine hanno innescato una sorta di sfida fra metodologia PDO e metodologia DBAL.
DBAL può essere usato anche al di fuori dell'ORM, se necessario, e allora uno sviluppatore ha deciso di confrontare i due prodotti su una base di codice comune (cioè una stessa operazione che interroga i database recuperandone i dati). I risultati sono riassunti alla fine di questo articolo e recitano che PDO ha un comportamento decisamente migliore in ottica di memoria e tempo di elaborazione. Ma questo risultato è assolutamente coerente e preventivabile, in quanto DBAL è in realtà costruito proprio su PDO e provvede a estenderne le funzionalità .
Allora: PDO o DBAL? Una risposta netta non può essere data, a mio avviso. Il team di sviluppo di Doctrine ha fatto un buon lavoro con DBAL e se possono risultare utili tutte le features di questo prodotto conviene allora usarlo direttamente, anche fuori da Doctrine. Viceversa bisognerà sporcarsi le mani con PDO la cui documentazione ufficiale è qui.
Esperienze in merito?