我有一个金融系统,需要附上PDF收据的每一个记录保存在我的系统。
这些收据将被一个适当的装置扫描到电脑上,并保存在PDF中,储存在我的数据库中。
今天,系统将PDF文件保存为varbinary(max)
,但是由于表中的行数,数据库的文件大小增长得太快了。平均文件大小约为1至2MB。
在不影响我的数据库性能的情况下存储这类文件的最佳方法是什么?
发布于 2015-12-14 19:51:30
您不会牺牲性能,就像使用var二进制(MAX)的数据库性能一样。您不需要搜索var二进制文件(MAX)。您没有为该列建立索引。
表中的优点是单次一致备份。不利的一面是更大的后援。
将文件传递给客户端var二进制文件(MAX)的效率将低于FILESTEAM或文件系统。
1-2毫巴相对较小。如果是200+ mb,那么您通常希望避免存储在var二进制文件(MAX)中。
如果单是表大小就有问题,那么费莱斯特亚姆可能是最好的解决方案。这不会影响数据库性能,也不会将文件存储在表中。
FILESTREAM使基于Server的应用程序能够在文件系统中存储非结构化数据(如文档和图像)。应用程序可以利用丰富的流API和文件系统的性能,同时维护非结构化数据和相应的结构化数据之间的事务一致性。
从许可的角度来看,我非常肯定FILESTREAM不算数据库大小。与使用10 not数据库限制的快递一样,FILESTREAM不算在内。
另一个好处是,如果您在PDF上有OCR和Adobe,您可以全文搜索文档。但是你也可以用FILESTREAM做这件事--从我看到的不是。
或者您可以完全独立地管理文件,并且只在SQL中存储路径。
发布于 2016-01-31 06:27:18
最好的方法,就像Documentum和其他主要包使用的那样,就是在数据库中存储一个路径和文件名,并将文件放在那个位置。
对于更小的数据库大小,有一个公共路径表,然后根据该行的短主键或候选键创建文件名;然后只需要存储路径ID和扩展。
如果您的财务合规规则要求完整性或篡改保护,您可以与您的遵从性或法律组检查,看看在数据库中存储散列或在该位置存储公钥/私钥签名是否足够。
https://dba.stackexchange.com/questions/123650
复制相似问题