我开始开发一个将各种文档存储在数据库中的Web应用程序(asp.net)。 这是一个SQL 2008数据库,我正在分析在数据库解决方案中存储“元数据”的最佳方法是什么? 几种类型: - 文件系统指针在受保护的文件夹中,对我来说太复杂和修指甲 - 文件流 - varbinary(max)列 - 其他? 有什么建议吗?有类似困境的人?
谢谢大家。
答案 0 :(得分:0)
为什么太复杂或不安全?最好在数据库上存储文件名,并从文件系统访问文件本身。您可以使用NTFS权限来保护文件的位置,以便只有运行ASP.NET应用程序(池)的帐户才能访问它们。对于大型文件尤其如此。
答案 1 :(得分:0)
我会查看SQL Server 2008's FILESTREAM attribute on a varbinary column。我没有亲自使用它,但这是我要检查的第一件事。
我问a similar question。我还会看看人们给那里的答案。
答案 2 :(得分:0)
我倾向于远离将文件保留在文件系统中而只将数据库存储在数据库中。我更喜欢将文件保存在数据库中,因为它极大地简化了任何备份/恢复策略。我唯一的例外是如果你知道你将要在多个设备上存储文件,如果你知道你将拥有的图像数量超过合理存储在单个逻辑驱动器上的数量,那么这种情况往往会发生。
如果要将文件存储在数据库中,我将提出的另一个建议是将文件的内容存储在自己的表中(即只有内容和PK)。如果表中包含实体的文件(比如用户表中的头像图像),那么如果有人对用户表运行select *
,那么也会返回文件,这可以如果您要返回大量用户,则会非常昂贵。
我在SQL Server中对filestream
没有太多个人经验,所以我不能很好地说话,但我认为或者varbianary(max)
可能是不错的选择。