2009-07-24 5 views
0

Im interroge sur l'avantage réel des commandes DML effectuer (insertions, mises à jour, suppressions) dans la base de données via des procédures stockées pour des applications simples CRUD. Quel est le bénéfice de cette approche en utilisant simplement une procédure générique dans le front-end qui génère les commandes dml?DML généré à la fin de l'avant contre Insertion - Mise à jour - Supprimer effectuée par des procédures stockées

Merci d'avance.

+0

Pouvez-vous donner un exemple de votre procédure générique? –

+0

Im itération à travers un formulaire dans VFP et obtention d'une valeur de propriété qui indique le champ à inclure dans la partie fieldlist de la commande insert pour donner un exemple ... la même chose avec la valeur assign pour la partie valuelist. – Enmanuel

Répondre

1

En termes de performances, vous ne verrez probablement aucun avantage. Je pense que c'est plus sur la sécurité de la base de données.

L'avantage des procédures stockées est en tout cas la possibilité pour le DBA de contrôler l'accès de sécurité aux données différemment. C'est souvent un appel de préférence par le DBA. Mettre l'accès CRUD au serveur dans le serveur signifie qu'ils contrôlent l'accès à 100% au serveur. Votre code doit répondre à leur proc "API" stockée. Si vous incluez la logique dans le code Visual FoxPro via une vue distante, un adaptateur de curseur ou SQL Passthrough SQLExec(), cela signifie que vous avez 100% du contrôle de code et que le DBA doit vous accorder l'accès aux composants de base de données ou via le rôle d'application que votre code utiliserait pour la connexion. Votre code pourrait être un peu plus flexible en ce qui concerne la construction de l'instruction SQL CRUD à la volée. Le proc stocké va devoir gérer des paramètres flexibles pour construire les instructions de manière générique.

Rick Schummer

1

Visual Foxpro? Pour les mises à jour d'enregistrement unique, je doute qu'il y ait un avantage de performance pour SP. L'effort pour les maintenir surclasse certainement tout gain de performance marginal que vous pourriez obtenir.

Les gourous des procédures stockées peuvent avoir des réflexions sur d'autres avantages que la performance.

+0

Ok. Mais je suppose que ce gain de performance marginal n'a rien à voir avec le fait que celui-ci est une application Visual FoxPro ... je veux dire que ce serait la même chose avec n'importe quelle autre application frontale, alors pourquoi tout le monde parle de la "règle" de créer des SP pour chaque commande DML ??? – Enmanuel

+0

Il n'y a pas de règle, il n'y a que ce qui fonctionne le mieux pour votre application. Il y a beaucoup de magasins qui suivent cette "règle" et s'en tirent très bien. Ne signifie pas que vous devez. –

+0

Vous avez raison ... il n'a rien à voir avec FoxPro. –

1

L'un des principaux avantages est le contrôle de l'accès. L'application dispose uniquement d'une autorisation EXECUTE et d'aucune autorisation d'accès direct aux données. De cette façon, l'administrateur peut inspecter les procédures et s'assurer qu'elles utilisent les chemins d'accès appropriés (c'est-à-dire les index). Si l'application a un accès direct aux tables, les développeurs écriront du SQL et réduiront le serveur.

1

Pour procs stockées:

  • Eviter les risques d'injection SQL
  • Encapsulation (sécurité, les traiter comme des méthodes)
  • Allow code client pour changer (même API à base de données)
  • face à la complexité accrue (par exemple parent d'insertion d'un enfant dans une transaction SQL côté)
  • plus facile à gérer les transactions
+0

Merci à tous.J'ai une meilleure perspective maintenant. – Enmanuel

Questions connexes