用于FAST存储文件/ BLOB的SQL或文件系统?

时间:2013-05-21 17:10:47

标签: sql linux postgresql filesystems blob

我有一个应用程序,它使用嵌套目录如“6/0/3/6 / ....”将很多出版物存储为文件系统上的文件。文件不是很大(.jpg,.pdf,类似的文档),其中“只是”很多,运行数百GB。一旦存储在fs中,它们通常不会被重写,只能通过http。

提供

通过此类文件进行搜索,版本控制痛苦慢。复制这些目录也相当麻烦。

这让我想到:将数据作为BLOB存储在数据库中是不是更好(我的应用程序无论如何都使用postgres用于各种目的)。

哪一个-fs或可扩展的sql db - 可以更好地执行?或者PG会在如此重的压力下崩溃吗?

2 个答案:

答案 0 :(得分:1)

FileSystem还有其他一些大的缺点:

  1. 您可能会遇到用户权利问题
  2. 非原子
  3. 处理BLOB时< 1GB,我会100%将它们存储在数据库中,因为所有好的系统数据库都可以正确处理BLOB。 (它们以与结构化数据不同的方式存储它,但对您来说不可见)

    顺便提一下,当您阅读http://www.postgresql.org/about/

    最大数据库大小=>无限

答案 1 :(得分:1)

使用文件系统可以更轻松地实现增量备份 。所以从部分伤害恢复。只要您不需要原子更改集,只需要单独的文件版本控制,就可以在文件系统上轻松进行版本控制。

另一方面,使用数据库可以获得事务行为 - 原子提交,多个并发一致的快照等。它会降低磁盘存储效率并增加访问开销。这意味着您不能直接从文件系统sendfile()数据,您必须执行几个内存副本和一些编码才能获取和发送文件。

对于高性能服务器,文件系统几乎肯定会赢,除非你真的需要原子提交和多个版本的同时一致的可见性。

您可能也应该阅读许多相关的过去问题,大多数问题是将图像存储在数据库或文件系统中是否更好。