Zitat von
X-Dragon:
so das das später je nach belieben zwischen
MySQL und MS-
SQL umgestellt werden kann
Das ist der Knackpunkt. Das Problem ist dann, das Du bereits von Anfang an bei beiden Datenbanken später möglicherweise ein ziemliches Performanceproblem einhandeln kannst, da Du bei falschem Ansatz der Planung die
SQL-Statements nicht für die jeweilige Datenbank optimieren kannst.
Als einfachste Lösung, die aber das oben genannte Problem mit sich bringt wäre wohl, direkt über die
BDE und den MyODBC Treiber auf
MySQL zu gehen bzw. direkt von der
BDE auf MS
SQL. Dir steht dann sogar z.B. auch Oracle zur Verfügung - die verträgt sich dann aber mit der JOIN - Syntax nicht.
Ein Datenbanklayer in eine
DLL zu packen halte ich persönlich für ungeschickt. Wir haben die Unterstützung für alle Datenbanken direkt einkompiliert und sehr gute Erfahrungen damit gemacht.
Tja,
MySQL ist - wenn auf die Transaktionsunterstützung verzichtet - unschlagbar schnell. Wenn man allerdings Transaktionen benötigt schwimmt
MySQL im Mittelfeld mit. Ich persönlich würde - wenn es Kostengründe sind - für komplexere Datenbanken im Anwendungsbereich eher die
MSDE (der kleine Bruder vom
SQL Server, den es umsonst gibt) vorziehen. Hier kann man halt mit Serverseitigen Prozeduren und Views deutlich mehr rausholen als es bei
MySQL der Fall ist. Und sollten die Datenbanken dann irgendwann doch mal über 2 GB grösse Anwachsen, dann ist man eh in der Grössenordnung wo eine
MySQL DB schon mal schlapp macht, und dann ist ein Umstieg auf ein 'grosses'
DBMS unausweichlich. Von der
MSDE dann auf den 'echten'
SQL Server zu portieren ist eine Sache von Backup machen,
MSDE deinstallieren,
SQL Server installieren, Backup zurücklesen und läuft. Bei einer 2 GB Datenbank ist das ne Geschichte von einem halben Tag, maximal.
Ansonsten noch ein Tip: schau mal in der MS Knowledgebase nach 'Schreiben einer portierbaren Datenzugriffsschicht' von Silvano Coriani,
hier. Das ist zwar für .NET, aber die Technik ist im Prinzip ist das gleiche auch für
Win32 Anwendungen. Hier wird halt
ADO als Verbindung angenommen.