FileStream与FileTable

时间:2015-09-01 14:20:53

标签: sql-server filetable sqlfilestream

我想将图像存储在sql数据库中。图像的大小在50kb到1mb之间。我正在阅读有关FileStream和FileTable但我不知道选择哪个。每行将有2个图像和其他一些字段。

图像永远不会被更新/删除,每天将插入约3000行。

在这种情况下推荐哪个?

3 个答案:

答案 0 :(得分:8)

最初,将文件(=二进制数据)存储在数据库中总是一个坏主意。通常的解决方法是将文件路径存储在数据库中,并确保文件实际存在于该路径中。但是,可以使用varbinary(MAX)数据类型将数据存储在数据库中。

<{> 3}}中引入了{p> 并通过不将数据存储在数据库文件(仅指针)中来处理varbinary列,但是在文件系统的不同文件中,改善表现。

一起引入,是对文件流的增强,因为它直接向SQL提供元数据,并且允许访问SQL之外的文件(您可以浏览到文件)。 / p>

建议:绝对利用FileStream,使用FileTable可能不是一个坏主意。

更多阅读(简称):

答案 1 :(得分:0)

在SQL Server中,BLOB可以是将数据存储在表中的标准varbinary(max)数据,也可以是将数据存储在文件系统中的FILESTREAM varbinary(max)对象。数据的大小和用途决定您应该使用数据库存储还是文件系统存储。

如果满足以下条件,则应考虑使用FILESTREAM:

  • 要存储的对象平均大于1 MB。
  • 快速读取访问很重要。
  • 您正在开发使用中间层进行应用程序逻辑的应用程序。
  

对于较小的对象,将varbinary(max)BLOB存储在数据库中   通常可以提供更好的流媒体性能。

FILETABLE的优点:

    Windows Server对存储在SQL Server数据库中的文件数据的
  • Windows API兼容性。 Windows API兼容性包括以下内容:

    • 非事务性流访问和对FILESTREAM数据的就地更新。
    • 目录和文件的分层名称空间。
    • 存储文件属性,例如创建日期和修改日期。
    • 支持Windows文件和目录管理API。
  • 与其他SQL Server功能的兼容性,包括管理工具,服务以及对FILESTREAM和文件属性数据的关系查询功能。

答案 2 :(得分:-2)

这取决于。我个人会预先链接到表格内的图像。它更简单,目录中的文件可以单独备份。

您必须考虑以下几点:

  1. 您将如何处理图像。只有链接允许您轻松地在网页中包含imges(使用Web服务器的propper配置)。

  2. 图像数量 - 如果它们存储在数据库中并且它们很多 - 这将增加数据库和备份的大小。

  3. 图像是否经常更改 - 在这种情况下,最好将它们放在DB中以在DB中具有备份的实际状态。