2016-12-17 10 views
0

C#アプリケーションでクライアントがオーディオファイルをアップロードしてダウンロードできるようにし、データベースに保存する必要があります。 SQL Serverで使用する適切なデータ型はどれですか?SQL Serverデータベースにオーディオファイルを格納するためのデータ型?

EntityFramework CodeFirstバイト[]自動的にvarbinary型にマップされます(最大)で
+2

のC# - バイト配列、データベース - varbinary型。 –

答えて

1

あなたは[]保存するために、一般的なバイトを使用しているが、

public class AudioFile 
{ 
    //TODO: DB generated 
    [Key] 
    public int ID { get; set; } 
    //This will automatically map to varbinary(max) 
    public byte[] FileData { get;set; } 
    public string LocalFileName { get;set;} 
    public string MIMEType {get;set;} 
} 

、あなたは専門のクラスでより多くのカプセル化を追加することができます。実際のFileDataフィールドのAudioデータ型は必要ありません。

public partial class AudioFile 
{ 
    public void Play() 
    { 
     //TODO 
    } 
} 

だけSQL Serverのの思考と最高のデータ型

varbinary型(最大)は、すべてのファイルの種類のバイナリデータを格納するために使用するのに最適なタイプです。これは、FileStreamingの考慮を除外し、また、ファイルがフォルダでデータベースに分離保管除外されます。

Varbinary Limitation - これらのオーディオストリームをたくさん保存し、SQL Server Expressを使用している場合は、すぐに10GBの制限に達します。より多くのデータベースでパーティショニングを続けることができますが、データベースフィールドにファイルデータを格納することは一般的には好ましくありません。

あなただけのプロトタイプアプリケーションを起動する、または最初のバージョンしている場合は、スコープを抑えます。

のFileStreamは素晴らしい選択肢です。それが初めての場合、SQL Server上で構成するには少し時間がかかります。

しかし、私は、多くの場合、自分のファイルフォルダを選びます。 Webアプリケーションのコンテキストでは、静的ファイルのダウンロードとCDNキャッシングのために、そのファイルフォルダを直接公開することができます(情報の機密性によって異なります)。結論として

:シンプルフィールドのうち

  • 、選択するのが最善ではまた、あなたが後で時に変換することができます
  • を軌道に乗るために最速のvarbinary(max)の
  • varbinary型(最大)ですそれは問題になりますが、私はAudioFileデータストア以上のものを構築しており、他の重要な機能を最初に構築する必要があると確信しています。
関連する問題