您的位置:知识库 » 数据库

数据库系统中文件附件保存的最佳办法

作者: ChenJacklondon  发布时间: 2010-10-28 15:37  阅读: 2233 次  推荐: 0   原文链接   [收藏]  
摘要:文件附件怎样在数据库存储,软件开发人员,都会碰到这个问题,这里作者提出了一种新的思路。

  软件开发人员,都会碰到这个问题,也都会被这个问题困住一两个星期。

  以 Java/JDK 为例, JDBC 驱动程序中,对这个问题也经过多年、历经多次版本升级,才能解决。而且代码还不能跨数据库。 

  C#也一样,总之是麻烦。

  其实,这个问题可以有另一思路,更简单,更高效。值得系统架构师们考虑:

  1.在数据库中,单独用一个表,处理所有各类文件,只保存文件的信息

TT_BINARY_DATA_INFO (bin_uuid, file_size, file_name,data_type,compress_format,memo,created_dt,created_by,updated_dt,updated_by,updated_cnt)

  上面的表中, compress_format 为文件压缩格式,可以不压缩,也可以用zip 压缩格式,或者其它。

  2.在指定目录中,保存文件内容(按年月划分子目录,或者不分子目录),文件名为 uuid.dat

  采用这一种方案的原因是,数据库系统通常处理不好二进制数据,要么数据多了很占用磁盘空间,导致数据库性能下降、备份时间更长;要么是文件大了无法保存。而采用以上方案,这些问题都不存在:备份更快了;文件大了也能轻松应付;程序更容易写;不论哪种数据库都可以用。

  这一解决方案,目前在国内基本无人知晓,但在国外,举例来说,Bugzilla/phpBB 都提供了选项,用户可以把文件内容保存在数据库中、或者保存在指定目录中。并且,它们的文档中,都推荐把文件内容,存放在指定目录中下。想必它们经过认真的对比,发现“把文件内容,存放在指定目录中下”更好吧。我也觉得这种方法更好,自从知道这种解决方法,我把我所负责的项目,都转换成这种方式了,效果很不错。

0
0
标签:文件附件

数据库热门文章

    数据库最新文章

      最新新闻

        热门新闻