Delphi-PRAXiS
Seite 1 von 3  1 23   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbank Frameworks... Welche Vorteile bieten diese? (https://www.delphipraxis.net/203223-datenbank-frameworks-welche-vorteile-bieten-diese.html)

juergen 25. Jan 2020 17:09

Datenbank: MSSQL • Version: egal • Zugriff über: FireDac

Datenbank Frameworks... Welche Vorteile bieten diese?
 
Hallo,

hier in der DP gibt es ja einige Hinweise zu z.B. TMS Aurelius-, Spring4D oder neu auch DevExpress- Frameworks.
Bis jetzt wende ich bei Verwendung von Datenbanken Querys, Datasets und auch gern Clientdatasets an und habe da eigentlich nichts vermisst.

Ich wäre da interessiert mich weiter zu bilden. Bevor ich das tue wollte ich hier nachfragen.

Welche Vorteile bieten diese Frameworks überhaupt?

Vielen Dank für hilfreiche, einfache Erläuterungen!

Luckie 26. Jan 2020 02:38

AW: Datenbank Frameworks... Welche Vorteile bieten diese?
 
Frameworks vereinfachen die zugrundeliegenden API Aufrufe, fügen zusätzliche Funktionalität hinzu, die, wenn man sie benötigt, nicht selbst implementieren muss. Vergleiche mal die VCL und die Windows API. Die VCL vereinfacht die Verwendung der Windows API wesentlich.

Nachteile sind unteranderem ein gewisser Overhead, den man für diese Bequemlichkeit in Kauf nehmen muss. Auf das Beheben von Bugs und Sicherheitslücken hat man schlechteren Einfluss, da es nicht der eigene Code ist, bzw. man den Code gar nicht besitzt.

Du musst also letztendlich für dich selbst entscheiden, ob der Einsatz von Frameworks für dich sinnvoll ist oder nicht. Willst du nur die Konfiguration eines Programms in einer Datenbank speichern, kommst du wohl ohne ein Framework aus. Willst du ein Lagerwirtschaftssystem entwickeln, nimmt dir das Framework viel Arbeit hat.

TurboMagic 26. Jan 2020 09:04

AW: Datenbank Frameworks... Welche Vorteile bieten diese?
 
Auch FireDAC ist ein Datenbank Framework!
Es vereinheitlicht, soweit möglich, viele Zugriffe auf unterschiedliche Datenbanken und vereinfacht einige Dinge im Umgang mit diesen.

TigerLilly 26. Jan 2020 09:11

AW: Datenbank Frameworks... Welche Vorteile bieten diese?
 
Ja, da kann ich wohl etwas beitragen:
Ich habe den Umgang mit Datenbanken beginnend bei dBase/Clipper, Paradox gelernt und dann weiter zu MSSQL, mySQL und ORACLE. Da waren Delphi-seiteig TQuerys etc angesagt und das habe ich richtig gut verinnerlicht. :- )

Wir haben eine große Legacy-Anwendung, die darauf aufbaut. Die muss aber jetzt modernisiert werden + die Frage war, wie machen? Neben vielen anderen Entscheidung musste auch die der Datenanbindung gelöst werden. Ich hatte zwischenzeitlich ein paar JAVA Projekte + habe dort Hibernate etc schätzen gelernt + mittlerweile gibt es ähnliches ja für Delphi auch. Nach einigem Herumprobieren und recherchieren bin ich letztendlich zu Aurelius von TMS gekommen, wobei es andere Produkte gibt, die auch gut sind.

Die Entscheidung für TMS fiel wegen dieser Punkte:
- das ist ein mit modernen Techniken komplett neu entwickeltes Tool und enthält keine Altlasten oder Tribute an alte Delphi Versionen
- der Support von TMS ist ausgesprochen gut
- ich habe wahrscheinlich über Jahr beobachtet, wie Aurelius gereift ist und Anforderungen aus der Praxis aufgenommen wurden.
- Transaktionen werden unterstützt und Objektversionierung

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.

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
- SQL ist Text und als solcher leicht persistierbar, bei einem ORM geht das nicht so leicht

Aber das sind lösbare Probleme. 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.

Ach ja: Das kommt auch immer: Performance ist kein Entscheidungskriterium pro/contra ORM. Der Overhead, den das ORM einführt ist zu vernachlässigen. ORM heißt Datenbank und da liegen Performanceprobleme ganz woanders.

Lemmy 26. Jan 2020 11:31

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

Zitat von TigerLilly (Beitrag 1456006)

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.

Zitat:

Zitat von TigerLilly (Beitrag 1456006)
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....? ;-)


Zitat:

Zitat von TigerLilly (Beitrag 1456006)
- 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?

jobo 26. Jan 2020 12:12

AW: Datenbank Frameworks... Welche Vorteile bieten diese?
 
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.

jobo 26. Jan 2020 12:19

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

Zitat von Lemmy (Beitrag 1456008)
Zitat:

Zitat von TigerLilly (Beitrag 1456006)
- 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)

Uwe Raabe 26. Jan 2020 12:28

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

Zitat von jobo (Beitrag 1456011)
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.

TigerLilly 26. Jan 2020 14:27

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

Zitat von Lemmy (Beitrag 1456008)
Zitat:

Zitat von TigerLilly (Beitrag 1456006)
- 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.

TigerLilly 26. Jan 2020 14:30

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

Zitat von Uwe Raabe (Beitrag 1456015)
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:24 Uhr.
Seite 1 von 3  1 23   

Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf