好吧,所以我正在开发一个应用程序,它将使用Linux后端运行Postgresql来提供图像到一个Windows的前端用C#.NET编写的框,虽然前端应该不重要。我的问题是:
>在Postgres中处理存储图像的最好方法是什么?
每个图像大约4-6百万像素,我们的存储量高达3000个。也许值得注意的是:这不是一个Web应用程序,最多只有两个前端同时访问数据库。
Re jcoby的答案:
bytea是“正常”列还意味着当您获取它时,该值被完全读入内存。相反,Blob,你可以流入stdout。这有助于减少服务器内存占用。特别是,当您存储4-6 MPix图像。
备份Blob没有问题。 pg_dump提供了“-b”选项以将大对象包括在备份中。
所以,我更喜欢使用pg_lo_ *,你可能猜到。
Re Kris Erickson的答案:
我会说相反:)。当映像不是您存储的唯一数据时,不要将它们存储在文件系统上,除非您必须这样做。这样的好处是始终确保数据的一致性,并使数据“整体”(DB)。 BTW,Postgresql是伟大的保持一致性。
然而,真的,现实通常太性能要求;-),它推送您从文件系统提供二进制文件。但即使如此,我倾向于使用DB作为二进制的“主”存储,所有其他关系一致链接,同时提供一些基于文件系统的缓存机制进行性能优化。