在PostgreSQL中存储图像的最佳方法

在PostgreSQL中存储图像的最佳方法,postgresql,blob,Postgresql,Blob,我正在开发一个网站,该网站将从数十万张图片开始,有望达到数亿张。大多数图像的物理大小不会超过300K。在PostgreSQL中存储这些数据的最佳方式是什么?我可以肯定的是,系统将使用模式、分区和表空间来管理存储。如果映像不超过300Kb,最简单的方法是使用bytea字段。 图像保存在数据库中:简单的备份将包括图像 或者,PostgreSQL可以处理大型对象: 图像将通过它存储在数据库的外部 或者,您可以将图像保留在文件系统中,将路径保存在文本字段中,并使用两个存储函数(例如,在pl/python

我正在开发一个网站,该网站将从数十万张图片开始,有望达到数亿张。大多数图像的物理大小不会超过300K。在PostgreSQL中存储这些数据的最佳方式是什么?我可以肯定的是,系统将使用模式、分区和表空间来管理存储。

如果映像不超过300Kb,最简单的方法是使用bytea字段。 图像保存在数据库中:简单的备份将包括图像

或者,PostgreSQL可以处理大型对象: 图像将通过它存储在数据库的外部


或者,您可以将图像保留在文件系统中,将路径保存在文本字段中,并使用两个存储函数(例如,在pl/python中)来写入和读取外部文件以存储和检索图像

我们用这些干什么?在某些情况下,最好将每个图像存储为一个文件,并将路径存储在数据库中。除了@DanielVérité的注释外,现在还可以使用外部数据包装器。@PaulDraper:我曾对一个web应用程序进行过快速基准测试,结果表明,对于不超过几MB的文件(我不记得实际的盈亏平衡点)将它们存储在Postgres中实际上(稍微)比使用文件系统快。对于SQL Server来说,这似乎是一样的:(我的测试是受那篇Microsoft文章的启发)@一篇没有名字的文章,很好。在web应用程序中显示图像。当前版本将所有图像保留在硬盘上,管理起来太难了。将发生的事情之一是,每一组图像将存储在一个单独的表空间/模式中,这样当用户使用给定的组时,它会很快完成而且很容易删除表空间/模式。如果我正确理解PosgreSQL,这也将简化特定分组的备份。您是如何达到300Kb限制的?@MilenA.Radev他可能是指OP希望存储的300K文件大小,而不是任何限制。