View Full Version : DB/2 auf AS/400?
Hallo!
Es gibt von unserem Compiler-Hersteller diverse Treiber um auf Datenbanken zuzugreifen. Zum Beispiel funktioniert der ODBC-Treiber einwandfrei um auf die AS/400-Daten zuzugreifen. Jetzt gibt es aber auch z.B. einen Treiber für Oracle, welcher im Falle einer Oracle-Datenbank wesentlich schneller as der ODBC-Treiber ist (beim Zugriff auf eine Oracle-Datenbank). Interessant ist, dass es auch einen Treiber für DB/2-Datenbanken gibt (wäre natürlich interessant, da evt. Performance-Vorteile). Ich habe da nun widersprüchliche Aussagen. Der eine "Experte" sagt, dass jede neuere AS/400 (iSeries) grundsätzlich mit einer DB/2 ausgestattet ist, und das man dies im Prinzip gar nicht merkt. Es liegen also im Prinzip alle Daten "wie von Geisterhand" in der DB/2 Datenbank. Der andere "Experte" sagt, dass die DB/2 Datenbank ein Zusatzprodukt für die AS/400 ist, welches man erst einmal kaufen muss.
Wer hat denn nun Recht?
Gruß
Neptun
Hallo Neptun,
wenn Du eine AS/400 , iSeries, oder I5 hast
dann hast Du auch immer die DB2/400.
Die Datenbank wird immer mit der Maschine geliefert.
Da sist ja gerade das schöne ..............
Gruss Michael
Hallo!
Dass die AS/400 bereits eine integrierte Datenbank hat, steht außer Frage, da sind wir uns sicher einig. Ich würde halt gerne wissen, ob es definitiv kein Zusatzprodukt "DB2" für die AS/400 gibt, welche z.B. zusätzliche Funktionalität bietet!?!?
Gruß
Neptun
Da gebe ich Michael vollkommen Recht.
Ein eigenständiges Produkt DB/2 für die AS/iSeries/i5 gibt es nicht da die DB/2 Bestandteil des Betriebssystems ist. Meist wird sie eben auch DB2/400 genannt.
Was die Performance angeht, so liegt dies eher selten an der Art des Treibers (ODBC/OLEDB) sondern an der Art der Abfragen und Optimierungen.
Dies gilt sowohl für die DB2 als auch für Oracle.
Stelle ich ungünstige Abfragen wird ggf. ein Tablescan statt eines Index verwendet.
Bei Verwenden von ADO/DAO-Komponenten und insbesonders bei ADO.NET muss man allerdings einiges beachten:
Bei ADO/DAO entscheidet der gewählte Cursor-Typ (Client-/Serverside) sowie die Art des Recordsets über Performance und Speicherverbrauch.
Beim Clientcursor wird VOR dem 1. Zugriff auf einen Datensatz die GESAMTE Ergebnismenge in das Recordset geladen !
Wenn also eine Abfrage z.B. 1000 Sätze ergibt, wird beim 1. Zugriff 1000 Sätze geladen, alle weiteren Zugriffe geschehen dann aus dem Speicher.
Wird jedoch nicht alles benötigt (z.B. nur 1 Satz), hat man zu viel gelesen.
Über die Eigenschaft MaxRecords kann man daher die Anzahl Sätze eingrenzen.
Allerdings hat dies nichts mit der Ergebnismenge auf dem Server zu tun sondern legt nur um die Anzahl Fetch fest.
Man sollte also ggf. die Abfrage so gestalten, dass weniger Sätze geliefert werden.
Beim Server-Cursor entscheidet der Treiber über das Lesen. Beim CA-Treiber wird z.B. immer 1 Block (default 32KB) übertragen. Die Anzahl Sätze ergibt sich dann aus der Blockgröße/Satzlänge.
Beim CA-Treiber gibt es noch die Einstellung "Prefetch bzw. Vorablesezugriff", dann wird bereits der 1. Block empfangen BEVOR der 1. Satz abgerufen wird, dies reduziert die Anzahl der Datentransfers und bringt übrigens bei kurzen Abfragen (< 1 Block) eine Verdoppelung der Performance.
Wieder anders siehts leider bei ADO.NET aus. Hier gibt es keine Unterscheidung der Cursor, der Cursor und damit auch die Arbeitsweise ist IMMER ein Clientcursor.
Und was den Unterschied zwischen Oracle und AS/400 angeht, so liegt das im Datenbankdesign.
Definiere ich eine auf der AS eine gut strukturierte Datenbank und genügend Indexe, kann die AS/400 die Oracle um Längen schlagen.
Begründung:
Oracle läuft meist auf PC-Servern und da liegt es nun mal an der Windowsversion und 1000 anderen Komponenten.
Bei der AS/400 brauch ich mich AUSSCHLIESSLICH auf die DB konzentrieren, alle anderen Aspekte können relativ leicht durch zusätzliche CPU's, Speicher oder Platten beeinflusst werden.
Tausche aber mal einen Oracle-Server aus !!!
Hallo!
Schönen Dank für die Info's.
Gruß
Neptun
Hallo,
wenn die Oracle natürlich auf einem 3 GigaHertz Prozessor mit Hauptspeicher zum abwinken läuft und die DB2 auf einem historischen Schätzchen von AS400 mit einem 100 MegaHertz Prozessor neben CFINT herdümpelt, dann sieht der Vergleich völlig anders aus.
So richtig schnell wird die AS400 erst, wenn man reichlich vom neuesten hat!!!
mfg
Dieter Bender,
der schon deprimierende Vergleiche selber erlebt hat.
Und was den Unterschied zwischen Oracle und AS/400 angeht, so liegt das im Datenbankdesign.
Definiere ich eine auf der AS eine gut strukturierte Datenbank und genügend Indexe, kann die AS/400 die Oracle um Längen schlagen.
Begründung:
Oracle läuft meist auf PC-Servern und da liegt es nun mal an der Windowsversion und 1000 anderen Komponenten.
Bei der AS/400 brauch ich mich AUSSCHLIESSLICH auf die DB konzentrieren, alle anderen Aspekte können relativ leicht durch zusätzliche CPU's, Speicher oder Platten beeinflusst werden.
Tausche aber mal einen Oracle-Server aus !!!
Wie auch bei Oracle ;) o.ä.
Hallo!
Hat die DB2/400 denn tatsächlich ALLE Funktionalitäten (syntaktisch, sprich SQL-Befehle/Formatierung) wie eine DB/2 auf einem anderen Betriebssystem?
Gruß
Neptun
Sicherlich gibt es auch bei DB2/400 unterschiedliche Integrationsstufen.
V4R3 kann weniger als V4R4 oder V4R5, V5R1 kann wiederum mehr als V4 und am weitesten ist nun V5R3.
Bei den PC-DB2's siehts ähnlich aus, da gibt's V7, V8, V8.2 usw. Jede kann etwas mehr als der Vorgänger.
Wenn man jedoch DB-unabhängig programmieren will, gibts zur Zeit den SQL92-Standard, den wohl alle können sollten.
Hallo,
das ist nicht direkt vergleichbar. DB2/400 ist ca. 1/2 Release Backlevel, auch wenn IBM das gerne abstreitet.
mfg
Dieter Bender
Hallo!
Hat die DB2/400 denn tatsächlich ALLE Funktionalitäten (syntaktisch, sprich SQL-Befehle/Formatierung) wie eine DB/2 auf einem anderen Betriebssystem?
Gruß
Neptun