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