Analyse und Lösungen für den Object-relational Impedance-Mismatch als EBook

eingereicht bei Prof. Dott.-Ing. Roberto V. Zicari Datenbanken und Informationssysteme am 13. Dezember 2010. Benotet: sehr gut


Abstract

Die objektorientierte Programmierung ist in der heutigen Softwareentwicklung nicht mehr wegzudenken. Auf Sprachelemente wie Kapselung, Polymorphie und Vererbung kann in modernem Softwaredesign nur schwer verzichtet werden. Ebenso sind relationale Datenbanken noch immer die erste Wahl für die persistente Speicherung von Daten. Sie skalieren für große Datenmengen, sind sicher, verwalten Transaktionen zwischen Benutzern und besitzen den größten Marktanteil von allen Datenbanken.
Die Sammlung der Probleme die auftreten, wenn man objektorientierte Datenstrukturen in einer relationalen Datenbank speichern möchte, werden als Object-relational Impedance Mismatch bezeichnet.
In dieser Arbeit werden die entstehenden Probleme, die durch den Unterschied zwischen den beiden Paradigmen entstehen, erläutert und bisher gefundene Lösungen für den Impedance Mismatch vorgestellt. Es wird gezeigt, warum es keine einzige perfekte Lösung für den IM geben kann, weshalb die bisher in der Industrie entwickelten Persistenzmechanismen in vielen individuellen Bereichen Anwendung finden.
Die Strategien werden kritisch betrachtet und eigene Verbesserungen und Konzepte ausgearbeitet, die eine Basis für ein weiteres Framework für Webapplikationen legen. Die Effizienz dieser verbesserten Konzepte wird durch einen Vergleich mit ähnlichen Produkten untersucht.


Inhaltsverzeichnis

  1. Die Theorie des Object-relational Impedance Mismatch
    1. Einführung
      • 1.1 Der Aufbau dieser Arbeit
    2. Die Kernprobleme
    3. Lösungen
      • 3.1 Ersetzen der Datenbank
      • 3.2 Object-relational Mapper
    4. Object-relational Mapping
      • 4.1 Speichern des Zustandes eines Objektes
      • 4.2 Speichern von Klassenhierarchien
        1. 4.2.1 Horizontales Mapping
        2. 4.2.2 Vertikales Mapping
        3. 4.2.3 Filter-Mapping
        4. 4.2.4 Generelles Mapping
      • 4.3 Speichern von Beziehungen zwischen Objekten
      • 4.4 Laden und Marshalling von Objekten
      • 4.5 Vertiefung: Object Loading
    5. Frameworks
      • 5.1 Übersicht
      • 5.2 Hibernate und Vererbung
      • 5.3 Abfragesprachen
      • 5.4 Beziehungen zwischen Objekten
      • 5.5 Object Loading
      • 5.6 Abbildung von Klassen und Attributen
      • 5.7 Zusammenfassung
    6. Fazit
      • 6.1 Gibt es eine perfekte Lösung?
  2. Lösungsansätze am Beispiel-Framework PSCORM
    1. Einführung
      • 7.1 Aufbau dieses Teils
      • 7.2 Besonderheiten von PHP
    2. Konzepte und Implementierung
      • 8.1 Dynamischer Code
      • 8.2 Metainformationen
      • 8.3 Cache
      • 8.4 Datenbankabstraktion
      • 8.5 Abbildung von Klassen und Attributen
      • 8.6 Abbildung von Vererbung
      • 8.7 Beziehungen zwischen Objekten
      • 8.8 Abfragesprache
      • 8.9 Object Loading
    3. Evaluation
      • 9.1 Konfiguration
      • 9.2 Test 1
      • 9.3 Test 2
      • 9.4 Ergebnisse
    4. Zusammenfassung
    1. Beispiel Datenbank-Schema
    2. Quelltext der Evaluation
    3. Implementierungsübersicht PSCORM
  3. Literaturverzeichnis