我的应用程序,他们的注册用户后播放视频文件(文件是大于100 MB)。
它是更好地做我把它们存储在硬盘上,并保持文件路径数据库? 还是我在数据库文件流类型的商店?
当数据被存储在数据库中,反对操纵更安全VS存储在硬盘?
如何防止操纵提供数据安全?
谢谢 。
我的应用程序,他们的注册用户后播放视频文件(文件是大于100 MB)。
它是更好地做我把它们存储在硬盘上,并保持文件路径数据库? 还是我在数据库文件流类型的商店?
当数据被存储在数据库中,反对操纵更安全VS存储在硬盘?
如何防止操纵提供数据安全?
谢谢 。
有微软研究院一个很好的纸叫成团块或不BLOB 。
他们有大量的性能测试和分析后得出的结论是这样的:
如果您的图片或文档通常低于256K大小,将它们存储在数据库中VARBINARY列更有效
如果您的图片或文档通常超过1 MB的大小,将它们存储在文件系统更高效(并与SQL Server 2008的FILESTREAM
属性,他们仍然事务控制,数据库的一部分下)
在这两个之间,这取决于你的使用有点难以取舍的
如果你决定把你的照片到SQL Server表,我会强烈建议使用一个单独的表,用于存储那些图片 - 不要将员工照片存储在雇员表 - 让他们在一个单独的表。 这样一来, Employee
表可以保持精简,平均和非常有效的,假设你并不总是需要选择员工照片,也为您的查询的一部分。
对于文件组,检查了文件和文件组体系结构的一个前奏。 基本上,你要么从一开始就创建了大型数据结构的独立文件组数据库,或更高版本添加一个额外的文件组。 让我们把它LARGE_DATA
。
现在,只要你有一个新的表来创建一个需要存储VARCHAR(MAX)
和VARBINARY(MAX)
列,您可以指定大型数据文件组:
CREATE TABLE dbo.YourTable
(....... define the fields here ......)
ON Data -- the basic "Data" filegroup for the regular data
TEXTIMAGE_ON LARGE_DATA -- the filegroup for large chunks of data
检查出的文件组的MSDN介绍,和玩它!
1 - 取决于你如何定义“更好”。 在一般情况下,我宁愿二进制资产存储在数据库中,以便在备份旁边的相关数据,但缓存到文件系统上。 流出来的SQL Server二进制数据的页面请求是真正的性能猪,它并没有真正规模。
3 - 这是在自己的权利的整个问题。 太宽了堆栈溢出...