2009-07-24 1 views
0

Ich wundere mich über den wirklichen Vorteil der Ausführung von DML-Befehlen (Einfügungen, Aktualisierungen, Löschungen) in der Datenbank über gespeicherte Prozeduren für einfache CRUD-Anwendungen. Welchen Nutzen bringt das, wenn Sie nur ein generisches Verfahren im Frontend verwenden, das die dml-Befehle generiert?DML generiert am Front-End vs. Insert - Update - Löschen von gespeicherten Prozeduren durchgeführt

Vielen Dank im Voraus.

+0

Können Sie ein Beispiel für Ihre generische Prozedur angeben? –

+0

Im Iterieren durch ein Formular in VFP und das Abrufen eines Eigenschaftswerts, der mir sagt, welches Feld in den Feldlistenteil des Einfügebefehls eingefügt werden soll, um ein Beispiel zu nennen. Das Gleiche gilt für die Wertzuweisung für den Wertelistenteil. – Enmanuel

Antwort

1

Leistungsmäßig werden Sie wahrscheinlich keinen Vorteil sehen. Ich denke, es geht mehr um die Sicherheit der Datenbank.

Der Vorteil gespeicherter Prozeduren ist in jedem Fall, dass der DBA den Sicherheitszugriff auf die Daten unterschiedlich steuern kann. Es ist oft ein Präferenzanruf durch den DBA. Wenn Sie den CRUD-Zugriff auf den Server im Server verwenden, steuern sie den 100% igen Zugriff auf den Server. Ihr Code muss ihre gespeicherte "API" erfüllen.

Wenn Sie die Logik in den Visual FoxPro-Code über eine Remoteansicht, Cursoradapter oder SQL Passthrough SQLExec() einfügen, bedeutet dies, dass Sie 100% der Codekontrolle haben und der DBA Ihnen Zugriff auf die Datenbankkomponenten gewähren muss oder über die Anwendungsrolle, die Ihr Code für die Verbindung verwendet. Ihr Code könnte etwas flexibler sein, wenn Sie die CRUD SQL-Anweisung im laufenden Betrieb erstellen. Der gespeicherte Proc muss flexible Parameter verarbeiten, um die Anweisungen generisch zu erstellen.

Rick Schummer

1

Visual Foxpro? Bei einzelnen Datensatzaktualisierungen bezweifle ich, dass SP einen Leistungsvorteil bringt. Der Aufwand, sie zu halten, übertrifft jeden marginalen Leistungsgewinn, den Sie bekommen könnten.

Die Gurus für Stored Procedures können sich Gedanken über weitere Vorteile neben der Leistung machen.

+0

Ok. Aber ich denke, dass marginale Leistungssteigerung nichts mit der Tatsache zu tun hat, dass diese eine Visual FoxPro App ist ... ich meine, es wäre die gleiche mit jeder anderen Frontend-Anwendung, also warum reden alle über die "Regel" von Erstellen von SPs für jeden DML-Befehl ??? – Enmanuel

+0

Es gibt keine Regel, es gibt nur das, was am besten für Ihre Anwendung funktioniert. Es gibt viele Geschäfte, die diesem "Regel" folgen und sehr gut damit umgehen. Muss nicht sein. –

+0

Sie haben Recht ... es hat nichts speziell mit FoxPro zu tun. –

1

Einer der Hauptvorteile ist die Zugriffskontrolle. Die Anwendung verfügt nur über EXECUTE-Berechtigung und keine direkte Datenzugriffsberechtigung. Auf diese Weise kann der Administrator die Prozeduren überprüfen und sicherstellen, dass sie geeignete Zugriffspfade (dh Indizes) verwenden. Wenn die Anwendung direkten Zugriff auf die Tabellen hat, schreiben die Entwickler schlechtes SQL und bringen den Server zum Absturz.

1

Für gespeicherte Procs:

  • Remove SQL-Injection-Risiken
  • Encapsulation (Sicherheit, behandeln sie wie Methoden)
  • zulassen Client-Code (gleiche API-Datenbank) zu ändern
  • Gehen Sie mit erhöhter Komplexität um (z. B. Einfügen von Eltern und Kind in eine SQL-seitige Transaktion)
  • Transaktionen einfacher verwalten
+0

Danke an alle.Ich habe jetzt eine bessere Perspektive. – Enmanuel

Verwandte Themen