Necesito almacenar archivos de datos binarios en una base de datos PostgreSQL que se ejecuta en un servidor Ubuntu. Inicialmente habrá unas pocas docenas de archivos de aproximadamente 250 kb de tamaño cada uno. Sin embargo, la cantidad de archivos aumentará con el tiempo. Es posible que a veces necesite extraer datos de los archivos para otros análisis posteriores.
He realizado algunas investigaciones sobre la antigua cuestión de almacenar datos binarios como BLOB o referencias. Ambos obviamente tienen sus pros y sus contras. ¿Hay algún problema específico relacionado con PostgreSQL que deba tener en cuenta? ¿Es preferible un método u otro si deseo extraer datos de los archivos, ya sea a través de una función PostgreSQL o mediante un programa externo de Python?
Si tuviera que almacenar los archivos de datos directamente en la base de datos, ¿sería mejor almacenarlos en una tabla separada con una clave externa que haga referencia a la tabla "principal", en lugar de en la tabla que contiene todos los demás campos?
He leído la pregunta y las respuestas aquí ; un comentario sugiere que es mejor almacenar archivos binarios por referencia (en el sistema de archivos) en Linux. Mis preguntas aquí se relacionan específicamente con PostgreSQL y con la extracción de datos de los archivos para diversos análisis.
Actualización: pregunta similar .
fuente
Respuestas:
Creo que debería almacenar los datos en la base de datos como una
bytea
columna normal . De esa forma, obtiene todas las ventajas de una base de datos y puede procesar los datos utilizando las funciones de la base de datos (e incluso PL / Python, si lo desea). Los elementos de datos más grandes se almacenarán automáticamente fuera de línea, por lo que no habría razón para que introduzca otra referencia indirecta.Las principales razones para almacenar objetos binarios grandes fuera de la base de datos serían si son demasiado grandes para poder almacenarlos y recuperarlos en un momento satisfactorio, si hinchan la base de datos más allá de lo práctico, o si necesita acceder a los archivos como archivos desde Una aplicación separada. Nada de eso se aplica allí, por lo que puedo decir.
fuente