我正在工作的求职网站(使用asp.net 3.5),其中用户可以上传一份或多份简历。数据库为sql server 2005。关于存储这些文档的建议是什么?我应该将其作为blob存储在数据库中,还是只将路径存储在数据库中并将文档保留在物理文件夹中?有人能提一下每个wrt性能和可伸缩性的优缺点吗?
谢谢!
发布于 2009-02-19 02:11:29
在数据库中存储文件可以为您提供:
(+)更轻松的内部管理,磁盘上没有孤立文件
(+)一致的编程和访问模型(授权)
(-)数据库增长过快,会增加备份时间和保存备份文件所占用的磁盘空间
我不认为这两个选项的伸缩性都比另一个好。如果您预计会有非常多的文档,那么就会遇到目录中文件数量的限制(要么是作为绝对限制,要么是因为目录查找在某个点开始执行得非常差)。
发布于 2009-02-19 02:18:58
将您的数据保存在数据库中将使管理日期变得更容易。您不必确保数据库中的数据与文件系统上的数据(文件路径)同步。
话虽如此,但重要的是要认识到,在数据库中存储大型blob时可能会影响性能。幸运的是,已经在这一领域进行了一些研究,以调查可能的情况。我建议你看看微软研究院关于这个问题的this paper。希望这能有所帮助。
此外,我应该提到的是,微软SharePoint将其Word文档(以及其他文件)作为blobs存储在SQL Server数据库中。您可以阅读有关此here的更多信息。
发布于 2009-02-19 02:40:19
没有什么是你不能同时做到的--解析文档并将重要的元信息(如联系人信息、常用单词等)存储到索引列中,存储文档的路径。这就是我为高可用性(高达2100万次/月) db所做的,但我们提供的是媒体文件,但文件大小和主体大致相同。
https://stackoverflow.com/questions/563697
复制相似问题