24.10.05

Objekt-Orientierte Datenbanken /// Java vs. C

Objekt-orientierte Datenbanken vs systemorientierte Datenbanken.

Mathematiker werden sich mit den Letzteren spontan identifizieren. Systemorientierte DB's funktionieren wie logische, mathematische Formeln - Werte werden durch sie gejagt, und mit Wenn-Dann Schaltstellen {if then else} hierher oder dortin verwiesen. Heraus kommt dann der Output.

Objekt-orientiert ist geeigneter, Handlungen von Menschen aus dem wirklichen Leben abzubilden, ohne dass Entwickler eine nahezu unendliche Wenn-Dann Verästelung festschreiben müssten.

Soll eine Datenbank also Vorgehensweisen so, wie sie von Menschen durchgeführt werden, abbilden, speichern (mapping / capturing real life processes), so können diese Prozesse und Handlungen, wenn sie etwa einander bedingen, als Parent-Child, d.h. als Eltern-Kind Objekt dargestellt werden.
Konkret: die Parent-Handlung muss stattfinden bevor die Child-Action erfolgen kann. Das Parent-Objekt berichtet an das Child-Objekt, was geschehen /was zu tun ist.

Es gibt aber auch Aktionen, die nicht von anderen Abläufen kausal v abhängig sind(im rellen Leben wie in der DB), aber andere Objekte irgendwann im Ablauf tangieren können. Hier wird ein Parent-Objekt ein anderes Parent-Objekt, das sich auf gleicher hierarchischer Ebene befindet, benachrichtigen lassen. Sogenannte Event-Listener fungieren zwischen diesen Objekten als Nachrichtenüberbringer.

Anstelle von Schalt-Instanzen, mittels derer Wenn-Dann-Abfragen stattfinden,
gibt es jeweils ein Bündel von Protokollen (Interface genannt), mittels dessen sich Objekte unterhalten, gegenseiitig Befehle geben, ihre Dateninformation sichtbar zu Weiterberarbeitung machen, oder auch verbergen können. "Verbergen Können" vermindert die Komplexität und beugt Fehl-"Entscheidungen" vor.

Die Komplexität ist also v e r t e i l t, dezentralisiert. Mit dieser Methode kann eine größere Fülle von Handlungsabläufen vorgesehen werden, ohne dass diese im Einzelnen festgeschrieben werden müsste wie etwa bei C. Es ist vielleicht eher umgekehrt als in C - die Vielzahl möglicher Abläufe muss eingeschränkt werden, durch restriktive Protokolle - sonst sind den "Handlungsmöglichkeiten" zwischen Objekten keine Grenzen gesetzt.

Software-Ingenieure entwerfen und entwickeln solche DB's in Java. Solche Datenbanken sind zwar langsamer als in C programmierte, welche für Echtzeit-Prozesse (Weltraumfahrt)benötigt werden.

Für menschliche Handhabe ist die Geschwindigkeit von Java aber gut.

In Java zu entwickeln, ist alles andere als kinderleicht. Grundsätzlich, wenn professionell ausgeführt, sind Java DB's weniger störanfällig als C-programmierte.

Und hier geht es noch einen Schritt weiter, im Nachdenken über Anwendungen, die menschliche Handlungen abbilden bzw. unterstützen sollen. Wie hieß es mal bei Apple?
Think different.

GS 25 Okt 2005