2011-01-05 17 views
0

おじさんは小さい方法を持つことをお勧めします。ストアドプロシージャは理想的なサイズですか?あるいは、彼らは100秒と100秒の長さで走ることができますか?小規模な方法 - 小さなsprocs

また、ビジネスロジックを配置する場所については誰も言いません。ストアドプロシージャ内にある場合、データベースはデータ処理層として使用されています。

Adam Machanicを読むと、彼の偏見はデータベースに向かっているのですが、それはsprocの著者だけが理解できる長いストアドプロシージャを意味し、管理者は混乱に対処する必要がありますか?

何らかの形で、相互に関連する2つの質問があると思います。

あらかじめ不明な質問にお返事ありがとうございます。

答えて

0

私はSPのコードを考慮して、できるだけSPに同じ推奨を適用します。

私の意見では、ビジネスロジックはSPのコードベースではないコードベースの層に属しています。私には、SPがビジネスロジックを保つならば、彼らは彼らが何をすべきかについて多くのことを知っています。私は、SPの主に、データを収集したり保管したりするときに任されるべきだと思います。ビジネスロジックがコマンドのチェーンの上に/コード内で適用された場合、ビジネスロジックが満たされたときにだけSPが呼び出されます。

私はAdam Machanicを疑っていますが、ほとんどの人が理解して維持するのが難しい長いSPは良いことだと主張しています。

2

ストアドプロシージャは通常の関数と変わりありません。それらは、関係なく、扱いやすいサイズでなければなりません。私はストアドプロシージャからビジネスロジックを守るように偏っていますが、合理的な人は同意できません。

1

私は最近、ストアドプロシージャは、データベースへの唯一のアクセス方法としてシステム全体で使用されるべきではないと思います。これは、長期的には利益よりもずっとメンテナンスの問題がある古いアーキテクチャです。 現在、すべてのデータアクセス要件を処理する方がずっと良い方法があります。 ストアドプロシージャの最適な使用方法は、まれに定義された一意の関数で、より多くのアプリケーションで同じ方法で使用されることがわかっているデータを取得することを希望する場合です。この場合、ストアドプロシージャはDRYになります。 セキュリティを処理するdb管理者が、SPのみへのアクセスを許可するような細かい方法で、データの特定の部分(例えば、クレジットカードテーブル)を保護する必要がある場合もあります。

これらの場合を除いて、ストアドプロシージャをできるだけ避け、継承、コンパイラチェック、リファクタリング用ツール、クエリのマジック文字列ではなく列挙型、ソース管理、簡単なデプロイメントできるだけSPを避けることのメリットのリストは、現在のところ長すぎるものです。

しかし、何らかの理由でストアドプロシージャを使用することに決めた場合、ビジネスロジックを含めることさえせずにそのようなレイヤーをデータに近づけてビジネスロジックを組み込むことができます。 SPを使用する点についてはほんのわずかしか得られません。

+0

あなたの皮肉はよく取られます。私にとっては、ストアドプロシージャはCOBOLの恐ろしい模倣のように見えますが、「時代遅れのアーキテクチャ」です。ほとんどの開発者は、第3正規形をあまり気にすることはできません。テーブルのROWIDオートナンバーを叩いても、それはまったく関係にはなりません。ファイルをテーブルとして偽装しようとしているのであれば、彼らはCOBOLに立ち向かっていたはずです。データ分割によりデータが定義され、作業保管セクションでプロシージャが定義されました。COBOLは永遠に生き続けるでしょう! – dannyrosalex

関連する問題