AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbank Frameworks... Welche Vorteile bieten diese?
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbank Frameworks... Welche Vorteile bieten diese?

Ein Thema von juergen · begonnen am 25. Jan 2020 · letzter Beitrag vom 29. Jan 2020
Antwort Antwort
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.403 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Datenbank Frameworks... Welche Vorteile bieten diese?

  Alt 26. Jan 2020, 11:31

Was (für mich) für ein ORM/DB Framework spricht:
- Datenbankunabhängigkeit - Dein ORM schiebt zwischen die DB und die Anwendung eine Schicht und dein Code funktioniert gegen mySQL und SQLite ohne Änderung.
- Du klebst beim Programmieren nicht mehr an Tabellen und Attributen, sondern arbeitest mit Klassen und musst dir über die Datenbank keine Gedanken machen
- Es gibt kein Herumgefrickle mit SQL Statements mehr
- Durch die Klassen erhälts du ein viel höheres maß an Testbarkeit und geringerer Abhängigkeiten
- Du entwickelst eine anderen Programmierstil, der nicht mehr an die Datenbank denkt.

Die Datenbankunabhängigkeit ist für mich (aktuell) kein Thema, der Rest kann aber nicht oft genug betont werden:
Wenn Du ein Stück Code schreibst, das ein Problem lösen soll, dann hast Du unterschiedliche Schichten:
* fachliche Logik (was soll überhaupt gemacht werden)
* Sprachlogik (wie funktionieren Schleifen, Bedingungen)
* GUI
* Datenbank (Abfrage, Speicher, Indizes...)

Mit einem ORM ist der dritte Punkt oben weggekapselt. Und wenn Du es dann noch schaffst, deine Logik testbar in Klassen zu verpacken, kannst Du die GUI aus dem aktuellen Problem streichen und das ganze ggf. auch am Ende mit Unittests absichern, d.h. Du musst nicht mehr selbst testen, sondern lässt testen.

Das ORM löst aber nicht alle Probleme:
- zumindest bei Aurelius gibt es (noch) keine Bulk-Operationen
- destruktive DDLs (Felder löschen) sind nicht möglich
Gegenfrage: sind das Aufgaben des ORM? Wenn ja, und das ORM bietet keine solchen Möglichkeiten, warum das ORM nicht erweitern? Und wenn nein: Warum dann nicht Klassen schaffen, die genau das machen, aber eben die Komplexität der SQL wiederum vor dem Rest verbergen....?


- SQL ist Text und als solcher leicht persistierbar, bei einem ORM geht das nicht so leicht
Den Punkt verstehe ich nicht wirklich. Warum soll ich SQL persistieren? Und wohin?
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#2

AW: Datenbank Frameworks... Welche Vorteile bieten diese?

  Alt 26. Jan 2020, 12:12
Anhand der Antworten wird schon deutlich, dass ein Framework, auch wenn es ein Datenbank Framework genannt wird, ganz unterschiedliche Funktionen realisieren kann.

Hier müsste man sich dann fragen, was man (davon) braucht.

Ohne es jetzt groß aufzuhängen, ich finde ein Blick in eine DB aus einem Persistenzsystem immer mal wieder gerne gruselig. Es liegt auf der Hand, dass die Abstraktion der DB Fähigkeiten erstmal bedeutet, dass der kleinste gemeinsame Nenner genutzt wird.
Was mich zu dem anderen Punkt bringt: Performance dürfte hier von Fall zu Fall schon eine (unangenehme) Rolle spielen. Meist sind aber die Projekte so klein, dass eine DB das alles einfach wegatmet und man ruhig schlampig mit ihr umgehen kann.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.785 Beiträge
 
Delphi 12 Athens
 
#3

AW: Datenbank Frameworks... Welche Vorteile bieten diese?

  Alt 26. Jan 2020, 12:28
Performance dürfte hier von Fall zu Fall schon eine (unangenehme) Rolle spielen. Meist sind aber die Projekte so klein, dass eine DB das alles einfach wegatmet und man ruhig schlampig mit ihr umgehen kann.
Ich erinnere mich da an ein Projekt, bei dem damals noch die erste Version von Aurelius zum Einsatz kam. Das funktionierte alles ganz wunderbar bis zu dem Zeitpunkt, wo die Datenbank vom lokalen Netz in Azure migriert wurde. Das Erzeugen einer (DB-)Objektliste hatte dann gleich alle Objekte aus der DB geladen, mitsamt aller Child-Objekte (Master-Detail) in der kompletten Hierarchie-Tiefe. Die ganzen Optimierungen, die das DAC in so einem Fall bereitstellt, waren damit hinfällig. Das Programm öffnete sich erst nach mehreren Minuten.

Aber das hat TMS dann ja später erfolgreich in den Griff bekommen. Leider konnte ich darauf damals nicht warten und musste es doch wieder auf die alte Tour machen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von TigerLilly
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.251 Beiträge
 
