mal*_*ere 11 java postgresql hibernate blob
我用Hibernate 3.2和PostgreSQL 8.4开始了一个应用程序.我有一些byte[]字段映射为@Basic(= PG bytea),其他字段映射为@Lob(= PG大对象).为什么不一致?因为我是一个Hibernate菜鸟.
现在,这些字段最大为4 Kb(但平均为2-3 kb).PostgreSQL文档提到当字段很大时LO很好,但我没有看到"大"意味着什么.
我已经使用Hibernate 3.6升级到PostgreSQL 9.0,我不得不将注释更改为@Type(type="org.hibernate.type.PrimitiveByteArrayBlobType").这个bug带来了潜在的兼容性问题,我最终发现,与普通字段相比,Large Objects是一个很难处理的问题.
所以我想把它全部改成bytea.但我担心bytea字段是用Hex编码的,因此在编码和解码时会有一些开销,这会损害性能.
关于这两者的表现是否有良好的基准?有人做过切换并看到了不同之处吗?
但我担心 bytea 字段是以十六进制编码的
bytea 输入可以是十六进制或转义格式,这是你的选择。存储将是相同的。从版本 9.0 开始,输出默认为十六进制,但您可以通过编辑参数bytea_output来更改此设置。
我还没有看到任何基准。
基本上有些情况下每个都有意义.bytea更简单,通常更受欢迎.客户端库为您提供解码,这不是问题.
但是LOB具有一些简洁的功能,例如能够在其中进行搜索并将LOB视为字节流而不是字节数组.
"大"意味着"足够大,你不想一次性将它发送给客户." 从技术上讲,bytea仅限于1GB压缩,并且一个lob被限制为2GB压缩,但实际上你首先达到了另一个限制.如果它足够大,你不希望它直接在你的结果集中,并且你不想一次性地将它发送到客户端,使用LOB.
| 归档时间: |
|
| 查看次数: |
6287 次 |
| 最近记录: |