日期:2014-05-18  浏览次数:20975 次

大量文件存储问题
每天有很多文件需要保存起来,是直接用2进制存入数据库还是只在数据库中存储路径好?
具体需求如下:
1.每天需要保存的文件大约在5000-6000张,每个文件大小约在600KB
2.有大约3000张需要通过网络专线传送,专线带宽2M(必要的话可以升级成4M)
3.每天的文件需要当天就能查询,一般是上午10点开始导入,下午3点多就要查询
4.查询频率,当天70%,3天-10天内50%,30天内20%,90天内10%
5.服务器硬盘1.5TB,双6核CPU,32G内存
6.不能影响上班时间网络传输,也就是最好不要在上班时间向远程服务器传送大量文件
7.每个子公司都是自己的sql server服务器

我的想法:
1.存2进制文件,需要查询时在转换成需要的文件格式
2.将当天的数据先保存在本地数据库中,晚上带宽空闲时和远程数据库同步,同步完成之后就清空本地的记录
3.每3个月将远程数据库中所有的数据备份到磁带上(磁带便宜),并清空远程数据库数据

本事是个菜鸟,能力有限,不知道这样是否可行,或者有更好的建议?

------解决方案--------------------
不要放进数据库,还是存绝对路径比较好。

以日期作为文件夹结构,年,月,日为文件结构层。

以单个文件不到1M来看,单个文件大概在4-5秒。如果数据不是集中出现,直接保存文件直接存储在远程服务器上,子公司数据库存储该文件的远程绝对地址即可。如果集中出现,按照你的想法,本地存文件,然后同步到远程服务器即可。

1.存2进制文件,需要查询时在转换成需要的文件格式 这个操作如果不是压缩,不推荐。既然涉及到查询,肯定要保证查询速度,源文件(压缩过的源文件)即可,不用做其他的文件转换操作。

另:与远程服务器同步文件时,最好不要单个文件的同步,将若干小文件压缩成一个大文件之后传送到服务器效率是比较高的。


------解决方案--------------------
这个问题确实不好搞,存二进制到数据库应该不是优先策略
------解决方案--------------------
探讨
不要放进数据库,还是存绝对路径比较好。

以日期作为文件夹结构,年,月,日为文件结构层。

以单个文件不到1M来看,单个文件大概在4-5秒。如果数据不是集中出现,直接保存文件直接存储在远程服务器上,子公司数据库存储该文件的远程绝对地址即可。如果集中出现,按照你的想法,本地存文件,然后同步到远程服务器即可。

1.存2进制文件,需要查询时在转换成需要的文件格式 这个操作如果不是压缩,不推……

------解决方案--------------------
存到远程服务器上。不推荐存到数据库中。只在数据库中保存文件的路径就行了。
------解决方案--------------------
最好是 存到服务器上 应用的时候 用本地的 空闲时上传更新的 尽量不要放到数据库 否则访问数据会很慢 影响效率