Database abstraction layer?

Zanima me koliko se koriste database abstraction layeri u praksi pri programiranju korištenjem PHP-a i različitih baza podataka? I kolika je vjerojatnost da programi rađeni u PHP-u moraju biti eventualno prilagođeni drugim bazama podataka, a ne samo MySQL-u?

Knjiga po kojoj radim trenutno bavi se PHP-om i MySQL-om, ali se na jednom dijelu samo ukratko spominje korištenje PEAR MDB2. Meni je, kao početniku u svijetu PHP-a i baza podataka, ovo vrlo komplicirano i frustrirajuće trenutno, pa me zanima što iskusniji misle - koliko pažnje bi trebalo ovome posvetit?

Ovisi sta radis, nema univerzalne formule. Ako radis nesto specificno onda DAL unosi dodatan sloj koji usporava aplikaciju (pitanje je koliko su optimalni njegovi upiti, a za prosjecnu web orijentiranu aplikaciju, to je vecinom “usko grlo”), a veliko je pitanje da li potreban i da li ce se ikad “iskoristiti” na nacin za koji je zamisljen (migriranje na drugu bazu). Ako radis nesto opcenito, onda bi vjerovatno trebao razmisljati o DAL-u.

Npr. radis neki opceniti CMS za koji pojma nemas tko ce ga kupiti i na kojem ce se severu, odnosno bazi, vrtiti. U tom slucaju, DAL je preporucljiv.
Dok s druge strane, ako imas konkretnog klijenta kojem prodajes custom made CMS koji ce se vrtiti na tvoj serveru - za koji znas da imas MySql - onda ti DAL i nije potreban.

I btw, DAL nije magicna stvar. Ne garantira da ces SVAKI sql upit uspjeti apstrahirati na nacin da ce raditi na bilo kojoj bazi.

Hvala na odgovoru.
Posto se u knjizi ne ide dalje u vezi DAL-a od samog spominjanja i jednostavnog primjera, onda cu za sad to zaobici iako to ne volim bas radit. Dok savladam PHP i MySQL do neke zadovoljavajuce razine, onda cu po potrebi dalje proucavati kompatibilnost sa drugim bazama podataka.

A i pretpostavljam da se najcesce trenutno koristi MySQL(?)

Vecina hostinga (koliko sam imao prilike vidjeti) ima MySql i PostgreSql.

Mislim da je programiranje klasa za DAL za manje aplikacije potpuno nepotrebna. DAL ima svoju svrhu tek kod velikih projekata kod kojih je portabilnost bitan čimbenik.

ako aplikacija radi s više baza, onda query-i nisu dobro optimizirani.
jer nemoguće je dobro napisati query-i da radi sa svim bazama i da je taj isti optimiziran najbolje za sve baze.