Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java web应用程序中存储文件?_Java_Mysql_Database_Database Design - Fatal编程技术网

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

如何在java web应用程序中存储文件?,java,mysql,database,database-design,Java,Mysql,Database,Database Design,这是一个与设计相关的问题 我有一个java web应用程序(连接到MySQL数据库)在tomcat上运行。它分别在linux和windows机器上运行(目前为止)。我应该存储作为输入的文件,其大小从500 KB到100 MB(最大值)不等。这些文件的用途是解析它们并获取所需的数据。我可以使用数据库模式中的“blob”来存储文件,访问它们以生成所需的输出,并将它们存储在MySQL数据库中。另外,我可以使用文件系统将文件存储在windows或linux文件系统中,并使用它们提取数据,将其存储在MyS

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

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

下面是我在比较文件系统和数据库时得出的一些优缺点

文件系统:

  • 通过操作系统自动索引文件
  • 更容易访问文件
  • 我用于其他表的MySQL数据库不存储大量数据(200个文件*50MB平均值=10GB数据)
  • 文件长度的变化对数据库没有多大影响(MySQL的典型blob大小是,TINYBLOB:255字节blob:65535字节(64 KB)MEDIUMBLOB:16777215字节(16 MB)LONGBLOB:4 GB,因此如果我的文件大小大于16MB,我应该将其存储为LONGBLOB。这意味着在大小范围内,我应该使用LONGBLOB存储500 KB或100 MB的文件
  • MySQL:

  • 更快的访问
  • 所有数据的单一位置。从文件和文件中提取的数据存储在一个位置
  • 阅读

    这也是一篇好文章:


    我认为这取决于您有多少读/写活动。我个人赞成将这些文件保存在数据库中,特别是如果您有像MongoDB这样的快速数据库。您将限制为100MG,这样它也不会变得那么大。

    您应该采用第一种方法,因为在任何一个月内,请求的数量都可能会增加,我也不会从文件系统进行备份很容易,正如您已经提到的mysql limit一样,在尝试
    INSERT
    SELECT
    100MB从
    LONGBLOB
    中插入时,可能会遇到数据包大小限制。
    blob
    之间的唯一区别是额外的字节数(1到4)被分配来保持长度。