zur Homepage

Vom Pferderennen zum Fernsehprogramm

Bis vor kurzem habe ich Derby immer für ein Pferderennen gehalten, dann ist mir irgendwie, einer dieser Zufälle, die Java Datenbank Derby über den Weg gelaufen. Derby hieß früher Cloudscape und wurde auf dem Gipfel ihrer Bekanntheit in Derby umbenannt. Falls jetzt jemand nachfragt: ja, die ist von IBM, nein, das war kein AS/400 Produkt; sie wurde nicht nur umbenannt, sondern gleichzeitig auch Open Source gemacht, das lässt ja hoffen für die AS/400: OS/400 als Freeware für die AIX wäre ja mal eine interessante Neuigkeit.

Derby hat mehrere Eigenschaften, die es interessant machen, leider muss ich dem mittlerweile ein würden hinzufügen. Derby ist in Java implementiert, Derby läuft auf jeder Plattform, Derby ist Open Source, Derby kann DRDA und Derby greift mit einem embedded JDBC Treiber auf die eigenen Daten zu. DRDA ist der offene Standard für verteilte Datenbanken im blauen Umfeld, den keiner im nicht blauen Umfeld haben wollte, der aber immerhin offen genug ist, das die AS/400 ihn auch kann. Alles was man mit einem remote SQL Connect auf der AS/400 ansprechen kann, geht über DRDA, zumindest in erster Näherung betrachtet. Rein von der Papierform her, scheint es also möglich zu sein per DRDA von der AS/400 an eine Derby Datenbank zu verbinden und dann per embedded SQL SQL Zugriffe auf die Derby Datenbank abzusetzen. Im zweiten Schritt biegt man dann die Derby Datenbank durch Wechsel des embedded JDBC Drivers auf eine andere JDBC Datenbank um und kann dann über Derby auf diese zugreifen. Derby unterstützt auch externe stored Procedures, die als static Java Methoden implementiert werden, was dann eine Kette von RPG bis Java aufbaut ohne jede Toolbox, mit frei verfügbarer Middleware, ohne jedes Gedöns.

Diese Überlegungen brachten mich sofort dazu Derby auf einer Windows Büchse zu installieren, was recht flott bewerkstelligt war. Im Handumdrehen war die Datenbank mit ADDRDBDIRE registriert und ich dachte, jetzt kann es losgehen, doch vor den Preis haben die Götter, an die ich nicht glaube, den Schweiß gesetzt. Meine Oma, die auch nicht an Götter glaubte, sagte da Ohne Fleiß kein Preis. Ob Oma oder Götter machte hier keinen Unterschied, es ging nicht. Die ersten Hürden waren schnell genommen, anlegen einer Datenbank mit dem Namen des RDB Eintrags in Derby, Berechtigungseinstellungen im Derby, anlegen eines Benutzers im Derby, Rechtevergabe im Derby und die Fehlersituation wechselte, die Derbydatenbank akzeptierte den Login, die AS/400 reklamierte weiterhin zwei Fehler im Betriebssystem. Internetrecherche brachte dann zu Tage, dass Derby und AS/400 fast kein Thema ist, immerhin hatte der manchem bekannte Dr. Ugo aus Modena letztes Jahr mal versucht eine AS/400 über DRDA an Derby anzubinden, seine Hilfeschreie im Usenet versandeten damals allerdings ohne Lösung des Problems.

Ich vertraute nicht nur notgedrungen weiterhin auf die Community, schließlich habe ich keine Software Maintenance und mein aktuelles Release ist ohnehin out of maintenance und der IBM Support weit hinter der Linie, an der ich in dem Augenblick segelte; ich wärmte also diesen Fred im Usenet wieder auf, was mir bei Dr. Ugo nicht nur den Spitznamen Quijote einbrachte, er hatte nämlich in dem Augenblick kapituliert als er Windmühlenflügel vor sich sah, Dr. Ugo hatte auch einen Tip parat, den er in die Frage warum ich das nicht mit einem ARDPGM mache, verpackte. Da es gerade Dienstag war und justament an diesem Abend Neues aus der Anstalt gesendet werden sollte, kannte ich das Programm der ARD für diesen Abend nicht und verschob die Sache, nachdem ich noch kurz der Nettikette Genüge tat und antwortete, dass mir das ARDPGM aktuell nicht geläufig sei.

