我正在构建一个应用程序,它将存储与记录相关的小图像文件(通常可能小于 1 MB)。我正在考虑 MSSQL 中的 FILESTREAM 选项,但我对文档有点困惑。
Access FILESTREAM Data with Transact-SQL中的文档指出:
您可以使用 Transact-SQL 更新文件系统文件中的数据;但是,当您必须将大量数据流式传输到文件时,您可能不想这样做。
如果我需要用它的新版本更新文件,除了使用 T-SQL“更新”命令之外还有什么其他选择?
Create Client Applications for FILESTREAM Data中的文档甚至更进一步说,在 filestream 列可以为空的情况下,您不应该插入或删除数据:
避免在包含非空 FILESTREAM 列的表中进行插入和删除操作。插入和删除操作可以修改用于垃圾回收的 FILESTREAM 表。这可能会导致应用程序的性能随着时间的推移而下降。
如果您不应该在文件流可能为空的表中插入或删除文件,那么在并非所有记录都有文件但该表正在进行大量事务(包括插入和删除)的情况下,您会怎么做? 我的意思是,如果没有......好吧......插入数据,你还要如何插入数据以供以后阅读?
听起来 FILESTREAM 选项更多地用于存档文件(或非结构化数据),一旦保存,实际上只能通过读取操作引用。
我知道我一定遗漏了一些东西,但是文档对我来说似乎有点混乱。
是否有更好的 FILESTREAM 教程或文档?
您对该功能的理解是正确的。
是的。但是,欢迎您执行更新和删除,请记住它可能会对性能产生负面影响。
对于您的用例,对于大小约为 1 MB 的小文件,您可能不会很快遇到问题。
如果您要对图像进行修改,您还可以查看FileTable ,它通过 FILESTREAM 公开 SMB 共享。