- AutorIn
- B.Sc. Benjamin Uwe Killisch
- Titel
- Effiziente Behandlung von Daten mit rekursiven Beziehungen in ORM-Frameworks am Beispiel von Entity Framework Core
- Zitierfähige Url:
- https://nbn-resolving.org/urn:nbn:de:bsz:l189-qucosa2-833223
- Datum der Einreichung
- 30.09.2022
- Abstract (DE)
- ORM-Frameworks sind eine häufig genutzte Möglichkeit, die Unterschiede zwischen der objektorientierten Programmierung und der relationalen Datenspeicherung zu überbrücken. Gleichzeitig sind rekursive Beziehungen in vielen Datenmodellen vorhanden, um Hierarchien und andere baum- oder netzartigen Strukturen abzubilden. Diese Arbeit beschäftigt sich mit der Problemstellung, wie man Daten in rekursiven Beziehungen in einem ORM-Framework möglichst effizient aus der Datenbank laden kann. Zur Lösung des Problems werden zuerst fünf verschiedene Lösungsansätze theoretisch entwickelt, und anschließend in Entity Framework Core (EF Core) umgesetzt. Dies geschieht so, dass sich die entstandenen Implementierungen wie normale LINQ-Abfragen in EF Core nutzen lassen. Anschließend wurden die Lösungsansätze in verschiedenen Szenarien mit verschiedenen SQL-Dialekten getestet, gefolgt von einer Betrachtung der Testergebnisse nach den verschiedenen Test-Parametern. Diese Auswertung zeigt, dass Abfragen mit rekursiven allgemeinen Tabellenausdrücken und Abfragen mit KeyLoading in den meisten Fällen am effizientesten sind. Die anderen drei Ansätze sind entweder generell zu langsam oder nur in speziellen Situationen nutzbar. Die Auswertung zeigt auch, dass die Performance der verschiedenen Lösungsansätze immer von der Situation abhängig ist, besonders vom ge- nutzten SQL-Dialekt.
- Freie Schlagwörter (DE)
- ORM, Objekt-Relationale Abbildung, Rekursiv, Rekursive Beziehung, EF Core
- Den akademischen Grad verleihende / prüfende Institution
- Hochschule für Technik, Wirtschaft und Kultur Leipzig, Leipzig
- Version / Begutachtungsstatus
- angenommene Version / Postprint / Autorenversion
- URN Qucosa
- urn:nbn:de:bsz:l189-qucosa2-833223
- Veröffentlichungsdatum Qucosa
- 03.02.2023
- Dokumenttyp
- Bachelorarbeit
- Sprache des Dokumentes
- Deutsch
- Lizenz / Rechtehinweis
CC BY 4.0- Inhaltsverzeichnis
1 Einleitung 2 Rekursive Beziehungen in relationalen Datenbanken 2.1 Definition 2.2 Rekursive Abfragen durch allgemeine Tabellenausdrücke 3 Object-Relational Mapping und Entity Framework Core 3.1 Object Relational Impedance Mismatch 3.1.1 Konzepte der objektorientierten Programmierung 3.1.2 Konzepte von relationalen Datenbanken 3.1.3 Probleme durch Unterschiede zwischen den Konzepten 3.2 Überbrückung des Impedance Mismatch durch Object-Relational Mapping 3.2.1 ORM-Frameworks 3.2.2 Allgemeine Lösungsansätze 3.2.3 Zugehörige Daten laden 3.3 Entity Framework Core 3.3.1 Generierung des Datenbankschemas 3.3.2 Abfragen mit LINQ 3.3.3 C# Expressions 3.3.4 Ablauf einer Abfrage in Entity Framework Core 3.3.5 Der ChangeTracker 3.3.6 Abfragen mit RawSql 4 Rekursive Abfragen in ORM Frameworks 4.1 Allgemeine Lösungsansätze 4.1.1 Anforderungen an die Lösungsansätze 4.1.2 Grundlegende Überlegungen 4.1.3 Rekursive allgemeine Tabellenausdrücke 4.1.4 Benutzerdefinierte Funktionen 4.1.5 Laden mit Hilfseigenschaft 4.1.6 Vertikales und horizontales Aufrollen 4.1.7 KeyLoading 4.2 Umsetzung in Entity Framework Core 4.2.1 Anforderungen im Kontext von Entity Framework Core 4.2.2 Rekursive allgemeine Tabellenausdrücke 4.2.3 Laden mit Hilfseigenschaft 4.2.4 Vertikales Aufrollen 4.2.5 Horizontales Aufrollen 4.2.6 KeyLoading 5 Test der Lösungsansätze 5.1 Testverfahren 5.1.1 Performancemessung in C# 5.1.2 Messung der SQL-Abfragedauer 5.2 Test-Szenarien 5.3 Auswertung der Testergebnisse 5.3.1 Anmerkungen zu Messungen mit TotalProcessTime 5.3.2 Auswertung nach verschiedenen Kriterien 5.3.3 Allgemeine Auswertung 5.3.4 Auswertung nach Verzweigungen 5.3.5 Auswertung nach Rekursionstiefe 5.3.6 Auswertung nach Anzahl der Strukturen 5.3.7 Auswertung nach dem Laden zugehöriger Daten 5.3.8 Auswertung nach SQL-Dialekt 5.3.9 Auswertung nach Beziehungstyp 5.3.10 Auswertung nach Schlüsseltyp 6 Fazit A Messwerte