ほとんどのアプリケーションは、直接データアクセスのためにストアドプロシージャを指定するほうがはるかに慎重であると思われるPHPの中でクエリを生成しています。ストアドプロシージャを避ける理由はありますか?すべてのクエリでストアドプロシージャを使用しない理由は何ですか?
答えて
これは、あなたが誰に依頼するかによって、ほとんど宗教的な議論になります。デベロッパー& dbasがこの種のケースで調整する必要がある微妙なバランスがあります。
PHPコードは、動的SQLを使用している場合は、SQLインジェクション攻撃に対する保護を常に考慮する必要があります。
は、基本的にはここにあなたが本当に遊びに入れたい考え方です。入力は、データベースに入れる前に消毒しなければならない(MUST)。
PHPコードで動的SQLが使用されているが、プリペアドステートメントを使用するのが慣例である場合は、ある程度は安全ですが、プリペアドステートメントの使用方法には注意が必要です。
PHPコードがストアドプロシージャを使用している場合、SQLの制御の多くは開発者から削除され、DBAは開発者と協力してニーズに合った適切なソリューションを提供します。これは、残念なことに、多くの時間と労力を要し、開発/保守を行き来する可能性があります。
グレーの領域であり、両者が特定の観点から見ているので、方程式のどちら側が正しいかという考え方がたくさんあります。
このようなものはありません。私が見ている限り、それはプログラマーの快適さの問題です。
2つの主なことは、ストアドプロシージャはコード内のクエリよりもはるかに高速ですが、少しだけコードが追加されていることです。 コード内のクエリは、(人々が言うように)先進的な方法であり、.NETのLINQが導入された理由です。それらは重要ではない場合には、n層アーキテクチャから揺れ動くことができます。
このコメントはただの炎症です。 「データベース環境」で作業するために「プログラマは怠惰でなければならない」という声明を作成することは正しいことではありません。 –
あなたはその声明が不適切であると感じた場合に謝罪します。私はそれを削除しました。次回は私の言葉や声明を見ます。私を修正してくれてありがとう。 –
理由と理由があります。
今日では、コマンドとクエリの分離などの行がぼやけています。たとえば、私のテーブルをORMで好きなように照会することはできますが、はに書き込み用に保存されたprocsを使用します。
標準のDBプラットフォームを使用しているcorpoarate shopにいますか?または複数のDBエンジンをサポートするベンダーですか?
データがコードをoutlives:あなたは、毎年またはので、あなたのDALのリポジトリをリファクタリングます:保存されprocsのは、あなたがいくつかのクライアントのために一貫性のある「API」を提供することができます
を変更する必要はありません。我々は、外部のC#を持って、エクセル、Java +私たち自身のC#。
ストアドプロシージャは、おそらく、メソッドです:なぜあなたのテーブルをカプセル化しないのですか?
リンク:[アプリケーションにおけるStoredProcsの使用]の
- 1. Angular CLIを使用しない理由は何ですか?
- 2. AnyObjectを使用しない理由は何ですか?
- 3. コマンドライン - 「タッチ」を使用できない理由は何ですか?
- 4. パスワードハッシュには何を使用しますか? jBCryptを使用しない理由は何ですか?
- 5. 参照にdynamic_castのアドレスを使用しない理由は何ですか?
- 6. HTML 5 doctypeの使用を開始しない理由は何ですか?
- 7. 私は更新方法を使用できない理由は何ですか?
- 8. iOS開発にC++ 0xを使用しない理由は何ですか?
- 9. SQLAlchemyよりSQLObjectを使用しない理由は何ですか?
- 10. requestMatchers()。antMatchers()を動詞なしで使用する理由は何ですか?
- 11. プラグインなしでpostcss-loaderを使用する理由は何ですか?
- 12. コントローラーが決して燃えない理由は何ですか?
- 13. Pythonで '//'を使用する理由は何ですか?
- 14. クエリの選択テーブルをロックする理由は何ですか?
- 15. Linux用のDirectX APIがない理由は何ですか?
- 16. MFC CArrayでは、異なるデフォルトテンプレートタイプを使用する理由は何ですか?
- 17. REST API URIを使用してリソースIDを渡す理由は何ですか?
- 18. シェルスクリプトで実行しない理由は何ですか?
- 19. GLMコンストラクタはすべて明示的な理由は何ですか?
- 20. l18nにドメインを使用する理由は何ですか?
- 21. Spring Batch Job Repositoryを使用する理由は何ですか?
- 22. リストを使用する理由は何ですか?
- 23. Javaコンテナを使用する理由は何ですか?
- 24. Socket.ioを使用する理由は何ですか?
- 25. パーサーコンビネータを使用する理由は何ですか?
- 26. OpenJDKを使用する理由は何ですか?
- 27. Ruby on Railsを使用する理由は何ですか?
- 28. jsonpを使用する理由は何ですか?
- 29. ASP.NET MVC - App_Themesを使用する理由は何ですか?
- 30. Camel XMLルートを使用する理由は何ですか?
可能重複します(http://のstackoverflow。com/questions/4040426/use-of-storedprocs-in-an-application) –