PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gibt es Cross-Datenbank Kompatibilitätsbibliotheken?



Lin728
18-12-2006, 22:25
Hallo,

Gibts eigentlich sowas wie Datenbank-Abstraktionsbibliotheken, welche eine Untermenge von den von verschiedenen Datenbanken unterstützten Features bieten und z.B. SQL-Statements welche man Ihnen übergibt so anpassen, dass diese unter der aktuellen Datenbank funktionieren?

Wäre eigentlich ganz praktisch ;-)
OpenSource und/oder java noch besser.

michael.sprick
18-12-2006, 22:50
Meinst Du evtl. sowas wie JDBC? Oder für Perl zum Beispiel das DBI Modul?

Christoph
19-12-2006, 07:34
Meinst Du evtl. sowas wie JDBC? Oder für Perl zum Beispiel das DBI Modul?
Oder ODBC?

Bei Perl DBI bin ich mir nicht so sicher. Das letzte mal als ich damit programmiert habe, müsste man SQL-Statemnets noch explizit angeben.

mwanaheri
19-12-2006, 08:20
oder ein Level höher: So was wie hibernate?

Waxolunist
19-12-2006, 09:06
Nein, sowas gibt es nicht. Die Datenbankconnectoren sind zwar vereinheitlicht, aber SQL selbst nicht. Oder besser gesagt es ist zwar vereinheitlicht, aber nicht alle Datenbankhersteller halten sich vollständig daran.

Alleine in meiner Arbeit (Oracle und MySQL) ist SQL schreiben jedes Mal anders. Alleine die Implementierung einer Datumsabfrage divergiert erheblich. Dazu kommen verschiedene Datentypen bei Zahlen.

Sequences sind auch unterschiedlich implementiert. Ich sehe da keine Möglichkeit mit einer Abfrage alle Datenbanken oder zumindest die Big 5 (Oracle, MSSQL, Postgres, DB2, MySQL) zu unterstützen. Diese Schicht wäre für jede DB neu zu schreiben, auch schon alleine von der Performance her. Daher ist es in Projekten auch zumeist so, dass wenn man sich einmal für eine DB entschieden hat, diese beizubehalten gedenkt und sich um Kompatibilität zu anderen DBs nichts schert.

Kommen noch stored Procedures ins Spiel, dann ist es ohnehin völlig aus.

Da hilft auch Hibernate nichts. http://www.hibernate.org/361.html

Keine einzige Datenbank ohne Issues. Und keine Datenbank wird voll ausgeschöpft in ihren Fähigkeiten.

Meine Erfahrung sagt mir, dass man besser fährt, wenn man sich auf eine DB festlegt.

mwanaheri
19-12-2006, 09:32
Keine einzige Datenbank ohne Issues. Und keine Datenbank wird voll ausgeschöpft in ihren Fähigkeiten.

Genau da liegt der Haken. Wenn man nur Abfragen nimmt aus der Ersten Stunde von SQL für Anfänger kommt man noch einigermaßen hin. Dann kriegt man aber Probleme in der Anwendung, weil man die Stärken der Datenbank nicht nutzt und die entsprechenden Sachen in der Anwendung nachbauen muss. Und das garantiert nicht so hinkriegt wie die Jungs von der Datenbank in jahrelanger Arbeit.
'Kompatibel' _und_ 'optimiert' geht nun eben nicht.

ps: Im o.g.Link keine Issues bei PostgreSQL, Firebird und DB2 UDB ;-)

michael.sprick
19-12-2006, 17:59
Ach sorry - ich dachte erst, es ginge um die Schnittstelle bzw. die Konnektivität... Die Stelle mit dem "SQL Statements ... anpassen" hatte ich irgendwie überlesen.

Streicht mein Posting oben ;)