Profesor, estoy haciendo una base de datos en PostgreSQL y tengo la duda que tipo de datos usar para almacenar las fotos de los usuarios. Por lo que leí asumo que el bytea hex debe ser igual a blob. Estoy en lo correcto?
El estándar SQL incluye Binary Large Objects, usualmente llamados BLOBs. PostgreSQL tiene dos estrategias para almacenar BLOBs: si el objeto binario que estás manejando es suficientemente pequeño para ser manejado como un todo, usas BYTEA; si es muy grande, usas Pg Large Objects.
Si «fotos de los usuarios» son «fotos carné» para avatar, eso entra en la categoría BYTEA. Si son «cualquier foto que se le ocurra al usuario, sin límite de tamaño», probablemente son LO.
Los BYTEA se manejan a través de SQL tradicional, como una columna más. Tienes que ser cuidadoso en almacenar el tipo MIME apropiado, para que la aplicación cliente sepa que hacer con los bytes.
Los LO se almacenan asociados a cada fila, pero fuera de la fila, y para manipularlos necesitas funciones PG especiales, que están diseñadas para hacer streaming. Puedes almacenar MP3 y video digital en la base de datos sin afectar su desempeño, y entregarlas muy eficientemente a sockets de aplicaciones cliente cuando las requieran.
Si «fotos de los usuarios» son «fotos carné» para avatar, eso entra en la categoría BYTEA. Si son «cualquier foto que se le ocurra al usuario, sin límite de tamaño», probablemente son LO.
Los BYTEA se manejan a través de SQL tradicional, como una columna más. Tienes que ser cuidadoso en almacenar el tipo MIME apropiado, para que la aplicación cliente sepa que hacer con los bytes.
Los LO se almacenan asociados a cada fila, pero fuera de la fila, y para manipularlos necesitas funciones PG especiales, que están diseñadas para hacer streaming. Puedes almacenar MP3 y video digital en la base de datos sin afectar su desempeño, y entregarlas muy eficientemente a sockets de aplicaciones cliente cuando las requieran.