7

そのため、ユーザーが月に約 6000 個のファイル (主に pdf、doc、xls) をアップロードおよびダウンロードできるようにする必要があるというこの要件があります。

その最適解を考えてみました。問題は、データベースで BLOb を使用するか、これらのファイルの束を読み書きするために単純なファイル階層を使用するかです。

アプリのアーキテクチャは、Java 1.6、Spring 3.1 および DOJO、Informix 10.X に基づいています。

だから私はあなたの経験に基づいてアドバイスするためにここにいます.

4

2 に答える 2

9

「最良の」ソリューションは何かを尋ねるときは、評価基準 (速度、コスト、シンプルさ、メンテナンスなど) を含めることをお勧めします。

ミッコ・マウヌが出した答えは、ほとんどお金にかかっています。私は 20 年間 Informix を使用していませんが、ほとんどのデータベースは、BLOB を処理するときに少し遅くなります。特に、BLOB をデータベースに出入りさせるステップは遅くなる可能性があります。

この問題は、より多くのユーザーがシステムに同時にアクセスするにつれて、特に Web アプリケーションを使用している場合に悪化する傾向があります。通常のページよりも、ファイル関連の要求を完了するのに時間がかかる可能性があります。

これにより、中程度の負荷だけで Web サーバーの速度が低下する可能性があります。ドキュメントをデータベースに保存することを選択した場合は、いくつかのパフォーマンス テストを実行して問題があるかどうかを確認することを強くお勧めします。データベースサーバーへの接続、ウェブサーバーの RAM 不足など)

これを避けるために、ドキュメントの「マスター」コピーをデータベースに保存して、すべてをまとめてバックアップし、「ユーザー x のすべてのドキュメントがありますか?」などの質問をデータベースに行うことができるようにしました。ただし、必要以上にデータベースからドキュメントを読み取らないようにするために、Web サーバーのキャッシュを使用しました。これは、コンテンツ管理システムのように「一度書き込み、何度も読み取る」ソリューションがあり、キャッシュが保持できる場合にうまく機能します。

于 2012-07-12T08:02:08.580 に答える
6

これらのファイルに関連する他のデータがデータベースにある場合、ファイルをファイル システムに保存すると、より複雑になります。

  1. バックアップは別途行う必要があります。
  2. トランザクションは個別に実装する必要があります (ファイル システム操作についても可能な限り)。
  3. データベースとファイル システム構造の間の整合性チェックは、そのままでは機能しません。
  4. カスケードなし: ユーザーの削除の結果としてユーザーの写真を削除します。
  5. 最初に、データベースからファイルのパスを照会してから、ファイル システムからパスを選択する必要があります。

ファイル システム ベースのソリューションの優れている点は、ファイルに直接アクセスできると便利な場合があることです。たとえば、イメージの一部を別の場所にコピーする場合などです。もちろん、バイナリデータを保存すると、データベースのサイズが劇的に変化する可能性があります。ただし、いずれにせよ、どちらのソリューションでも、どこかでより多くのディスク ストレージが必要になります。

もちろん、これらはすべて、現在利用可能なものよりも多くの DB リソースを要求する可能性があります。一般に、特にローカル ファイル システムとリモート DB の間で決定が下される場合、パフォーマンスが大幅に低下する可能性があります。あなたの場合(毎月6000ファイル)、生のパフォーマンスは問題になりませんが、レイテンシが発生する可能性があります。

于 2012-07-12T07:25:14.243 に答える