【发布时间】:2011-06-01 10:21:12
【问题描述】:
我想在某处存储一个序列化对象,环顾四周后,我意识到有几种方法可以做到这一点。
我正在考虑将文件存储在文件系统中的某个位置,并将文件位置存储为表中的条目。
假设文件大约 100-500Kb,这是一种合适的方法吗?还是使用 bytea 或 blob 更好的解决方案?
【问题讨论】:
标签: database postgresql blob
我想在某处存储一个序列化对象,环顾四周后,我意识到有几种方法可以做到这一点。
我正在考虑将文件存储在文件系统中的某个位置,并将文件位置存储为表中的条目。
假设文件大约 100-500Kb,这是一种合适的方法吗?还是使用 bytea 或 blob 更好的解决方案?
【问题讨论】:
标签: database postgresql blob
小对象(500Kb)可以像 bytea 一样正常工作。大小的主要限制是您需要首先在服务器上实现整个内存字段,然后在客户端实现(有很多方法,但它们是有限的)。对于半兆字节,这应该不是问题,但如果您开始存储更大的对象,则可能需要考虑一下。
将其存储在文件系统中并存储位置(或通过 SERIAL 序列中的代理主键命名存储)是处理较大文件的好方法,当然您也可以在这里应用它。缺点是您失去了事务完整性(您无法确定文件系统和数据库都已更新,因此您需要实现某种验证工具来定期运行以比较它们),并且可能更重要的是您可以t 获得一致的备份(如果备份的是文件而不是 db 记录怎么办?或相反)当然也有处理这个问题的方法,但它很快变得比将数据存储在桌子。
【讨论】: