データベースに複数のファイルをアップロードし、それらを特定のテーブルの特定のレコードに関連付けることができる必要があります。最初は必要なすべてのファイルを圧縮し、結果のバイト配列を残りのレコードデータとともにストアドプロシージャに送信しました。これにより、これが単一のトランザクションとして機能し、関連するすべてのファイルを取得することができます与えられた記録はケーキの一片になるでしょう。しかし、この計画は、パフォーマンス上の理由で受け入れられなかった、そして今、私は2つの選択肢が残っています:データベースへのファイルのアップロード
は、
byte[]
の配列をラップするデータ構造を作成します(バイナリレベル)、それをシリアル化し、それを一緒に送りますデータ;またはまず、残りのデータを送信し、レコードのIDをキャッチし、各ファイルを個別に送信します(指定されたIDに関連付けます)。
今、1)は私の最初の計画によく似ており、この時間は圧縮されていなくても拒否される可能性があります。オプション2)は行く方法だと思われますが、レコードのデータとファイルを1つのトランザクションでアップロードすることを保証しなければなりません。これにより、私のデータレイヤーに(わずかながらですが)変更が強制されます。
この問題が発生した場合は、どのオプションを選択しますか?私が上記のいずれにも該当しない場合、どちらが当てはまるのでしょうか?
編集:データベースはリモートサーバーにあります。ファイルは任意に大きくすることができますが、私はそれらが例えば1〜2MBよりも大きくなることは期待していません。アプリケーションとデータベースサーバーの両方からアクセス可能な場所にファイルを格納することはオプションではないので、ファイルへのパスをデータベースに送信するだけで済むわけではありません(実際にはデータベースにBLOBとして格納する必要があります)。
私たちは、時間とファイルの予想サイズで、我々のニーズに応じて、このための2つの異なるシナリオを使用
ファイルの大きさは、実行中のアプリケーションのローカルデータベースです。 –
質問を編集しました。どうもありがとう! – DotNetStudent
あなたは本当にデータベースにファイルを保存したくありません。 –