Inicié una aplicación con Hibernate 3.2 y PostgreSQL 8.4. Tengo algunos byte[]
campos que se mapearon como @Basic
(= PG bytea) y otros que se mapearon como @Lob
(= PG Large Object). ¿Por qué la inconsistencia? Porque era un novato de Hibernate.PostgreSQL: BYTEA vs OID + ¿Objeto grande?
Ahora, esos campos tienen un máximo de 4 Kb (pero el promedio es de 2-3 kb). La documentación de PostgreSQL mencionaba que los OA son buenos cuando los campos son grandes, pero no vi lo que significaba "grande".
He actualizado a PostgreSQL 9.0 con Hibernate 3.6 y estaba atascado para cambiar la anotación a @Type(type="org.hibernate.type.PrimitiveByteArrayBlobType")
. Este error ha provocado un posible problema de compatibilidad, y finalmente descubrí que los objetos grandes son difíciles de manejar, en comparación con un campo normal.
Así que estoy pensando en cambiarlo a bytea
. Pero me preocupa que los campos bytea
estén codificados en hexadecimal, por lo que hay cierta sobrecarga en la codificación y decodificación, y esto dañaría el rendimiento.
¿Hay buenos puntos de referencia sobre el rendimiento de ambos? ¿Alguien ha hecho el cambio y ha notado la diferencia?
También no se almacena como hexadecimal, y creo que libpq (y tal vez incluso el protocolo) tiene una interfaz para las transferencias binarias de ambos. –