4 Stimmen

Gespeicherte Prozeduren oder Inline-Abfragen?

Zunächst einmal gibt es eine Teilfrage aber das ist nicht genau das, worum ich bitte, also haben Sie Geduld mit mir und machen Sie weiter.

Meine Frage ist, nachdem ich gesehen habe, was SubSonic und die hervorragenden Videos von Rob Connery muss ich fragen: Sollen wir ein Tool wie dieses verwenden und Inline-Abfragen durchführen oder sollen wir die Abfragen machen mit einen Aufruf an die gespeicherte Prozedur?

Ich möchte nicht jede Arbeit von Rob (die ich denke, es ist erstaunlich) zu minimieren, aber ich möchte nur Ihre Meinung zu dieser Ursache, die ich brauche, um ein neues Projekt zu starten, und ich bin in der Mitte der Linie; soll ich SubSonic (oder andere wie Werkzeug, wie NHibernate) oder ich nur meine Methode, die immer eine gespeicherte Prozedur aufrufen, auch wenn es eine einfache als ist

Select this, that from myTable where myStuff = StackOverflow;

0voto

Tom H Punkte 45699

Werden Sie immer nur von dieser einen Anwendung aus auf Ihre Datenbank zugreifen?

Wenn nicht, ist es wahrscheinlich besser, gespeicherte Prozeduren zu verwenden, damit Sie eine einheitliche Schnittstelle zu Ihrer Datenbank haben.

Entstehen erhebliche Kosten für die Verteilung Ihrer Anwendung, wenn Sie eine Änderung vornehmen müssen?

Wenn ja, ist es wahrscheinlich besser, gespeicherte Prozeduren zu verwenden, die auf dem Server geändert werden können, und diese Änderungen müssen nicht verteilt werden.

Machen Sie sich Sorgen um die Sicherheit Ihrer Datenbank?

Wenn ja, dann wollen Sie wahrscheinlich gespeicherte Prozeduren verwenden, damit Sie einem Benutzer keinen direkten Zugriff auf Tabellen gewähren müssen.

Wenn Sie eine kleine Anwendung ohne großes Publikum für ein System schreiben, das außerhalb Ihrer Anwendung nicht verwendet wird oder auf das Sie nicht zugreifen, dann ist Inline-SQL vielleicht in Ordnung.

0voto

Shawn Punkte 18777

Ich bevorzuge Inline-SQL, es sei denn, die gespeicherte Prozedur hat tatsächliche Logik (Variablen, Cursor, etc.) beteiligt. In letzter Zeit verwende ich LINQ to SQL und nehme die generierten Klassen und füge partielle Klassen hinzu, die einige vordefinierte, allgemeine LINQ-Abfragen enthalten. Ich glaube, dass dies die Entwicklung beschleunigt.

Edit: Ich weiß, dass ich dafür heruntergestuft werden werde. Wenn Sie jemals über Fremdschlüssel oder gespeicherte Prozeduren sprechen, werden Sie heruntergestuft werden. DBAs brauchen Jobsicherheit, denke ich...

0voto

Dwight T Punkte 1387

Mit Subsonic werden Sie Inline, Views und Stored Procedures verwenden. Subsonic macht den Datenzugriff einfacher, aber man kann nicht alles in einer Subsonic-Abfrage machen. Die neueste Version, 2.1, ist jedoch besser geworden.

Für grundlegende CRUD-Vorgänge ist Inline-SQL einfach zu handhaben. Für komplexere Datenanforderungen muss eine Ansicht erstellt werden, die dann mit einer Subsonic-Abfrage bearbeitet wird.

Gespeicherte Procs eignen sich für schwierigere Datenberechnungen und Datenabfragen. Die mengenbasierte Abfrage ist in der Regel immer schneller als die prozedurale Verarbeitung.

Die aktuelle Subsonic-Anwendung nutzt alle drei Optionen mit hervorragenden Ergebnissen.

0voto

Developer Punkte 81
  1. Gespeicherte Prozeduren fassen die Daten und den Code zur Bearbeitung/Extraktion dieser Daten an einem Punkt zusammen. Dies macht das Leben Ihres DBAs viel einfacher (vorausgesetzt, Ihre Anwendung ist groß genug, um einen DBA zu rechtfertigen), da er sie auf der Grundlage bekannter Faktoren optimieren kann.

  2. Gespeicherte Verfahren können Logik enthalten, die am besten in der Datenbank verbleibt. Ich habe gespeicherte Prozeduren in DB2/z mit vielen Dutzenden von Zeilen gesehen, aber alles, was der Kunde zu codieren hat, ist eine einzige Zeile wie "Gib mir die Liste".

  3. der beste Vorteil der Verwendung von gespeicherten Procs, die ich gefunden habe, ist, dass, wenn wir in der Logik ändern möchten, im Falle der Inline-Abfrage müssen wir zu jedem Ort gehen und ändern Sie es und wieder rollen die jede Anwendung, aber im Falle der gespeicherten proc Änderung ist nur an einem Ort erforderlich.

Verwenden Sie also Inline-Abfragen, wenn Sie eine klare Logik haben; andernfalls bevorzugen Sie gespeicherte Prozeduren.

0voto

Ed Heal Punkte 57411

Die Vorteile von gespeicherten Prozeduren (meiner Meinung nach)

  1. Das SQL befindet sich an einem Ort
  2. Sie können Abfragepläne abrufen.
  3. Sie können die Datenbankstruktur bei Bedarf ändern, um die Leistung zu verbessern
  4. Sie werden kompiliert, so dass diese Abfragepläne nicht im laufenden Betrieb erstellt werden müssen.
  5. Wenn Sie Berechtigungen verwenden, können Sie sicher sein, dass die Anwendung Abfragen vornehmen wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X