Delphi 12 Athens
 
#4

AW: Datenbank Frameworks... Welche Vorteile bieten diese?

  Alt 26. Jan 2020, 14:30
Ich erinnere mich da an ein Projekt, bei dem damals noch die erste Version von Aurelius zum Einsatz kam. Das funktionierte alles ganz wunderbar bis zu dem Zeitpunkt, wo die Datenbank vom lokalen Netz in Azure migriert wurde. Das Erzeugen einer (DB-)Objektliste hatte dann gleich alle Objekte aus der DB geladen, mitsamt aller Child-Objekte (Master-Detail) in der kompletten Hierarchie-Tiefe. Die ganzen Optimierungen, die das DAC in so einem Fall bereitstellt, waren damit hinfällig. Das Programm öffnete sich erst nach mehreren Minuten.

Aber das hat TMS dann ja später erfolgreich in den Griff bekommen. Leider konnte ich darauf damals nicht warten und musste es doch wieder auf die alte Tour machen.
Ja, das stimmt - Stichwort LazyLoading.
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.176 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Datenbank Frameworks... Welche Vorteile bieten diese?

  Alt 26. Jan 2020, 20:58
Hallo,

danke an alle für die Hinweise!
Ich habe mir gerade mal ein Video von Aurelius angeschaut https://youtu.be/fIOntD73S8k
Das hat mir schon mal die Augen geöffnet. Sehr interessant.
Ich denke TigerLilly hat es gut beschrieben:
Die Lernkurve ist allerdings auch beachtlich, für mich hat es eine Weile gedauert, das Konzept zu verinnerlichen. An Stelle dass du mit SQL herumtust, baust du halt ewiglange Delphizeilen zusammen. Aber hier hast du die Fehlerprüfung halt überwiegend schon zur Compiletime + nicht erst zur Laufzeit. Ich habe TQuerys echt verinnerlicht + das Konzept wegbekommen dauert. Aber je länger ich mit Aurelius arbeite und Dinge ausprobiere, desto eleganter wird alles.
Da ich DevExpress schon habe werde ich mich nun erst einmal näher mit dem ExpressEntityMapping Framework beschäftigen...

Allen einen guten Start in die neue Woche!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
641 Beiträge
 
Delphi XE6 Enterprise
 
#6

AW: Datenbank Frameworks... Welche Vorteile bieten diese?

  Alt 27. Jan 2020, 17:40
Was ich mich immer gefragt habe - wenn es kein SQL mehr gibt, wie regelt man eigentlich statistische Asuwertungen und das Reporting, mal von ganz einfachen Listen abgesehen? Objektlisten laden und dann sozusagen von Hand aufsummieren, wie wir das ganz früher bei dBase gemacht haben? Also Auswertung auf dem Client statt auf dem Server?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.882 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Datenbank Frameworks... Welche Vorteile bieten diese?

  Alt 28. Jan 2020, 07:07
Die eigentlich Speicherung erfolgt ja in einer Datenbank; und auf diese kann man natürlich auch SQL-Abfragen absetzen. Die ORM-Frameworks bieten aber wiederum auch an, Objektlisten wieder auf DataSets zu Mappen.
Markus Kinzler
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#8

AW: Datenbank Frameworks... Welche Vorteile bieten diese?

  Alt 26. Jan 2020, 12:19
- SQL ist Text und als solcher leicht persistierbar, bei einem ORM geht das nicht so leicht
Den Punkt verstehe ich nicht wirklich. Warum soll ich SQL persistieren? Und wohin?
Könnte mir vorstellen, dass es hier um die immanente Logik geht, die in einem SQL Statement steckt / stecken kann und die zwangsläufig (oder zum Glück) sehr kompakte Logik "Darstellungen" liefert.
In einem Objekt orientierten Programm zergliedern sich die Zusammenhänge in Klassenhierarchien (wovon man selten mehr als 2 Ebenen am Stück sieht) und komplexe Relationen gehen im Code unter. (Vielleicht sehe ich das als klassischer SQL Entwickler aber auch einseitig)
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von TigerLilly
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.251 Beiträge
 
Delphi 12 Athens
 
#9

AW: Datenbank Frameworks... Welche Vorteile bieten diese?

  Alt 26. Jan 2020, 14:27
- SQL ist Text und als solcher leicht persistierbar, bei einem ORM geht das nicht so leicht
Den Punkt verstehe ich nicht wirklich. Warum soll ich SQL persistieren? Und wohin?
Naja, man kann zB für eine Suchmaske komplexe WHERE-Bedingungen vorformuliert in einer Tabelle ablegen und der User wählt dann aus, was er braucht. Oder du bereitest irgendwelche SQL-Statements als Abfragen vor. etc etc.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz