Diplomarbeit, 2010
86 Seiten, Note: 1,3
1. Einfuhrung
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
4.2.1 Horizontales Mapping
4.2.2 Vertikales Mapping
4.2.3 Filter-Mapping
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?
7. Einfuhrung
7.1 Aufbau dieses Teils
7.2 Besonderheiten von PHP
8. 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
9. Evaluation
9.1 Konfiguration
9.2 Test 1
9.3 Test 2
9.4 Ergebnisse
10. Zusammenfassung
Die Arbeit analysiert die Problematik des Object-relational Impedance Mismatch, bei dem objektorientierte Programmierparadigmen auf relationale Datenmodelle treffen. Ziel ist es, die entstehenden Probleme zu erläutern, bestehende Lösungsansätze zu bewerten und ein eigenes Framework in PHP zur effizienten Überbrückung dieser Diskrepanz zu entwickeln und zu evaluieren.
4.5 Vertiefung: Object Loading
Bevor ich im nächsten Kapitel auf verschiedene konkrete Implementierungen eingehen werde, möchte ich zunächst ein Thema noch weiter vertiefen: Das Laden von Objekten scheint nicht oft Inhalt von wissenschaftlichen Arbeiten zu sein, obwohl dort meiner Meinung nach die besten Optimierungen bezüglich Performanz möglich sind. Beginnt man eine ORM-Lösung naiv zu implementieren könnte man schnell zu folgender Struktur kommen:
Jede Klasse, die persistent gemacht werden soll leitet eine Basisklasse ab, in der die Persistenzmechanismen als Methoden zur Verfügung stehen (save(), get(), delete()). Es gibt eine Methode get() mit dem Parameter OID, welche den verknüpften Datensatz aus der Datenbank lädt (Verbindung herstellen, SQL absetzen, Daten auslesen, init() aufrufen). Es gibt eine weitere Methode init(), die die Werte aus dem Ergebnis der Abfrage von get() in die Attribute des Objektes überführt. Die Methode init() ordnet also den Attributen eine Zeile des Abfrageergebnisses zu.
Diese Lösung scheint erst einmal sehr simpel und funktional zu sein. Die Klassen, die persistent gemacht werden sollen (Entity-Klassen), müssen die Basisklasse nur ableiten und init() so überschreiben, dass die speziellen Attribute der Klasse mit Daten gefüllt werden, sobald get() aufgerufen wird.
Einfuhrung: Definiert den Object-relational Impedance Mismatch und erläutert die Notwendigkeit, objektorientierte Modelle mit relationalen Datenbanken zu verbinden.
Die Kernprobleme: Identifiziert die Herausforderungen beim Speichern von Klassenstrukturen, Objektzuständen, Beziehungen, Vererbungshierarchien und der effizienten Abfrage.
Lösungen: Untersucht das Ersetzen relationaler Datenbanken durch ODBMS sowie das Konzept des Object-relational Mappings als klassische Softwarelösung.
Object-relational Mapping: Detaillierte Darstellung von Strategien zur Abbildung von Objekten, Hierarchien, Beziehungen sowie Techniken zum Laden und Marshalling.
Frameworks: Gibt einen Überblick über bestehende Standards und Frameworks wie Hibernate, TopLink, Doctrine und Kohana und bewertet deren Flexibilität.
Fazit: Reflektiert über die Abwägung zwischen Abstraktion und Performanz bei der Lösungsfindung für den Impedance Mismatch.
Einfuhrung: Stellt das selbstentwickelte Framework PSCORM vor und beleuchtet spezifische Anforderungen an die Webentwicklung mit PHP.
Konzepte und Implementierung: Erläutert die Architektur von PSCORM, insbesondere den Einsatz von dynamischer Code-Generierung, Caching und Datenbankabstraktion.
Evaluation: Vergleicht die Performanz von PSCORM mit bestehenden Frameworks in Benchmarks zum Laden von Objekten.
Zusammenfassung: Fasst die Erkenntnisse über die Komplexität und die Tradeoffs beim Entwurf von ORM-Lösungen abschließend zusammen.
Object-relational Impedance Mismatch, Object-relational Mapping, ORM, Persistenz, Objektorientierte Programmierung, Relationals Datenbankmodell, Performance-Optimierung, Lazy Loading, Prefetching, Object-Cache, PHP-Framework, PSCORM, Hibernate, Doctrine, Softwarearchitektur
Die Diplomarbeit befasst sich mit dem sogenannten Object-relational Impedance Mismatch, also der Unverträglichkeit zwischen objektorientierten Programmierparadigmen und relationalen Datenbankschemas in der modernen Softwareentwicklung.
Zentrale Themen sind die Analyse der auftretenden Diskrepanzen bei der Datenhaltung, der Vergleich verschiedener Mapping-Strategien sowie die Entwicklung und Evaluation performanter Persistenzlösungen für PHP-Applikationen.
Das Ziel ist es, die Probleme beim Mapping zwischen Objekten und Tabellen zu verstehen und Strategien zu entwickeln, die eine hohe Performanz trotz der notwendigen Abstraktionsebenen ermöglichen.
Die Arbeit kombiniert eine fundierte theoretische Analyse des Impedance Mismatch mit der praktischen Konzeption und Implementierung eines Frameworks (PSCORM), dessen Effizienz abschließend in einer Benchmarking-Studie geprüft wird.
Der Hauptteil umfasst die detaillierte Vorstellung von Mapping-Techniken für Klassenhierarchien und Beziehungen sowie eine Evaluierung von Frameworks wie Hibernate, TopLink und Doctrine, gefolgt von der Implementierung von PSCORM.
Die wichtigsten Begriffe sind Object-relational Impedance Mismatch, Mapping, Performanz, Lazy Loading, Prefetching und persistente Datenspeicherung.
Da PHP als Skriptsprache bei jedem Request initialisiert wird, sind klassische, speicherintensive ORM-Ansätze weniger performant; die Arbeit zeigt, wie durch dynamische Code-Generierung in PSCORM ein effizienterer Weg beschritten werden kann.
PSCORM nutzt eine zweistufige Ebenen-Architektur, bei der zur "Entwicklungszeit" Code generiert wird, der zur "Laufzeit" die unnötigen Overhead-Kosten für Interpretation und Abstraktion minimiert.
Das Laden von Objekten über viele kleine Einzelabfragen (Roundtrips) ist oft der Flaschenhals; die Arbeit demonstriert, wie Prefetching und intelligentes Caching die Anzahl der Datenbankzugriffe drastisch reduzieren können.
Der GRIN Verlag hat sich seit 1998 auf die Veröffentlichung akademischer eBooks und Bücher spezialisiert. Der GRIN Verlag steht damit als erstes Unternehmen für User Generated Quality Content. Die Verlagsseiten GRIN.com, Hausarbeiten.de und Diplomarbeiten24 bieten für Hochschullehrer, Absolventen und Studenten die ideale Plattform, wissenschaftliche Texte wie Hausarbeiten, Referate, Bachelorarbeiten, Masterarbeiten, Diplomarbeiten, Dissertationen und wissenschaftliche Aufsätze einem breiten Publikum zu präsentieren.
Kostenfreie Veröffentlichung: Hausarbeit, Bachelorarbeit, Diplomarbeit, Dissertation, Masterarbeit, Interpretation oder Referat jetzt veröffentlichen!

