質問

3ティアアーキテクチャを持つ多くのWebアプリケーションがアプリサーバーですべての処理を行っており、データベースの独立性を持つためだけにデータベースを使用して永続性を使用しています。データベースに莫大な金額を支払った後、アプリサーバーでバッチを含むすべての処理を行い、データベースの電源を使用しないことは無駄のようです。私は、私たちが両方の世界のベストを使用する必要があることを人々に納得させるのが困難です。

役に立ちましたか?

解決

アプリケーションに依存します。データベースがデータベースを行うように、物事をセットアップする必要があります。数千万のレコードにまたがる8テーブルの結合は、アプリケーション層で処理したいものではありません。また、数百万の列で集計操作を実行して、概要情報の小さな部分を放出しません。

一方、あなたがたくさんのCRUDをやっているだけなら、あなたはその大きな高価なデータベースをばかげたリポジトリとして扱うことによって多くを失うことはありません。しかし、アプリケーションに焦点を当てた「処理」に役立つ単純なデータモデルは、予期せぬ非効率性を忍び寄らせるためにあなたを導くことになります。デザインノット。アプリケーション層のレコードセットを処理することがわかります。 SQL結合に近似し始める方法で物事を調べます。最終的には、これらのことを痛みを伴ってデータベース層に戻し、そこでより効率的に桁違いに実行されます...

だから、それは依存します。

他のヒント

データベースのどのパワー」は、3層のアーカイチャでは使用していませんか?おそらく、SQLを完全に活用し、すべてのデータ管理、ページング、キャッシュ、インデックス、クエリの最適化、ロック機能を活用します。

議論は、「ビジネスロジック」と呼ばれるものを実装すべき場所だと思います。アプリサーバーまたはデータベースストアドプロシージャ。

アプリサーバーに入れる理由が2つあります。

1)。スケーラビリティ。 DBが忙しすぎる場合、より多くのデータベースエンジンを追加することは比較的難しいです。複数のデータベースにわたってデータを分割するのは本当に難しいです。代わりに、ビジネスロジックをアプリサーバー層に引き出します。これで、すべてのアプリサーバーインスタンスをすべてビジネスロジックを実行できるようになりました。

2)。保守性。原則として、ストアドプロシージャコードは、よく書かれ、モジュール化され、再利用可能です。実際には、C#やJavaなどのOO言語でメンテナンス可能なコードを作成する方がはるかに簡単に思えます。何らかの理由で、ストアドプロシージャの再利用は、カットと貼り付けによって発生するように思われるため、時間の経過とともにビジネスロジックを維持するのが難しくなります。私は規律でこれが起こる必要はないが、規律は今すぐ不足しているようだと認めます。

たとえば、データベースクエリ機能を完全に活用するように注意する必要があります。たとえば、App Server層に大量のデータを引くことを避ける必要があります。

いいえ。ビジネスルールの執行にも使用する必要があります。

残念ながら、DBMSの大きな犬は十分に有能ではないか、これをサポートする意思があり、この理想を不可能にし、顧客を主要な現金牛に人質に保ちます。

フォームのテーブルを備えた(かなり賢い男によって)設計された1つのアプリケーションを見てきました。

id | one or two other indexed columns | big_chunk_of_serialised_data

アプリケーションでのそれへのアクセスは簡単です。1つ(またはセット)のオブジェクトをロードするメソッドがあり、必要に応じてそれを降ります。また、オブジェクトをデータベースにシリア化するメソッドがあります。

しかし 予想どおり(ただし、後知恵でのみ、悲しいことに)、そのアプリケーションの外側でDBを照会したい場合が非常に多くあります!これはさまざまな方法です。アプリ内のアドホッククエリインターフェイス(データの取得に間接的ないくつかのレイヤーを追加します)。アプリコードの一部の再利用。手書きの降下コード(時には他の言語で);そして、単に脱色チャンクにあるフィールドなしでやらなければならないだけです。

ほぼすべてのアプリで同じことが発生しているとすぐに想像できます。 ハンディ データにアクセスできるようにします。その結果、私は実際のDBでシリアル化されたデータを保存することをかなり嫌いだと思います - 保存が複雑さの増加を上回る可能性のある例外を除いて(例として32ビットINTの配列を保存することです)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top