Impedence Mismatch, OOP, Funktionale Programmierung

Impedence Mismatch, Objektorientierung und funktionale Programmierung

Ich habe hier schon einige Artikel von Vladimir Khorikov verlinkt und es werden ständig mehr. Er schreibt aber auch wirklich gute Sachen! 🙂 Dieses Mal geht es um den Impedence Mismatch zwischen objektorientierter Programmierung und relationalen Datenbanken: OOP, FP, and object-relational impedance mismatch.

Auch wenn sich das Thema vielleicht zunächst etwas hochtrabend anhört, erklärt Vladimir zu Beginn des Artikels erst einmal das Grundproblem: Objektorientierung und relationale Datenbanken passen einfach nicht gut zusammen. Objektreferenzen lassen sich nicht gut mit Fremdschlüsselbeziehungen abbilden und umgekehrt. Er verlinkt dazu selbst auch den – übrigens sehr empfehlenswerten – Artikel The Vietnam of Computer Science von Ted Neward. Darin werden ORM-Frameworks und -Tools freundlich ausgedrückt als nicht gerade die beste Erfindung der Informatik beschrieben.

Der Artikel erklärt aber auch alle zentralen Probleme mit einem Mapping zwischen den beiden Welten anschaulich und gut verständlich. Und alles wird mit einfach zu verstehenden Code-Beispielen illustriert.

  • Die bereits genannten Probleme beim Abbilden von Objektbeziehungen auf Fremdschlüsselbeziehungen.
  • Die fehlende Möglichkeit, Vererbungsbeziehungen in relationalen Datenbanken abzubilden.
  • Der ggfs. notwendige Aufbruch der Kapselung von Objekten bei der Abbildung auf Tabellen.

Der interessante Teil kommt allerdings noch danach: Vladimir zeigt, dass die funktionale Programmierung viel besser zur relationalen Datenbankwelt passt und die OOP sinnvoller mit dokumentenorientierten Datenbanken zusammenarbeitet. Beispiele von SQL- verglichen mit F#-Code runden diese Empfehlung ab.

Ich empfehle allen (angehenden) Anwendungsentwicklern die Lektüre dieses umfangreichen Artikels, der eines der Grundprobleme moderner „Enterprise“-Entwicklung verdeutlicht.


Welche Erfahrungen hast du mit ORMs gemacht? Stand dir der Impedence Mismatch auch schon einmal im Weg? Oder konntest du bislang alle deine Anfoderungen umsetzen?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax