sql >> データベース >  >> RDS >> Sqlserver

ストアドプロシージャとコードでSQLを維持することの長所と短所は何ですか

    私はストアドプロシージャのファンではありません

    ストアドプロシージャは、次の理由でより保守しやすくなっています。* SQLを変更するたびに、C#アプリを再コンパイルする必要がない

    データ型が変更されたとき、または余分な列を返したいときなど、とにかくそれを再コンパイルすることになります。アプリの下からSQLを「透過的に」変更できる回数は全体としてかなり少ないです

    • SQLコードを再利用することになります。

    C#を含むプログラミング言語には、関数と呼ばれるこの驚くべき機能があります。これは、複数の場所から同じコードブロックを呼び出すことができることを意味します。すばらしい!次に、再利用可能なSQLコードをこれらのいずれかに配置できます。または、本当にハイテクを取得したい場合は、それを実行するライブラリを使用できます。それらはオブジェクトリレーショナルマッパーと呼ばれ、最近ではかなり一般的だと思います。

    コードの繰り返しは、保守可能なアプリケーションを構築しようとしているときに実行できる最悪のことです!

    同意しました。これが、storedprocsが悪いことである理由です。 SQLをSQLのブロックに変換するよりも、コードを関数にリファクタリングおよび分解(小さな部分に分割)する方がはるかに簡単ですか?

    4つのWebサーバーと同じSQLコードを使用する多数のWindowsアプリがあります。SQlコードに小さな問題があることに気付いたので、プロシージャを1か所で変更するか、コードをすべてにプッシュします。 Webサーバーの場合は、すべてのWindowsボックスにすべてのデスクトップアプリを再インストールします(クリックすると役立つ場合があります)

    Windowsアプリが中央データベースに直接接続しているのはなぜですか?それはまさにそこにある巨大なセキュリティホールのようであり、サーバー側のキャッシングを除外するためのボトルネックです。 WebサービスまたはWebサーバーと同様の方法で接続する必要がありますか?

    では、1つの新しいsproc、または4つの新しいWebサーバーをプッシュしますか?

    この場合、それは 1つの新しいsprocをプッシュする方が簡単ですが、私の経験では、「プッシュされた変更」の95%は、データベースではなくコードに影響します。その月に20個のアイテムをウェブサーバーにプッシュし、1個をデータベースにプッシュする場合、代わりに21個のアイテムをウェブサーバーにプッシュし、ゼロをデータベースにプッシュしても、ほとんど失うことはありません。

    コードレビューがより簡単になります。

    方法を説明できますか?わかりません。特に、sprocはおそらくソース管理されていないため、WebベースのSCMブラウザなどを介してアクセスすることはできません。

    その他の短所:

    Storedprocはデータベースに存在し、外部にはブラックボックスとして表示されます。それらをソース管理に入れたいという単純なことは悪夢になります。

    真剣な努力の問題もあります。いくつかのフォーラムを構築するのに700万ドルかかる理由をCEOに正当化しようとしている場合は、すべてを100万の層に分割するのが理にかなっているかもしれませんが、それ以外の場合は、すべての小さなものにstoredprocを作成することは、メリット。



    1. コマンドプロンプトを使用してmysqlデータベースをエクスポートする方法は?

    2. MySQLステートメントの実行には1分以上かかります

    3. MySQLで複数の行を1つの列に連結する方法

    4. ORA-011033を解決する方法:ORACLEの初期化またはシャットダウンが進行中です