在Java EE 6应用程序(数据库/文件系统)中存储大量文件的最佳方法

时间:2014-01-22 14:22:50

标签: java hibernate postgresql persistence

我正在开发一个需要处理多个文档文件(PDF,DOC等)的应用程序。

我正在使用PostgresSQL 9.2将这些文件存储为大对象,并使用Hibernate Blob将其作为流写入和读取,以避免内存过载。

我的问题是,是否有最好的方法来处理它?或者在数据库中存储大量的二进制文件是一个好方法吗?也许将文件存储在文件系统中的速度更快,但这并不能保证数据的完整性和可扩展性。

2 个答案:

答案 0 :(得分:0)

这完全取决于您的需求和用例。至少在db中将它们存储为blob没有任何错误。如果您已拥有数据库并存储其他相关数据并且也需要以一致的方式使用它们,那么您的方法可能是唯一的好方法。

当然,如果您有一些数据库无法满足的要求,或者当您认为使用数据库时因为没有数据库通常满足的要求而过度使用时,您可能会想到其他方法。

如您所述,存储在文件系统中有一些缺点。但是如果你有一些限制,比如同一个名字没有被使用两次,只有一个实例正在编写同一个文件,不需要事务/回滚等等。文件系统方法在简单性方面获胜。

例如,如果您需要扩展,因为您存储的数据太多而一台计算机不足以存储它们,您可能需要考虑使用NOSQL技术来扩展存储。

你的问题是如此开放,我可以永远写下几个选项。

答案 1 :(得分:0)

根据你试图存储的数据类型,有时候hibernate并不是真的有用,对我来说这听起来像是可能是其中一种情况。将平面文件拉入Java对象可能最终不会给你带来太大的收益。您可能想要考虑将文件存储在面向文档的数据库中,例如MongoDB。你正在做的就是为这些类型的数据库制作的。