Mir ließ die Sache keine Ruhe und ich versuchte den Dingen auf den Grund zu gehen. Ich ging also an die Quellen des Pferderennens und erstellte mir ein Derby Projekt aus den Sourcen, warum ist das denn sonst Open Source und brachte den Build hinter mich, nunmehr konnte ich also hinter die Kulissen sehen und im Derby per Debug verfolgen, auf was die AS/400 da setzte. Dabei wurde mir klar, dass Derby den sogenannten CCSIDMGR nicht unterstützt und an dieser Stelle ist in der Derby Dokumentation zu lesen, dass dies für den Client, in meinem Fall meine AS/400, nach DRDA Spezifikation ein Grund sein darf, die Verbindung abzulehnen, oder auch nicht. Zugleich spricht Derby intern UTF8, was meine AS/400 ihrerseits nicht versteht, hiermit war der Versuch Client und Server auf dieselbe Codierung einzustellen, nicht möglich. Die einzige tiefer gehenden Informationen meiner AS/400 bestanden in ein paar Dumps des DRDA Datenstroms und da ich zu wenig Informationen dokumentiert fand wie die näher auf zu dröseln sind, sah ich hier erstmal ebenfalls die Windmühle vor mir und da gerade Sancho mit Rosinante zu anderen Quellen unterwegs war, drehte ich eine Trainingsrunde auf dem Rennrad und beschäftigte mich anschließend mit dem basteln eines Baguettes.

Ein anständiges Baguette ist ein mehrtägiges Projekt, wenn man auf traditionelles Handwerk setzt und mit den Tücken moderner Technik habe ich beruflich schon genug zu tun, schließlich löst man mit EDV zu einem hohen Prozentsatz Probleme, die man ohne Computer nicht hätte. Da ich modulares arbeiten bevorzuge, habe ich einen Levain im Kühlschrank schlummern, der mir bereits die Aussicht auf frisches Baguette am nächsten Tag eröffnet, aber die Ruhezeiten lassen Raum zum gründlichen überdenken anstehender Probleme nicht backtechnischer Art. Für das Rennrad war die Witterung zu kühl, also beschäftigte ich mich noch ein wenig mit dem ARD Programm, wobei die Internet Recherche zum Thema ARDPGM interessantes zu Tage brachte, unter anderem, dass Oracle diesen Weg für ihr Transparent Gateway for DB2/400 gegangen ist.

Die Abkühlphase meines Baguettes nutzte ich für ein erstes Resümee. Es bleiben drei Wege, ich könnte aufgeben, ich könnte Oracle folgen und das mit dem ARDPGM versuchen, oder ich könnte versuchen Derby in der DRDA Spezifikation aufzuwerten. Irgendwie werde ich das Gefühl nicht los, dass Oracle beim Studium der DRDA Spezifikationen eine Windmühle vor sich gesehen hat und ich habe in der auf die Schnelle gefundenen DRDA Dokumentation auch keine Betriebsanleitung für selbige entdeckt. Mit Derby als Grundlage bleibt mir da zwar vieles davon erspart, aber wenn ich mir Derby so ansehe, sieht das doch sehr nach Handwerkelei aus, das ist immerhin das erste Apache Projekt, da ist das nämlich gelandet, das auf den Einsatz von log4j verzichtet und nicht einmal im Ansatz einen Ersatz dafür einsetzt, also keinen Debug Mode hat. Ich werde mich erstmal noch ein wenig mit dem ARDPGM beschäftigen und vielleicht bekommt mein Projekt Gleiberg noch eine Fortsetzung, die aber auch Hammerfest heißen könnte, aber das sind gleich zwei andere Geschichten und aufgeben möchte ich möglichst keins von Beiden.

zur Homepage