Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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:在数据库中存储文件流是一种不好的做法吗?_Java_Jpa_Filestreams - Fatal编程技术网

java:在数据库中存储文件流是一种不好的做法吗?

java:在数据库中存储文件流是一种不好的做法吗?,java,jpa,filestreams,Java,Jpa,Filestreams,我正在读取某组文件的文件流,并将其作为bytea类型存储在数据库中。但是,当我试图从数据库读取流并将这些流写入文件时,确实需要很长时间才能完成,最后我得到了一个内存不足异常。有没有其他方法可以更有效地完成这项工作,无论是否涉及数据库?数据库的设计都考虑了一个关键问题: When having a bunch of data, where we don't know the kinds of reports that will be generated, how can we store the

我正在读取某组文件的文件流,并将其作为bytea类型存储在数据库中。但是,当我试图从数据库读取流并将这些流写入文件时,确实需要很长时间才能完成,最后我得到了一个内存不足异常。有没有其他方法可以更有效地完成这项工作,无论是否涉及数据库?

数据库的设计都考虑了一个关键问题:

When having a bunch of data, where we don't know the kinds of reports
that will be generated, how can we store the data in a manner that
preserves the data's inner relationships and permits any reporting
format we can think of. a
文件缺少数据库的几个关键特征。文件始终按顺序具有单个字符结构。它们还缺乏任何集成报告构建的方法,并且报告通常局限于简单的搜索,这些搜索几乎没有上下文,结果不会显示在文件的其余部分

简而言之,如果您没有使用数据库的功能,请不要使用数据库

许多人确实在数据库中存储文件;因为,他们有一个方便的工具,他们不编写对文件系统存储的支持,而是剪切和粘贴数据库存储代码。让我们探讨一下后果:

备份和恢复会出现问题,因为数据库的大小增长非常快,而执行备份和恢复的带宽是数据库大小的函数。 在故障安全数据库中重建复制需要更长的时间。我已经看到一些复制过程太长,以至于冗余无法跟上主数据库中的更改速度。 意外引用大量文件的查询会占用CPU,可能会导致无法访问系统的其余部分,这取决于数据库。 返回这些查询结果的带宽会窃取系统资源,从而阻止其他查询在某些数据库上更好地传递结果,而在其他数据库上则更糟。
数据库的设计考虑了一个关键问题:

When having a bunch of data, where we don't know the kinds of reports
that will be generated, how can we store the data in a manner that
preserves the data's inner relationships and permits any reporting
format we can think of. a
文件缺少数据库的几个关键特征。文件始终按顺序具有单个字符结构。它们还缺乏任何集成报告构建的方法,并且报告通常局限于简单的搜索,这些搜索几乎没有上下文,结果不会显示在文件的其余部分

简而言之,如果您没有使用数据库的功能,请不要使用数据库

许多人确实在数据库中存储文件;因为,他们有一个方便的工具,他们不编写对文件系统存储的支持,而是剪切和粘贴数据库存储代码。让我们探讨一下后果:

备份和恢复会出现问题,因为数据库的大小增长非常快,而执行备份和恢复的带宽是数据库大小的函数。 在故障安全数据库中重建复制需要更长的时间。我已经看到一些复制过程太长,以至于冗余无法跟上主数据库中的更改速度。 意外引用大量文件的查询会占用CPU,可能会导致无法访问系统的其余部分,这取决于数据库。 返回这些查询结果的带宽会窃取系统资源,从而阻止其他查询在某些数据库上更好地传递结果,而在其他数据库上则更糟。
一般来说,数据库不是用来存储文件的,文件系统是用来存储文件的。因此,将文件存储在文件系统上,并从数据库指向它们——即,将文件的路径存储在数据库中。获取内存不足异常:不必一次将整个文件保存在内存中。逐条读写。谢谢你们的回复,@Henry你的意思是从数据库中一个文件一个文件地读,而不是全部读?分享你的代码。将二进制数据放在数据库中本质上没有什么错,但正如蜘蛛Boris所说,将它们存储在文件系统中可能更有意义。不过,除非您决定将所有内容都读入主内存,否则不应通过简单地读取和写入字节流来产生OutOfMemoryError。。。但新时代给出了有争议的解决方案,云多节点数据库自然提供了新的虚拟文件系统等。。。。Hadoop和家庭。有时候,奇怪的决定是可以接受的。我的评论严格地说是理论层面的,我不谈论细节一般来说,数据库不是用来存储文件的,文件系统是。因此,将文件存储在文件系统上,并从数据库指向它们——即,将文件的路径存储在数据库中。获取内存不足异常:不必一次将整个文件保存在内存中。逐条读写。谢谢你们的回复,@Henry你的意思是从数据库中一个文件一个文件地读,而不是全部读?分享你的代码。将二进制数据放在数据库中本质上没有什么错,但正如蜘蛛Boris所说,将它们存储在文件系统中可能更有意义。不过,除非您决定将所有内容都读入主内存,否则不应通过简单地读取和写入字节流来产生OutOfMemoryError。。。但是新技术
mes提供有争议的解决方案,云多节点数据库自然提供新的虚拟文件系统等。。。。Hadoop和家庭。有时候,奇怪的决定是可以接受的。我的评论严格地说是在理论层面上,我不谈论细节自由和投票赞成,但新的云解决方案给了f/e备份问题威慑力。备份不存在,复制是“新备份”,讲得很短,我理解差异。对于每个年龄段的单身程序员:同意回答同意并投票赞成,但新的云解决方案给了f/e备份问题威慑力。备份不存在,复制是“新备份”,讲得很短,我理解差异。对于每个年龄段的单身程序员:同意答案