In hoeverre is het mogelijk om een systeem te bouwen dat gebruik kan maken van meerdere DBMSs?
Voor ons systeem zijn we ruim een jaar geleden uitgegaan van MySQL. Echter, we zijn er nu wel achter dat MySQL leuk is voor eenvoudige toepassingen, maar een aantal belangrijke tekortkomingen heeft. We willen ons systeem gaan ombouwen, en baseren op PostgreSQL.
Maar voordat we als een gek aan de slag gaan met het ombouwen, willen we eerst kijken in hoeverre we meerdere DBMSs kunnen ondersteunen. Op database-layer (apart database-handler object per DBMS) niveau is het geen enkel probleem.
Maar het niveau daarboven, waarin de queries opgebouwd worden en de DBMS-specifieke functies aangeroepen worden, lijkt een groter probleem.
Bijvoorbeeld de date functions; die verschillen in MySQL en PostgreSQL nogal. Dit zou je op kunnen vangen door in je code een check op het DBMS te laten uitvoeren en ad.h.v. het resultaat een andere functie aanroepen. Maar, dit maakt de code erg complex. Het gebruik van DBMS-specifieke functionaliteit (triggers, views, nested queries etc) lijkt helemaal een ramp te worden dan.
Afgaand op het feit dat er voor alle DBMSs aparte managers zijn (phpmyadmin, phpPgAdmin) neem ik aan dat het niet te doen is. Of is MySQL een beetje een exoot en liggen PGSQL, Oracle en Sybase bijvoorbeeld dichter bij elkaar?
Voor ons systeem zijn we ruim een jaar geleden uitgegaan van MySQL. Echter, we zijn er nu wel achter dat MySQL leuk is voor eenvoudige toepassingen, maar een aantal belangrijke tekortkomingen heeft. We willen ons systeem gaan ombouwen, en baseren op PostgreSQL.
Maar voordat we als een gek aan de slag gaan met het ombouwen, willen we eerst kijken in hoeverre we meerdere DBMSs kunnen ondersteunen. Op database-layer (apart database-handler object per DBMS) niveau is het geen enkel probleem.
Maar het niveau daarboven, waarin de queries opgebouwd worden en de DBMS-specifieke functies aangeroepen worden, lijkt een groter probleem.
Bijvoorbeeld de date functions; die verschillen in MySQL en PostgreSQL nogal. Dit zou je op kunnen vangen door in je code een check op het DBMS te laten uitvoeren en ad.h.v. het resultaat een andere functie aanroepen. Maar, dit maakt de code erg complex. Het gebruik van DBMS-specifieke functionaliteit (triggers, views, nested queries etc) lijkt helemaal een ramp te worden dan.
Afgaand op het feit dat er voor alle DBMSs aparte managers zijn (phpmyadmin, phpPgAdmin) neem ik aan dat het niet te doen is. Of is MySQL een beetje een exoot en liggen PGSQL, Oracle en Sybase bijvoorbeeld dichter bij elkaar?