sql >> Base de Datos >  >> RDS >> PostgreSQL

Almacenamiento de cadenas binarias largas (datos sin procesar)

En cuanto a PostgreSQL se trata, escriba text está fuera de cuestión. Es más lento, usa más espacio y es más propenso a errores que bytea para el propósito.

Hay básicamente 3 enfoques:

  1. Utilice el tipo bytea (básicamente el equivalente pg del tipo de blob de SQL).

  2. Utilice "objetos grandes ".

  3. Almacenar blobs como archivos en el sistema de archivos y solo almacena el nombre del archivo en la base de datos.

Cada uno tiene sus propias ventajas y desventajas.

1. es bastante simple de manejar pero necesita la mayor cantidad de espacio en disco. Se requiere algo de decodificación y codificación, lo que lo hace también lento. ¡Las copias de seguridad crecen rápidamente en tamaño!

2. es un poco incómodo de manejar, pero tiene su propia infraestructura para manipular los blobs, si necesita eso. Y puede hacer copias de seguridad separadas más fácilmente.

3. es, con mucho, la forma más rápida y utiliza la menor cantidad de espacio en disco. Pero no proporciona la integridad referencial que obtiene cuando almacena dentro de la base de datos.

Tengo varias implementaciones como esa para archivos de imagen:almacene una miniatura pequeña en un campo bytea para integridad referencial y referencia rápida. Almacene la imagen original como archivo en el sistema de archivos. Por supuesto, debe pensar un poco en cuándo y cómo eliminar los archivos obsoletos, cómo hacer una copia de seguridad de los archivos externos y demás.