AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Stored Procedures für CRUD Operationen?
Thema durchsuchen
Ansicht
Themen-Optionen

Stored Procedures für CRUD Operationen?

Ein Thema von mquadrat · begonnen am 26. Jun 2007 · letzter Beitrag vom 26. Jun 2007
Antwort Antwort
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

Re: Stored Procedures für CRUD Operationen?

  Alt 26. Jun 2007, 13:01
Es geht dabei weniger um Performance, als um Wartbarkeit und Abstraktion:

Wenn man eine DML-Operation als SP kapselt, dann ist für die Applikation die Sache erledigt. Sie sagt dem DBMS 'Speicher das Zeugs mal'. WIE die DBMS das genau macht, ist egal. Und wie es heute bzw. morgen aussieht, kann der Applikation auch egal sein. Wenn später die einfache INSERT-Anweisung in EINE Tabelle mal aufgespaltet werden soll (vielleicht will man ja einen zweiten Server verwenden oder spaltet die Tabelle in mehrere auf), dann müsste man die Applikation aufbohren. Mit einer Stored Procedure hat man die Aufgaben schön getrennt, ändert nur die Prozedur und fettich.

Vielleicht will man -schwupps- mal eben ein Logging einbauen: Kein Problem, das geht sogar im laufenden Betrieb.
Oder mal eine Konsistensprüfung: No problem...

Natürlich erfolgt der Zugriff auf die Tabellen dann auch nicht direkt, sondern grundsätzlich und ausnahmslos über Views/Functions. Auch hier hat man dann eine Möglichkeit, die Tabelle später zu trennen, erweitern oder komplett zu verändern: So lange die Applikation immer die gleiche Datenstruktur 'sieht'...

Weiterhin braucht man keine 4 Prozeduren pro Tabelle: Wir verwenden pro (logischer) Tabelle genau eine Stored Procedure mit einem Parameter 'Action', der angibt, ob man einfügen, löschen und verändern möchte. Nach dem 'Action'-Parameter folgen dann die ganzen Parameter für die Operation.

Noch konsequenter ist es, die Parameter als XML o.ä. zu übergeben, denn dann muss man daran nie wieder etwas ändern.

Wir haben mal mit einer JSON-ähnlichen Parameterübergabe experimentiert. Leider lag der Overhead, der zum extrahieren der Parameter nötig war (unoptimierte SQL-Stringoperationen) bei ca. 10-15% der Gesamtperformance und das erschien uns damals zu hoch: Heute sind wir schlauer und würden das in Kauf nehmen, denn die Wartbarkeit steigt um das 10-50 fache (wenn man das überhaupt messen kann).

Also: Ich kann das nur empfehlen, denn es bietet eine sehr elegante und saubere Möglichkeit, das Verhalten im laufenden Betrieb zu verändern.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  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 12:53 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