在 SQL Server 中存储对象几乎相等的最佳方法是什么,存储文件可能是PDF或图像。
您建议我使用文件系统(存储路径)还是数据库?
答案 0 :(得分:4)
小于256K的对象最好存储在数据库中而对象中 大于1M的文件最好存储在文件系统中
您需要决定如何处理256K和1M之间的对象。
阅读本微软研究文章 - 解释了这一点:To BLOB or Not To BLOB: Large Object Storage in a Database or a Filesystem
答案 1 :(得分:2)
就像前面提到的答案一样,你应该考虑一下你是否真的需要在DB中存储二进制文件。这可能是也可能不是一个好主意。另请参阅此SO question。
假设您的数据集相对较小并且您想要向数据库提供blob存储责任,那么您应该考虑是否可以使用FILESTREAM。请注意,它排除了数据库镜像,但在优势方面 - 它在备份/恢复方案中提供了出色的事务支持和完整性。在文件系统中直接存储文件时,做正确的事情是非常痛苦的。阅读有关FileStream here的更多信息。
假设您无法使用FileStream或存储的文件数量非常小,那么我更喜欢拥有一个单独的blob存储表,其中只包含二进制+技术PK。永远不要扫描该表,只需插入/删除/ getById。另外,请勿使用image
类型,因为它已被弃用(link):
ntext,text和image数据类型将在Microsoft SQL Server的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用nvarchar(max),varchar(max)和varbinary(max)。