用于在SQL Server数据库中存储音频文件的数据类型?

时间:2016-12-17 00:57:00

标签: c# sql-server

我希望我的C#应用​​程序允许客户端上传和下载音频文件,并且必须将它们存储在数据库中。我应该使用哪种SQL Server中合适的数据类型?

1 个答案:

答案 0 :(得分:1)

使用EntityFramework CodeFirst byte []将自动映射到varbinary(max)

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(max)是用于存储所有文件类型的二进制数据的最佳类型。这不包括对 FileStreaming 的考虑,也不包括在文件夹中将文件与数据库分开存储。

Varbinary Limitation - 如果您要存储大量这些音频流,并且您正在使用SQL Server Express,则很快就会达到10GB的限制。您可以继续使用更多数据库进行分区,但一般来说,将文件数据存储在数据库字段中是个坏主意。

如果您刚刚启动原型应用程序或第一个版本,请保持范围缩小。

FileStream 是一个不错的选择。如果是第一次在SQL Server上配置它需要一些时间。

但我经常选择自己的文件夹。它在Web应用程序上下文中要简单得多,可以直接公开该文件夹以进行静态文件下载和CDN缓存(取决于信息的敏感性)。

总结:

  • 在简单字段中,最好选择varbinary(max)
  • varbinary(max)也是最快的开始
  • 您可以稍后转换 时它会成为一个问题,但我确信您构建的内容不仅仅是AudioFile数据存储,而应该首先构建更多其他关键功能。< / LI>