2

次の仕様で基本的な .NET ドキュメント管理システムを開発する必要があります。

  1. データは移植可能で自己完結型である必要があるため、ドキュメント (一般的な形式には Word、PDF、Excel、および Powerpoint が含まれます) をバイナリ データにシリアル化します。次に、バイナリ データを SQL Server 2005 データベースに格納します。ユーザーがドキュメントをダウンロードする必要がある場合、システムはバイナリ データを逆シリアル化し、元の形式で表示します。

  2. 平均行サイズは 200k を超えることはできません。

  3. 3 年間、毎月最大 500 件のドキュメントがアップロードされる予定です。

  4. データベースのサイズが 6 GB を超えることはないと考えています。

  5. 同時にシステムにアクセスする可能性のある最大のターゲットは 20,000 人です。

私の質問は次のとおりです。確かなパフォーマンスを提供し、サイトのダウンタイムを防ぐために、テクノロジーはどの程度堅牢である必要がありますか?

私は初心者の開発者であり、この種のアーキテクチャと設計に慣れていません。

4

3 に答える 3

5

ドキュメントのパスをファイル サーバーまたは CDN に保存するだけでなく、データベースにファイルを保存する必要がある理由は何ですか? DB サーバーの負荷が大幅に軽減され、ドキュメント ストレージのより柔軟なオプションが提供されます。

私が提案したようなシステムで移動/削除されたファイルに問題がある場合は、次のような他のオプションも検討してください。

  • アプリケーションが実行されているロールを除くすべてのユーザーに対して、基盤となるファイル システムのアクセス許可をロックする (最も簡単なオプション)
  • フォルダーなどへの変更をリッスンし、それに応じてデータベースを更新するバックグラウンド サービスを実行する

最終的には、データベースのみのソリューションの方が簡単かもしれませんが、何万人ものユーザーの大きなファイルを保存することで発生する可能性のある負荷を過小評価することはできません。

于 2009-12-02T22:54:17.923 に答える
5

これは単なる「基本」システムではありません。したがって、ここに私の懸念があります:

  • 1 か月あたり 500 件のドキュメントを 3 年間処理すると、データベースのサイズは 6 GB をはるかに超える可能性があります。ドキュメントの最大サイズを決定し、その計算が成り立つかどうかを確認することができます。
  • 20,000 ユーザーは多いです。一度に何人期待できますか?同時ユーザーが 100 人を超える場合は、負荷を処理できるようにサーバー クラスタリング/Web ファームの調査を開始します。
  • ちょっとしたピックですが、.NETの「シリアライズ可能」な意味で「シリアライズ」することはありません。生のドキュメントバイトをDBに保存するだけです
  • 高可用性が必要な場合は、DB サーバーがダウンした場合に備えて、別の DB インスタンスへの DB レプリケーションを検討する必要があります。

最後に。私は、あなたが望むことを実行し、許可ベースのアクセスやドキュメントの改訂などのより高度な機能も備えた既製のシステムがあると信じなければなりません.

マイク

于 2009-12-02T23:01:49.547 に答える
0

プログラミングの重要な部分は、いつ頭を悩ませているかを知ることです。投稿した CTQ が本物である場合、特に同時アクセスの要件がある場合、あなたは悲惨な世界に直面しています。塹壕でかなりの時間を過ごしている私たちでさえ、そのような要件で傷ついた世界にいるでしょう. 私は次の考え方で問題に取り組みます。

私は、現在想像できるより多くの方法でこれを誤解するつもりです。

このことを知っていると、このアーキテクチャをシンプルに保つほど、スケーリングする可能性が高くなります。しかし、私が働いている会社は非常に大規模であり、実際に 20,000 人の同時ユーザーを持つシステムがあるとは思えませ。ですから、噛むことができる以上に噛まないでください。

アーキテクチャをシンプルかつ堅牢に設計すれば (難しい注文です)、最終的に大砲を投入する必要が生じるまで、自然に拡張できることがわかります。

少なくとも SQL Server 2008 へのアクセスにお金を使うことをお勧めします。そのバージョンでは、初心者にとって問題はかなり初歩的なものになるはずです。FILESTREAMファイル用のストレージを使用します。シリアル化は必要ありません。これにより、ファイルが NTFS ファイル システムに保存され、プログラミング、メンテナンス、およびスケーラビリティが最大限に容易になります。

なんらかの理由で SQL Server 2005 しか持っていない場合BLOBは、それほど難しくはありませんが、やや面倒な問題に対処する必要があります。SQL Server 2005 にデータを保存することが最善の策であるかどうかを判断するために、Microsoft Research の「BLOB にするかしないか」をお読みになることをお勧めします。もしそうなら、ファイルを SQL Server に入れる方法を詳述した記事がたくさんありますBLOB。これが最も効率的またはスケーラブルなソリューションになることはめったにないことに注意してください。

于 2009-12-02T23:22:31.993 に答える