Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   prozedural oder per OOP auf Datenbank zugreifen ? (https://www.delphipraxis.net/53898-prozedural-oder-per-oop-auf-datenbank-zugreifen.html)

Hansa 24. Sep 2005 21:30

Datenbank: FB 1.5 • Zugriff über: FIBplus

prozedural oder per OOP auf Datenbank zugreifen ?
 
Hi,

ich mache momentan den Zugriff auf die DB sowohl über Prozeduren, als auch mit Klassen (testweise). In Delphi. Für den eigentlichen DB-Zugriff sind stored Procedures da. Diiese brauchen aber Parameter und davon teilweise recht viele.

Nachteil Prozedur :

elend lange Paramterliste, sehr lange Zeilen, nicht flexibel, Sonderfälle unübersichtlich zu behandeln (2. ähnliche Prozedur oder noch einen Parameter mehr) und schlechter wartbar bei Änderungen

Vorteil Prozedur :

vergesse ich einen Parameter, dann werde ich darauf von Delphi gewarnt
brauche mich um Create etc. nicht zu kümmern


Nachteil Klasse :

es ist schwieriger sicherzustellen, daß alle benötigten Werte auch richtig initialisiert werden, Create und free muß selber verwaltet werden (free könnte zu früh zu spät kommen wegen falsch gesetzem Block). Fehlermeldungen auch erst zur Laufzeit und deshalb schlechter zu lokalisieren.

Vorteil Klasse :

Vererbung möglich, ist dosierter einzusetzen, weil ich die Parameter meistens nicht alle zur selben Zeit brauche. Zwar mehr Zeilen, aber dafür kleine.


Tja, die Frage ist eben was besser ist ? Wer machts wie ? :mrgreen: Bei mir gehts um ca. 50 Tables, 100 Trigger und im Endausbau so 120 SPs.

tigerman33 26. Sep 2005 08:44

Re: prozedural oder per OOP auf Datenbank zugreifen ?
 
Könntest du nicht ähnliche Parameter in Records zusammenfassen, dann den Prozeduren anstelle der Parameter die Parameterrecords übergeben? Ich weiß jetzt gerade nicht ob Delphi bei Records auch Standardwerte erlaubt, wenn nicht musst du halt mit Zeigern arbeiten.

alzaimar 26. Sep 2005 09:42

Re: prozedural oder per OOP auf Datenbank zugreifen ?
 
Ich versteh nicht ganz, was Du im Zusammenhang mit FB und Stored Procedures unter Klassen und Prozeduren verstehst, aber ich kann ja mal aus dem Nähkästchen plaudern:
MSSQL, 100 Tabellen, ca 70 Stored Procedures.

Ich habe die Funktionalität der Mittelschicht ('Geschäftsregeln') peu a peu in die Stored Procedures verlagert. Das hat sich so ergeben, weil ich sonst kaum in einer 24/7 Umgebung Anpassungen machen kann.

Das Problem der 1000 Parameter pro SP habe ich umgangen, zumal sich die Parameterliste zur Laufzeit ändern kann. Alle Stored Procedures, die mit der Mittelschicht (was davon übrig geblieben ist) kommunizieren sollen, haben genau einen Parameter: Ein XML-Record, bzw. eine proprietäre und kompaktere Variante. Damit muss ich die Mittelschicht nie mehr anfassen, nur weil ein Parameter hinzukommt. In den SP entpacke ich den XML-Record und arbeite dann weiter. Eventuell wird der REcord erweitert und als Output-Parameter zurückgeliefert. Den zusätzlichen Overhead kann ich verkraften. Auch weil die DB nicht am Anschlag operiert. Ausserdem ist Rechenpower günstig.

Nach 4 Jahren Dauereinsatz als Produktionsdatenerfasssung im 24/7 Betrieb einer grossen Fabrik lobpreise ich den Tag, an dem mir diese auf den ersten Blick ziemlich blöde Idee gekommen ist.

War das etwas Info für Dich?


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:43 Uhr.

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