私は最近、2016年にこの意見に出くわしましたが、データベースのドメインロジックにはまだケースがあると言っています。
これは完全に時代遅れだと思いました。その男がまだ90代に住んでいるのか、それとも本当のことなのかと思います。レガシーシステムを脇に置きます。
セキュリティ要件のため、データベースにドメインロジックを含めることについてはどうでしょうか。それは本当にやるべきことですか?
私は最近、2016年にこの意見に出くわしましたが、データベースのドメインロジックにはまだケースがあると言っています。
これは完全に時代遅れだと思いました。その男がまだ90代に住んでいるのか、それとも本当のことなのかと思います。レガシーシステムを脇に置きます。
セキュリティ要件のため、データベースにドメインロジックを含めることについてはどうでしょうか。それは本当にやるべきことですか?
回答:
今日のプログラマーは、特に他の人々がブログに書いている考えを読んだとき、非常に独断的に考えているようです。
たとえば、ボブマーティンのClean Codingブログを見てください。一般的な観察として、ボブマーティンの著作は非常に明確で明快であるため、SOLIDの原則など、彼が書いたものに人々が常に混乱していることに戸惑います。彼らは「単一の責任」が何であるか、またはなぜ一部のクラスがリスコフの原則に違反しているのかということに夢中になっています。ブログにはいくつかのコンテキストがあります。
基本的に言っていることは、データベースにはテーブルとデータが含まれている必要があるということです。しかし、データベースは、データベースが得意である特定のことを実行するのに非常に適しています。
記事はこれらのものを引用します:
データベースに入れるのに適したものとして。たまたま彼に同意する。
ビジネスロジック(一般的に)をデータベースに入れない理由:
しかし、これらのことは一般に、データベースが一意に適していない技術、ツール、およびトレーニングにのみ適用されます。
したがって、ソフトウェア開発における他の技法と同様に、それは状況によって異なります。代替案を評価し、特定のアプリケーションで可能な最善の行動方針であると信じるものに基づいて決定を行います。
馬とバギーの時代は終わりましたが、まだバギーの鞭を買うことができます。
どうして?車の方が速く、維持費が安く、無視しても人道的社会からの訪問が得られないのに、なぜ馬と荷車がまだ残っているのですか?
なぜなら、人気の理由以外にも何かをする理由が異なる場合があるからです。
あなたが学ばなければならないのは、データベースのドメインロジックが問題を引き起こす理由と、だれもがデータベースから抜け出す可能性があることです。その後、あなた自身の決心をしてください。
私の個人的な見解:
ドメインロジックは動作に関するものです。データベースは、持続性、関係、そしてデータに関するものです。このように表示された場合、ビジネスルールはデータベースに存在するべきではありません。
一方、データベースが振る舞うことができないだろうと誰が言ったのですか?Filemakerを使用してOfficeデータベースを構築しました。人々はそれをデータベースと呼んでいますが、実際にはアプリケーション開発環境全体でもあります。すべてが1つにシームレスに統合され、データベースと呼ばれます。
Wizdomは通常、極端なビューの間にあります。私も間違いなく働かせることができたでしょう。真ん中を見つけようとするとき、群れをたどるのは魅力的です。ここでは注意します。
データベースにドメインロジックを保持するシステムは、適切に機能します。データベースからドメインロジックを除外するシステムはうまく機能します。両方の場所でドメインロジックを混在させるシステムは、私をバカにするでしょう。新しい行動をどこに置けばいいのかわかりません。古い行動がどこにあるかわかりません。
それでも判断できない場合は、コインを投げて、特定のプロジェクトの福音としてその判断を下します。私が知る限り、コインは他の誰と同じように何が最良かを知っています。
ビジネス層でそれを解決することは、実際のパフォーマンスのキラーであるだろうというケースがありました。
私たちのアプリケーションOOセキュリティの概念は、役割とグループで構成されています。そして、どちらも再帰的な構造です。ドメインオブジェクトに対するユーザーのアクセス許可を解決するストアドプロシージャを作成しました。
データベースロジックにフォールバックする必要性が本当に少なくなります。しかし、この場合、私はそうすることにしました。しかし、常に考慮しなければならないこと:抽象化をあきらめること。データベースにビジネスロジックがあるとすぐに、永続化レイヤーを変更するのに苦労します。非常に注意してください。