文件系统VS在数据库中的文件保存

时间:2011-07-24 20:42:50

标签: java database file struts2

我正在为文件(图像,文档等)下载设计一个servlet(或Struts2中的操作)。 但我想知道哪种方法更好地保存文件系统和数据库中的文件只保留文件的路径或将文件保存在数据库中,如BLOB。 我知道当我对数据库进行查询时blob的速度较慢, 但如果我保留在数据库中,那么备份数据并保证一致性会更容易。 有什么建议吗?

3 个答案:

答案 0 :(得分:2)

我将数据存储在磁盘上是因为一个重要因素:性能。剩下的就是你的偏好。这是一个link,有更好的比较。

答案 1 :(得分:2)

我认为您提供了一个很好的解决方案:将文件本身存储在文件系统中,并在DB中引用。在关系数据库中存储媒体文件不会给你带来很大的好处,但会增加数据库量并降低性能(如@Amir Raminfar所述)。

这些天可能很好的方法是将文件存储在键值存储或所谓的NoSql数据库中,例如, Casandra或Redis。

答案 2 :(得分:2)

我从未使用过BLOB。例如。我只是将用户上传的照片存储在目录中。我没有太多理由使用BLOB来存储文件。你说它可能更容易备份 - 相反,这可能会成为一个很大的问题,至少在我们的情况下,因为我们有很多GB的照片,但数据库必须保持相当小,以便能够经常备份它使用PHPMyAdmin。