我有一个应用程序,它使用嵌套目录如“6/0/3/6 / ....”将很多出版物存储为文件系统上的文件。文件不是很大(.jpg,.pdf,类似的文档),其中“只是”很多,运行数百GB。一旦存储在fs中,它们通常不会被重写,只能通过http。
提供通过此类文件进行搜索,版本控制痛苦慢。复制这些目录也相当麻烦。
这让我想到:将数据作为BLOB存储在数据库中是不是更好(我的应用程序无论如何都使用postgres用于各种目的)。
哪一个-fs或可扩展的sql db - 可以更好地执行?或者PG会在如此重的压力下崩溃吗?
答案 0 :(得分:1)
FileSystem还有其他一些大的缺点:
处理BLOB时< 1GB,我会100%将它们存储在数据库中,因为所有好的系统数据库都可以正确处理BLOB。 (它们以与结构化数据不同的方式存储它,但对您来说不可见)
顺便提一下,当您阅读http://www.postgresql.org/about/
时最大数据库大小=>无限
答案 1 :(得分:1)
使用文件系统可以更轻松地实现增量备份 。所以从部分伤害恢复。只要您不需要原子更改集,只需要单独的文件版本控制,就可以在文件系统上轻松进行版本控制。
另一方面,使用数据库可以获得事务行为 - 原子提交,多个并发一致的快照等。它会降低磁盘存储效率并增加访问开销。这意味着您不能直接从文件系统sendfile()
数据,您必须执行几个内存副本和一些编码才能获取和发送文件。
对于高性能服务器,文件系统几乎肯定会赢,除非你真的需要原子提交和多个版本的同时一致的可见性。
您可能也应该阅读许多相关的过去问题,大多数问题是将图像存储在数据库或文件系统中是否更好。