2009-10-07 9 views
8

直接データベースアクセスを使用するか、Webサービスを使用するかを選択する際の賛否両論は何ですか?直接アクセスデータベースとWebサービス

応答性(< 0.5秒)とこのWebサービス/ DB(NB:Webサービスは他のチームによって維持管理されます)への呼び出しが少ない重要なアプリケーションには、どのような選択肢がありますか。

答えて

18

ダイレクトデータベースアクセスは、スキーマに密接に結合します。いずれかの変更があれば、それに影響します。しかし、シンプルでネットワークホップを1つ少なくするという利点があります。

ウェブサービスは、間接のいずれかの付加的なレベルを介して、より良好な抽象化と疎結合を意味します。 Webサービスは、データの単一のスチュワードとして機能することができます。あなたのアプリだけではデータベースに直接アクセスすることはできませんが、他のアプリが来て同じデータが必要な場合は、いつかスキーマの変更が必要になる可能性が高くなります。これらの変更はアプリにも影響します。コストはより多くの待ち時間です。

Webサービスは、承認とセキュリティを一元管理するのに適しています。データベースもこれを行うことができるので、おそらく洗濯物です。

+3

パフォーマンスは別の考慮事項です。通常データベースに直接アクセスする方がはるかに高速です – Cocowalla

1

明らかに、直接的なデータベースアクセスは、単純なシナリオでは常に高速になります。 Webサービスで

、あなたは柔軟性を得る:

  • プラグインの異なる実装、複数のアプリケーションが同じデータにアクセスする必要があるとき
  • 、そのデータを担当するものを作る、そして他のものを持っていますWebServiceを介してアクセスします.2つの間にデータの遅延はありません。データベースを使用してアプリケーション間で通信するのではなく、頻繁にアクセスされるデータをメモリ内のメモリに保持することができます。

あなたの状況に応じて(おそらく他のチームの問題もあります)いくつかのアプリケーションがデータを共有する必要がない限り、に直接アクセスすることを試みます ...

+0

私はどちらの方が良いと言えませんでした。あなたのアプリケーションのコンテキストでは、データベースへのアクセスが確実に機能します。それはあなたの企業全体にとって有益なサービスがどれほどのものであるかによって異なります。 – duffymo

+0

この問題は、データベースが複数のアプリケーションで使用されることを事前に知ることが困難または不可能なことがあることがあります。これはもう一つの理由ですが、ストアドプロシージャは、アプリのソースにあるパラメータ化されたクエリよりも優れた投資です。 –

0

DuffymoとKLEの両方が有効なポイントを作成します。

追加の考慮事項は、他のチームとのカップリングの程度です。

サービス層で作業する場合、プロジェクトは通常多くのクライアントの1つです。これは、利用可能なサービスを使用するか、ロードマップが必要な変更を提供するのを待つことを意味します。これはしばしば企業全体にとって良い決定を導きますが、あなたのプロジェクトにはあまり適していません。

関連する問題