En cuanto a PostgreSQL se refiere, tipo text
está fuera de la cuestión. Es más lento, usa más espacio y es más propenso a errores que bytea
para este propósito.
Hay básicamente 3 enfoques:
uso de tipo bytea (básicamente la pg equivalentes del tipo blob SQL)
uso "large objects"
manchas almacenar como archivos en el sistema de archivos y solo almacena el nombre de archivo en la base de datos.
Cada uno tiene sus propias ventajas y desventajas.
es bastante simple de manejar, pero necesita más espacio en disco. Se requiere algo de decodificación y codificación, lo que también lo hace lento. ¡Las copias de seguridad crecen rápidamente en tamaño!
es un poco incómodo de manejar, pero tiene su propia infraestructura para manipular las manchas, si es necesario. Y puede hacer copias de seguridad separadas más fácilmente.
es, con mucho, la forma más rápida y utiliza el menor espacio en disco. Pero no proporciona la integridad referencial que obtiene cuando almacena dentro de la base de datos.
que tienen una serie de implementaciones por el estilo para archivos de imagen: almacenar una pequeña miniatura en un campo bytea para la integridad referencial y de referencia rápida. Almacene la imagen original como archivo en el sistema de archivos. Por supuesto, debe pensar cuándo y cómo eliminar archivos desactualizados, cómo hacer una copia de seguridad de los archivos externos y demás.
Gran respuesta. Gracias. – teustis
¿Hay datos recientes que comparen estos enfoques? Sería maravilloso si hubiera algunas comparaciones objetivas. – beldaz