web-dev-qa-db-ja.com

エンタープライズソフトウェア:コードはどこに行くべきですか?

私は最近、エンタープライズレベルのソフトウェアを書くと主張するソフトウェア会社へのインタビューに行きました。インタビュー中に、インタビュアーは、データベースを単にデータを格納するために使用する方が良いと述べました。ストアドプロシージャやトリガーはありません(むしろ、最小限に抑える必要があります)。

今、私はこれをコード保守の観点から純粋に言及していると思いました(このPSE質問で説明されている、@ gnatに感謝します)。パフォーマンス上の理由によるものです。会社がバックエンドにC#とMSSQLサーバーを使用していることを知っています。彼のステートメントは有効ですか、すべてのコードロジックをデータベースから切り離すことでパフォーマンスをどのように向上させるのでしょうか。

7
Eminem

「ほとんどのコードをデータベースに入れる」ため、または「データベースからコードを除外する」ため、パフォーマンスは向上も低下もしません。重要な点は、コードのright部分をデータベースに配置する(またはそれらを除外する)ことです。ネットワークトラフィックの削減に役立つパーツは、ストアドプロシージャに適している場合があります。重い計算を行う部分は、データベースから除外することをお勧めします(そうしないと、データベースサーバーを処理のボトルネックにするリスクがあるためです)。

残りのコード(エンタープライズシステムでは通常90%を超える)の場合、「何がより保守可能で進化可能か」に基づく決定が最も理にかなっています。そしてそれでも意見が分かれるかもしれません。

10
Doc Brown

一般に、より多くのコードをDBにプッシュし、正しく実行すると、パフォーマンスが向上します。そして、インタビュアーがその逆の主張をする理由はわかりません。

個人的には、メンテナンスが簡単でユニットテストが簡単なため、コードをDBに入れません。ほとんどのアプリケーションでは、ロジックをDBに移動することによるパフォーマンスの向上は、頭を悩ますに値しません。

3

データベースにコードがない主な理由は、テスト容易性とメンテナンスです。データベースコードをテストすることは比較的難しく、それは一種の隠されたロジックであり、特にプロジェクトのメンテナンスフェーズでロジックが全体に広がってリグレッションになると、メンテナンスが難しくなります。

2