2012-04-24 4 views
3

私はアップロードのための機能を提供し、ブラウザを通じてファイルをダウンロードする必要があるモジュールを1つ作成しています。春の休止状態を使用してファイルをアップロードしてダウンロードすると、アプローチについての混乱はほとんどありません。

私の要求を達成するためのアプローチを探しました。

DBサーバ:Oracleの10グラム フレームワーク:春&休止 フロントエンド:JSP

今、私は2つのオプション

  1. ファイルのOracleへの(データ・タイプBLOB)データベースのインポートと同じの取得を持っていますBufferedOutputStreamを使用してファイル

  2. すべてのファイルを格納するためのサーバー上にフォルダを作成します。ユーザーはその場所に画像をアップロードします。データベースには、そのファイルを読み込み中に使用されます、そのファイルの絶対パスを格納するための一つの列を持つことになります

例えばユーザーアップロードimageABC.jpg、ディレクトリの下にDを(更新された名前のunique_id.jpegで)そのファイルをアップロードするアプリケーション:\列がDにより更新されるデータベースのパスにDIS21 \ストレージ\ :\ DIS21 \ストレージ\

:ファイルアプリケーションを読みながら

unique_id.jpeg \ DIS21 \ストレージ\はパスDの下でファイルを読み込みます私はアプローチとセキュリティの側面について少し混乱しています。誰も私の同じことをガイドすることができます.. ??

+0

アップロードするファイルが何千ものあるとしたら、それは動作しますか? – JOHND

+0

申し訳ありませんが、もう一度2番目のオプションを読んだ後、私はそれが完全に間違っていることを理解しています。 – Ralph

+0

2番目のオプションで何が間違っていますか?私はそれがうまくいくと思う。 – JOHND

答えて

1

どちらのアプローチも有効です。オプション1の欠点は、データベースに余分なI/O負荷をかけることですが、システムの負荷に応じて問題になることはありません。

オプション2の主な問題は、水平スケーリングを防止することです。つまり、すべてのファイルを何らかの種類のネットワークファイル共有に移動することなく使用量が増えた場合、サーバーを追加できなくなります。この場合も、ネットワークとI/Oオーバーヘッドが追加されますが、問題である場合とそうでない場合があります。

データベースにファイルを格納するサイトをたくさん構築しました。良いデータ設計(主に、自分のテーブルにブロブを分割する必要があります)を適用する限り、大丈夫です。

+0

Thnaks pap ....しかし、 "主にあなたは自分のテーブルにブロブを分割してください"とは何を意味しますか? "良いデータデザイン" Thnaksはどういう意味ですか?\ – JOHND

+0

私を助けてください.... – JOHND

+0

だから、ファイルのテーブルがあるとします。それは、ファイルの名前である列と説明とそれに格納したいものがあります。回避する必要があるのは、BLOB列が「メイン」表の内容であることです。代わりに、メインテーブルへの外部キーであるIDとコンテンツであるBLOBのみを持つFILE_CONTENTテーブルを作成します。 – pap

関連する問題