Almacenamiento de archivos en la base de datos Vs sistema de archivos

3 minutos de lectura

uno de mis clientes pide un Sistema de gestión de documentos para algunos miles de documentos en diferentes formatos, es decir, pdf, doc, docx, etc. Mi pregunta es cuál es la mejor manera de almacenar este archivo en la base de datos o en el sistema de archivos. ¿Qué tan fácil es asegurar un documento entre los dos enfoques?.

La recuperación rápida de los archivos es el requisito clave.

estoy usando mysql si eso ayuda

Saludos.

  • posible duplicado de Almacenamiento de documentos como blobs en una base de datos: ¿alguna desventaja?

    – Johan

    4 de agosto de 2011 a las 9:40

Almacenamiento de archivos en la base de datos Vs sistema
Sébastien VICENTE

Es posible que desee almacenarlo directamente en el sistema de archivos.

Al usar el sistema de archivos, tenga cuidado con:

  • Confidencialidad: Coloque los documentos fuera de su raíz de documentos de Apache. Luego, un controlador PHP suyo generará documentos.
  • Ruta fragmentada: no almacene miles de documentos en el mismo directorio, cree directorios diferentes. Puede fragmentar con un hash en el nombre de archivo, por ejemplo. Como /documents/A/F/B/AFB43677267ABCEF5786692/myfile.pdf.
  • Número de inodo: Puede quedarse sin inodos si almacena muchos archivos pequeños (puede que no sea su caso si almacena principalmente documentos PDF y de oficina).

Si necesita buscar estos documentos (fecha/título/etc…) es posible que desee almacenar metadatos en una base de datos para un mejor rendimiento.

para tu información, en esta pregunta MS SQL Server tiene SISTEMA DE ARCHIVOS tipo de columna (como un híbrido), pero por el momento MySQL no tiene una alternativa.

  • gracias No estoy familiarizado con la ruta fragmentada. ¿Puede proporcionarme algún recurso en línea, por ejemplo, tutoriales, etc.?

    – Sam Sansón

    4 de agosto de 2011 a las 10:52

  • Por ejemplo, no desea almacenar todo en app/data/. Haz un HASH de tu documento . Si el resultado del hash es 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e730, puede almacenar su archivo en app/data/2/c/f/2/2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e730 /$filename (2) “Distribuye” sus documentos en varios directorios más pequeños en lugar de uno solo muy grande. El ejemplo usa 4 caracteres, pero puede usar muchos más si es necesario (depende de la cantidad de documentos que tenga).

    – Sébastien VICENTE

    5 de agosto de 2011 a las 6:19

  • ¿Cuál es la ventaja de esto? Estoy esperando miles de documentos en el sistema, ¿se usa alguna regla para elegir la cantidad de caracteres según la cantidad de archivos?

    – Sam Sansón

    5 de agosto de 2011 a las 7:27

  • Tendrá una mejor E/S si evita los grandes directorios. Su E/S se degradará si usa demasiados subdirectorios. Entonces depende de usted equilibrar correctamente. No pongo más de 1000 archivos en un solo directorio. Entonces, diciendo 10 000 archivos, la fragmentación en el primer carácter está bien. La fragmentación en 4 caracteres fragmentará los archivos en 65 000 directorios diferentes (demasiado para usted). 16^4 y así sucesivamente.

    – Sébastien VICENTE

    5 de agosto de 2011 a las 7:40

Almacenamiento de archivos en la base de datos Vs sistema
johan

El uso del acceso al sistema de archivos para grandes bloques de datos significa, en general, un acceso más rápido y menos gastos generales que almacenarlos en una base de datos mysql.

Una publicación interesante y posiblemente relacionada: Almacenamiento de imágenes en DB: ¿sí o no?

para un alto rendimiento, debe usar el sistema de archivos, usando la función php glob y la interfaz JS. Terminé un proyecto como este en marzo.

  • gracias… pero mi mayor preocupación es la seguridad de los archivos, ya que el sistema tiene que almacenar archivos e informes muy confidenciales. ¿El sistema de archivos proporciona alta seguridad a los archivos?

    – Sam Sansón

    4 de agosto de 2011 a las 10:08

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad