首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FileStream vs FileTable

FileStream vs FileTable
EN

Stack Overflow用户
提问于 2015-09-01 22:20:53
回答 3查看 9.3K关注 0票数 13

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

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

在这种情况下,推荐使用哪种方式?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-19 19:03:09

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

sqlfilestream是在sql-server-2008中引入的,它通过不将数据存储在数据库文件(只是一个指针)中,而是存储在文件系统上的另一个文件中来处理varbinary列,从而极大地提高了性能。

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

建议:一定要利用FileStream,而且使用FileTable可能也不是一个坏主意。

更多阅读(简短):http://www.databasejournal.com/features/mssql/filestream-and-filetable-in-sql-server-2012.html

票数 13
EN

Stack Overflow用户

发布于 2018-10-13 17:49:10

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

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

存储的

  • 对象平均大于1 MB。
  • 快速读取访问非常重要。
  • 您正在开发的应用程序使用中间层作为应用程序逻辑。

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

FILETABLE的优势:

存储在

  • 数据库中的文件数据的SQL Server Windows API兼容性。Windows应用编程接口兼容性包括以下内容:

代码语言:javascript
复制
- Non-transactional streaming access and in-place updates to FILESTREAM data.
- A hierarchical namespace of directories and files.
- Storage of file attributes, such as created date and modified date.
- Support for Windows file and directory management APIs.

具有其他SQL Server功能的

  • Compatibility,包括管理工具、服务以及基于文件和文件属性数据的关系查询功能。
票数 2
EN

Stack Overflow用户

发布于 2015-09-01 22:34:00

那得看情况。我个人更喜欢链接到表格内的图像。它更简单,目录中的文件可以单独备份。

你必须考虑几件事:

  1. 您将如何处理图像。只有链接可以让您轻松地将图像合并到网页中(使用web服务器的适当配置)。
  2. 镜像的数量-如果它们存储在数据库中并且数量很多-这将增加数据库和备份的大小。
  3. 是经常更改的镜像-在这种情况下,将它们放在数据库中可能会更好,以便在数据库中具有备份的实际状态。
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32334084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档