我想在某个地方存储一个序列化对象,然后环顾四周,意识到有几种方法可以做到这一点。
我正在考虑将文件存储在文件系统中的某个位置,并将文件位置存储为表格中的条目。
假设文件大约是100-500Kb,这是否适合这样做?或者使用bytea或blob更好的解决方案?
答案 0 :(得分:10)
小对象(500Kb)符合条件,可以正常工作。对大小的主要限制是你需要首先在服务器上然后在客户端实现内存中的整个字段(有很多方法可以实现它,但它们是有限的)。对于半兆字节,这应该不是问题,但如果你开始存储更大的对象,可能需要考虑一下。
将它存储在文件系统中并存储位置(或者将其存储在SERIAL序列中由代理主键命名)是处理较大文件的好方法,当然你也可以在这里应用它。缺点是你失去了事务完整性(你不能确定文件系统和数据库都已更新,所以你需要实现某种验证工具来定期运行以比较这些),可能更重要的是你可以'获得一致的备份(如果备份文件而不是db记录怎么办?或者反过来怎么办?)当然,有一些方法可以解决这个问题,但它很快就会变得比保存数据复杂得多桌子。