我想将图像存储在sql数据库中。图像大小在50kb到1mb之间。我读了一篇关于FileStream和FileTable的文章,但我不知道该选哪一个。每一行将有2个图像和一些其他字段。
图像永远不会被更新/删除,每天将插入大约3000行。
在这种情况下,推荐使用哪种方式?
发布于 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
发布于 2018-10-13 17:49:10
在SQL Server中,varbinary(max)可以是将数据存储在表中的标准varbinary(max)数据,也可以是将数据存储在文件系统中的FILESTREAM BLOBs对象。数据的大小和用途决定了您应该使用数据库存储还是文件系统存储。
如果满足以下条件,则应考虑使用FILESTREAM:
存储的
对于较小的对象,在数据库中存储varbinary(max) BLOBs通常可以提供更好的流性能。
FILETABLE的优势:
存储在
- 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功能的
发布于 2015-09-01 22:34:00
那得看情况。我个人更喜欢链接到表格内的图像。它更简单,目录中的文件可以单独备份。
你必须考虑几件事:
https://stackoverflow.com/questions/32334084
复制相似问题