-1

開発者がデータ アクセス コードを記述するとき、アプリケーションが適切にスケーリングし、負荷/ヒットを処理する必要があるかどうかを本当に心配する必要があります。

この単純な問題を考えると、スケーラブルな方法でどのように解決しますか?

1.ProjectResourceクラスです ( に割り当てられたリソースをカプセル化しますProject)

2.プロジェクトに割り当てられた各リソースはUserクラスです

3.UserのそれぞれにProjectもあるReportingHeadProjectManagerのインスタンスもあるUser

4.最後に、Projectプロジェクトの詳細を含むクラスがあります

使用クラスの凡例

  • ユーザー

  • 計画

  • プロジェクトリソース

テーブル ダイアグラム

  1. プロジェクトリソース

    • リソース ID

    • プロジェクト ID

    • ユーザーID

    • レポーティングヘッド

    • プロジェクトマネージャ

クラス図

  1. プロジェクトリソース

    • ResourceId : 文字列 / Guid

    • プロジェクト : プロジェクト

    • ユーザー : ユーザー

    • ReportingHead : ユーザー

    • ProjectManager : ユーザー

ノート:

すべてのユーザー情報は User テーブルに格納されます

すべてのプロジェクト情報はプロジェクト テーブルに保存されます

これが問題です

以下の Resource In a Project オペレーションのアプリケーション リクエストが実行された場合

  • 最初にプロジェクトのレコードを取得します

  • UserId を取得し、( を使用してUsers DAL) リクエストを作成してユーザー インスタンスを取得します。

  • ProjectId を取得し、( を使用してProjects DAL) リクエストを行い、プロジェクト情報を取得します

  • Users最後にandProjectを のインスタンスに割り当てますProjectResource

3 Db Callsここでは単一のデータを入力するために作成されていることがわかりますProjectResourceが、懸念事項とオブジェクトの管理者は明確に定義されています。&にもあるので、これは私が計画した方法です。connection poolingSql ServerADO.net

Table Inner Joins と Populating を使用して、すべての詳細を 1 回のヒットで取得する別の方法もあります。

私は本当にどちらの道を取るべきですか、なぜですか?

エクストラ:

.NET 2.0、ASP.net 2.0、C#、Sql Server 2005、アプリケーションをホストする同じマシン上の DB。

4

1 に答える 1

1

最高のパフォーマンスとスケーラビリティを得るには、DB への往復回数を最小限に抑える必要があります。それを証明するには、いくつかのベンチマークを実行してください。それはすぐに明らかになります。

単一の往復へのアプローチの 1 つは、結合を使用することです。もう 1 つは、複数の結果セットを返すことです。後者は、重複データの可能性を排除するのに役立ちます。

于 2012-01-07T09:20:16.280 に答える