PDA

View Full Version : Iseries DB2



TARASIK
24-02-05, 09:41
Hallo Forum,
wer kann hier helfen ?
leider mußte ich schon mehrmals feststellen, daß die SQL-Syntax der
iSeries DB2 UDB von der IBM-DB2 (Windows/LINUX) oder ORACLE abweicht.
Da nun die meisten Hersteller Client-Software mit dem Standard IBM-DB2
oder ORACLE oder ... bereitstellen, muß ich trotz meiner iSeries DB2 UDB
einen extra PC DB-Server installieren. Das ist sehr ärgerlich.
Kennt jemand Software mit der man z.B. die iSeries DB2 UDB an einen
anderen Standard anpassen kann ? ( z.b. spezieller ODBC- oder
JDBC-Treiber) ?
Für ORACLE soll es extra für die iSeries so einen Tool geben. Leider weiß
ich nicht wie der genau heißt und wer ihn vertreibt.

Fuerchau
24-02-05, 09:57
Naja, die Abweichungen belaufen sich auf Dialekt-Ergänzungen zu SQL92. Hält man sich an native SQL92 gibts eigentlich keine Probleme.
Oracle hat aber eine ganze Reihe von Zusätzen, die mit SQL92 nichts zu tun haben, die aber aus Performance-Gründen häufig verwendet werden.
Wie es da bei DB/2 für Win/Linux aussieht weiß ich nicht.

Aber gerade was die Verarbeitung von UNICODE angeht, sind andere da schon weiter, da ja sowohl die DB's als auch die Frontends meistens nur noch mit UNICODE arbeiten.
Bei der DB2/400 ist das eher nicht der Fall.

Ein anderer ODBC-Treiber hilft da meist auch nicht weiter, da ja der SQL-Befehl vom Programm zusammengesetzt wird.

MS-Access hilft da manchmal schon weiter.
Da MS-Access wieder eine andere Syntax hat als die DB2 übersetzt MS-Access den SQL. Es kann daher manchmal passieren, dass die Abfragen sehr lange benötigen, da eine Übersetzung in den SQL-Dialekt nicht klappte und nun die gewünschte Funktion auf dem PC "emuliert" wird.

TARASIK
24-02-05, 10:13
Hallo Fuerchau,
vielen Dank für Deine Antwort.

B.Hauser
24-02-05, 12:20
Der aktuelle SQL-Standard ist SQL-2003.

Die einzelnen Datenbanken-Hersteller decken diese Standards unterschiedlich weit ab. Bisher gibt es keine Datenbank die den Standard voll ausfüllt. DB2 UDB for iSeries liegt mit Release V5R3M0 bei ca.98% alle anderen Datenbanken-Hersteller (auch ORACLE) sind noch viel weiter zurück.

Dafür versucht sich natürlich jeder Datenbanken-Hersteller durch zusätzliche Features sich von den anderen abzugrenzen. Warum sollte man sich wohl sonst für die eine oder andere Datenbank entscheiden! Wenn natürlich ORACLE noch ein bisschen weiter einkauft kommen wir vielleicht dahin, dass es nur noch eine Datenbank und damit nur einen Standard gibt.

Fakt ist, "Datenbanken-Unabhängigkeit" funktionniert nur in den Bereichen, die alle Datenbanken abdecken und das ist reichlich wenig!

Birgitta

TARASIK
24-02-05, 12:27
Hallo Birgitta,
auch Dir danke für Deine Antwort. Hast Du vielleicht
einen Tip, welchen Treiber man am Besten jetzt
benutzen sollte ?

Fuerchau
24-02-05, 15:20
Es kommt leider nicht auf den Treiber sondern auf die dahinterliegende Datenbank an.
Sicherlich unterstützen diverses Treiber bestimmte ODBC-Levels (3.0, 3.5, 3.51) manche mit oder ohne LOB's, aber das ändert nichts am Wesentlichen:
Nämlich der verwendete Dialekt !

Wenn ich z.B. "WITH file as (select irgendwas from filexyz) select * from file" verwende, kann ich das erst ab V5 verwenden.
Oracle kann das so nicht sondern da heißt die Funktion ganz anders.

Siehe auch den Oracle-Befehl TRUNCATE, der bei der AS/400 dem CLRPFM entspricht. Auch dies ist nicht SQL-Norm.
usw.
usw.

Eine Empfehlung des Treibers ist nicht relevant (ausser das er funktionieren muss). Bei CA gibt es wieder andere Probleme als bei DB2/Connect, HOBDRDA, StarSQL und wie sie alle heißen.

BenderD
24-02-05, 19:16
Hallo,

bei Java können OR Mapper wie Hibernate die Unterschiede zwischen den Dialekten auffangen, die haben da einen entsprechenden Adapter. Hilft aber nur bei Neu Programmierung.

mfg

Dieter Bender


Hallo Birgitta,
auch Dir danke für Deine Antwort. Hast Du vielleicht
einen Tip, welchen Treiber man am Besten jetzt
benutzen sollte ?