如何在java Web应用程序中存储文件?

时间:2015-06-23 04:47:34

标签: java mysql database database-design

这是一个与设计相关的问题。

我在tomcat上运行了一个java Web应用程序(连接到MySQL数据库)。它分别在linux和windows机器上运行(截至目前)。我应该存储作为输入的文件,其大小从500 KB到100 MB(最大)不等。使用这些文件是为了解析它们并获取所需的数据。我可以使用' blob'在数据库模式中存储文件,访问它们以生成所需的输出并将它们存储在MySQL数据库中。另外,我可以使用文件系统将文件存储在windows或linux文件系统中,并使用它们来提取数据,将其存储在MySQL db中。在任何一个月里,我将保存近200个不同长度的文件。我无法决定选择哪种实施方式?

以下是我比较文件系统与数据库的一些优缺点。

文件系统:

  1. 按操作系统自动索引文件。
  2. 更容易访问文件。
  3. 我用于其他表的MySQL数据库不存储大量数据(200个文件* 50 MB平均值= 10GB数据)。
  4. 不同长度的文件对DB来说并不重要(MySQL的典型blob大小为,TINYBLOB:255字节BLOB:65,535字节(64 KB)MEDIUMBLOB:16,777,215字节(16 MB)LONGBLOB:4 GB因此,如果我的文件大小> 16MB,我应该将其存储为LONGBLOB。这意味着对于大小范围,我应该使用LONGBLOB来存储500 KB文件或100 MB文件。
  5. MySQL:

    1. 访问速度更快。
    2. 所有数据的单个位置。从文件和文件中提取的数据存储在一个位置。
    3. ..

1 个答案:

答案 0 :(得分:0)

阅读https://dba.stackexchange.com/questions/2445/files-in-the-database-or-not

这也是一篇好文章:http://www.revsys.com/blog/2012/may/01/three-things-you-should-never-put-your-database/

我认为这取决于你有多少读/写活动。如果您拥有像MongoDB这样的快速数据库,我个人赞成将这些文件专门保存在数据库中。你设置了100MG的限制,所以它也不会那么大。