RT,系统中经常需要用户上传文件,而且大部分是比较大的dwg文件,开会讨论方案的时候有两种观点,
一种说直接存在数据库中,理由
1.可以把事务控制交给数据库
2.可以减少一部分开发量
3.适当的时候可以保存一小部分文件到FTP,用户需要的时候也可以在服务器查看
另一种说用ftp,理由
1.ftp速度快
2.文件都可以在服务器找到
3.还有的不记得了
想问一下大家在开发的时候大文件一般都是怎么保存的?这两种存储方式各有什么优缺点?
本人新手,纯学习
问题补充:
看来大文件似乎用FTP更好一些,但是ftp和数据库之间的事务问题大家一般是怎么解决的?
文件保存在服务器的文件夹中,速度上有优势,文件上传、下载只是通过链接读取文件,但是这种方法,不便于文件的管理。比如将文件夹转移位置,或服务器硬盘满了,把文件放到其他地方,就得更新文件的链接。当然也不利于文件资料的备份等。
而将文件放到数据库中,因为涉及到大容量的数据库的读写,速度上有点弱势,但是这种方法,文件全部放在数据库中,非常方便文件的查找、管理和备份等。
我们在项目中将采用以上两种方法结合的方法。即先把文件放到服务器一个特定的文件夹中,然后再上传到数据库中,这样当用户读取某个文件时,若文件夹中有这个文件,则直接读取,而不用访问数据库。若文件夹中没有这个文件,则从数据库中读取,再放到这个文件夹中,这样,当用户第二次访问同样一个文件,就不需访问数据库,而直接从文件夹中读取。
出自:http://www.wangchao.net.cn/bbsdetail_48379.html
。。。这问题不是早有定论了么,文件放ftp, svn等等服务器上,数据库只放文件的link
方数据库中,文件大了,查询速度可想而知!!
[quote="storm0912"]貌似oracle 11g有个组件提供了一种最佳解决方案[/quote]
叫Secure Files吧?放哪其实看应用需要,放ftp很难保证完整性和事务需要;如果真的很需要这两方面,可以考虑独立数据库来存放,否则还是用前人的经验解决吧。
这种就要看项目的具体需求是怎么样的
比如用户上传的文件的重要性,多大的用户并发数,对系统性能要求是怎么样的
当然数据库是对事务的处理一定比ftp强多了,
还是放在文件服务器比较好。数据库的IO很宝贵,不要浪费在这种文件存取上面。
数据库可以帮助管理员更快的完成数据操作工作。
FTP服务器可以方便的实现数据的传输。
你所说的是大文件上传,我觉得完全没有放在数据库里面的必要,你觉得呢?
首先就你们目前[quote]RT,系统中经常需要用户上传文件,而且大部分是比较大的dwg文件,开会讨论方案的时候有两种观点,[/quote]
建议你保持在数据库中:
原因有:
1.文件比较大,日积月累会占用服务器许多的资源,而且有可能造成文件丢失的现象
并且只能上传或者下载
2.如果用户访问比较多(上传下载),会造成服务器运行缓慢,势必会导致服务器上其它的程序访问受阻后服务器当机,而带来不必要的后果!
总之,文件保存,要应文件大小,用户量等诸多条件做参考而定!