Ich schreibe eine Anwendung, die eine Schnittstelle zu einer MySQL-Datenbank benötigt. Sollte ich libmysql oder den ODBC-Konnektor verwenden? Gibt es irgendwelche Vor- oder Nachteile, abgesehen von der Tatsache, dass die Verwendung von ODBC es mir ermöglicht, die DB in der Zukunft zu ändern, ohne viel Code zu ändern?
Antworten
Zu viele Anzeigen?Meiner Meinung nach ist das eine Frage der persönlichen Vorliebe.
Bei der Verwendung von libmysql wäre es ein guter Ansatz, zunächst einen Satz generischer libmysqlclient-Wrapper-Funktionen (Schicht A) zu schreiben, darüber einen Satz von Funktionen, die die Datenbankfunktionalität implementieren, die Sie in Ihrem Programm verwenden wollen (Schicht B), und darüber Ihr eigentliches Programm (Schicht C).
Die Umstellung von libmysql auf ODBC erfordert nur geringfügige Änderungen in Schicht B, ohne dass die API von Schicht B geändert wird. Wenn Sie also beabsichtigen, Ihr Programm nur mit MySQL zu verwenden, würde ich vorschlagen, dass Sie bei libmysql bleiben, bis Ihnen jemand einen Patch für ODBC zur Verfügung stellt.
Auf der technischen Seite müssen Sie einen Kompromiss zwischen Datenbankkonnektivität und Portabilität eingehen. Durch die Verwendung von libmysql lässt sich Ihr Code ohne Änderungen auf einer Vielzahl von Plattformen kompilieren, z. B. Unix, MacOS und Windows. ODBC-Bibliotheken werden normalerweise entweder für Windows oder für Unix/MacOS geschrieben.
Ich ändere meine DB ständig, und ich verwende den C-Connector, der einwandfrei und ohne allzu große Änderungen am Code funktioniert. Das war die bessere Wahl für mich und vielleicht auch für Sie (natürlich nur imo).
Ich kann mir nicht vorstellen, dass sich die Codeänderungen zwischen den beiden Schnittstellen wesentlich unterscheiden, wenn Sie bei MySQL bleiben wollen.
EDIT : Ursprünglich habe ich mich für den C-Connector entschieden, weil er für mich intuitiv und natürlich war, und weil ich mir nicht sicher war, ob es ein funktionierendes, gehärtetes ODBC für Linux gibt: Mein Code muss sowohl unter Windows als auch unter Linux laufen. Jetzt sehe ich, dass es tatsächlich so etwas gibt. Das macht ODBC attraktiver: vielleicht hätte ich mich anders entschieden, wenn ich davon gewusst hätte.