私はこの質問が何度も尋ねられたことを知っています。
この投稿全体を読みましたが、まだポイントに到達できませんでした。
私は、ユーザーが壁紙と曲をダウンロードできるようにする Web サイトを作成しています。私以外の誰もそれらの壁紙/曲をアップロードしません。ユーザーがそれらをアップロードしないと言いたいのです。現在のところ。平均して各ファイルは 6Mb (曲の場合) です。
さて、あなたはここで何をしたいですか?それらを BLOB ファイルとして保存するか、ファイル パスを使用しますか?
私はこの質問が何度も尋ねられたことを知っています。
この投稿全体を読みましたが、まだポイントに到達できませんでした。
私は、ユーザーが壁紙と曲をダウンロードできるようにする Web サイトを作成しています。私以外の誰もそれらの壁紙/曲をアップロードしません。ユーザーがそれらをアップロードしないと言いたいのです。現在のところ。平均して各ファイルは 6Mb (曲の場合) です。
さて、あなたはここで何をしたいですか?それらを BLOB ファイルとして保存するか、ファイル パスを使用しますか?
それは本当にあなたが何をしているかに依存します。
ファイル パスを使用する場合は、そのパスに異なる一貫したセキュリティ設定を行う必要があります。また、一意のファイル名などを強制するために何かをする必要があります。そのディレクトリのバックアップも設定する必要があります
BLOB を使用する場合、データベースがセキュリティを処理します。バックアップは、データベース内の他のすべてのものと一致している必要があります。
最初のテーブルから BLOB テーブルへの FK を使用して、それらを別のテーブルに BLOB として格納できます。そうすれば、同じブロブを複数回保存することを避けることができます。
forum.asp.netでKBrocksi_SECによる別の良い回答を見つけたので、それを共有します。
BLOB データを処理するために一般的に使用される別の方法は、BLOB データをファイル システムに格納し、適切なファイルを参照するためにデータベース列にポインタ (できれば URL (Uniform Resource Locator) リンク) を格納することです。
BLOB データをデータベースに格納する利点
BLOB データをデータベースに格納すると、次のような多くの利点が得られます。
BLOB データをデータベースに格納することの欠点
データベースではなくファイル システムに格納する方が適切なリソースを慎重に検討してください。良い例は、通常 HTTP HREF を介して参照される画像です。それの訳は:
次のコードは、ADO.NET を使用して、ファイルから取得したバイナリ データを SQL Server のイメージフィールドに書き込む方法を示しています。
public void StorePicture( string filename )
{
// Read the file into a byte array
using(FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read))
{
byte[] imageData = new Byte[fs.Length];
fs.Read( imageData, 0, (int)fs.Length );
}
using( SqlConnection conn = new SqlConnection(connectionString) )
{
SqlCommand cmd = new SqlCommand("StorePicture", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@filename", filename );
cmd.Parameters["@filename"].Direction = ParameterDirection.Input;
cmd.Parameters.Add("@blobdata", SqlDbType.Image);
cmd.Parameters["@blobdata"].Direction = ParameterDirection.Input;
// Store the byte array within the image field
cmd.Parameters["@blobdata"].Value = imageData;
conn.Open();
cmd.ExecuteNonQuery();
}
}
また、上記の説明に自分で別のメモを追加できます。
BLOB データをデータベースに格納することの欠点