用 PostgreSQL 存图片等 binary 有什么坑吗

6 天前
 liyafe1997

如题,大概每个主条目下面关联有几张到一两百张不等的图片/文档之类的附件,每张图最大 500KB (入库时超大会自动压缩),文档也是不超过 500KB 。

目前测试数据(几十/百来个主条目)跑起来感觉挺香的,也没见什么性能问题。特别是设置好外键和 cascade delete 之后,主条目删除会自动把存 binary 的表中关联的附件一并干掉,比放文件系统好维护。文件系统还要自己处理数据关联和清理逻辑。

就是不知道以后数据量大了会有什么坑,预计之后主条目有数万个这样的量级。

5541 次点击
所在节点    PostgreSQL
90 条回复
thealert
5 天前
@sagnitude #79 那估计你是没做过百度,高德的这种地图服务,如果他们用的是你这种模式当我没说就好
sagnitude
5 天前
@thealert 你也知道他们是面对十几亿人的服务,我可没说我这套服务可以无缝 scale 到全国十几亿客户端,我只是告诉楼主,至少在他的公司做到百度高德的级别之前,他这样做没问题
cookgo
5 天前
我发现我的某个项目和楼主的应用场景很像,但是我用的 MySQL 。我是用 blob 存储二进制数据,这个二进制数据就是用户在前端手写签名后,把签名图片转成二进制存在一个独立的中间表。
为啥这么做?离线部署的业务,服务器环境不可靠,所有数据能存数据库就存数据库,出问题了检查数据库数据就可以了,防止背锅。
thealert
5 天前
@sagnitude #82 好的兄弟,明白
bronyakaka
5 天前
搭建个本地对象存储存图片,数据库存 id 即可;嫌麻烦直接本地建多级目录存储,数据库存路径;
qqjt
5 天前
用就是了,io 不是问题,PostgreSQL 就是吊,一把梭。
liyafe1997
4 天前
@adoal 正解,我的心态就是如此
cj323
4 天前
刚毕业第一份工作用 mongo 干过,唯一遇到的坑是 mongo 当时不支持几十 MB 的文件。本来想修,结果当时带头人直接怼了用户不让存大文件。后来也有新同事说改对象存储更正规些,也被带头人怼回去了哈哈。讲究一个不到万不得已不优化。
cs8425
4 天前
GIS 相关+1 @sagnitude #35 是正解
小碎档太多了, 不是塞 db 就是塞 zip 这类的东西聚合成较大的档案来储存跟交换
尤其是 3D 相关的, 一个图层只包含小小一个区域随便就 700 多 M(700 多 x 百万)个档案, 至少我司这边的资料大多都是
一般常用 WMTS 图砖也不少, 能算出多少数量
例如 level 8 这层, 全球范围就是 4^8 = 65536 个档案
然后一般提供的 level 都是 0 到 18~22 左右
也就是 4^0 + 4^1 + 4^2 +....+4^22 个档案...
各位可以自行算一下(狗头
hd7771
3 天前
数据库有 acid 保证带来额外开销。
此外如果文件只有很小的修改,对于数据库来说也会全量更新。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1161291

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX