¿Donde guardo mis archivos?

Bueno dias, estoy revisando una serie de posibilidades para almacenar mis archivos, tengo algo de experiencia guardando archivos y normalmente lo hago en la base de datos, en el file system segun que casos las 2 opciones son las mas comodas pero tambien tienen sus pros y sus contras.

Guardar los archivos en base de datos:

* Pros:
- Integridad.
- Seguridad.

* Contras
- Consultas pesadas.
- base de datos pesada.
- respaldos pesados.

En general lo malo es que esto merma el rendimiento, aunque se puede tener una tabla que se dedique exlusivamente a guardar archivos y la excluyes en la mayoria de tus consultas para que no pegue tanto, aun asi los respalos estarán pesados.

Guardar los archivos en File System.

* Pros:
- Comodidad
- No repercute en las consultas al sistema.
- Acceso rapido.

* Contras
- Poco seguro.
- Fragil integridad de datos.

Aquí solo se guardan las rutas de los archivos y se tiene que asignar una carpeta en el SO para su uso exlusivamente de ello, se tiene que cuidar los nombres de los archivos y tambien las carpetas, para que si el usuario1 subio archivo.txt y usuario2 subio archivo.txt no se sobreescriban unos con otros, a su vez esto también es peligroso por que si alguien borra un archivo la base de datos nunca lo sabrá.

La tercera opción es la que creo que tiene la solución a todos mis problemas, es decir utilizar una plataforma exlusiva para ello, en primera instancia pense en algunos nombres como google storage, dropbox, owncloud, alfresco.
Entre ellas salio una opción que nunca habia visto que se llama laserfiche, no pregunten de donde la saque.

En fin de estas opciones, como son archivos empresariales no puedo utilizar la nube para almacenar los archivos, ya que no necesito que salgan a internet, segun yo ni google, ni dropbox se puede hacer eso, asi que solo queda , owncloud, alfresco y laserfiche.

Se hizo una prueba de concepto con alfresco y funciono todo muy bien, tiene una version comunitaria, API REST(Esto es lo que creo mas importante por ahora en cualquier tipo de plataforma que necesito adquirir), tiene API's clientes de Java, soporta CMIS, lo usa la nasa, buena documentacion, si existe una comunidad, suena mucho en los hilos de java y funciona igual con javascript.

Se intento con owncloud pero la documentacion no esta tan buena, me da algo de desconfianza por el hecho de que los desarrolladores forkearon el proyecto y bueno ahora tienen fragmentación, en teoria tiene una API REST también, igual no me gusta por que esta en PHP( :P ).

Laserfiche, como es algo mas restrictivo no puedo hacer una prueba de concepto con el.

Con lo anterior supongo que ya estamos en contexto, así que las preguntas serían.

* ¿ Con cuerdas con los puntos anteriores en cuanto a el guardado en la base de datos y File System ?

* ¿ El utilizar una plataforma exlusiva para almacenar los archivos es mejor que las 2 opciones anteriores en general?

* ¿ Tienes experiencia con las plataformas antes mencionadas, que anecdota me podrias contar sobre ellas?

* ¿ Conoces alguna otra solución que pueda utilizar, menciona el nombre y tus conclusiones sobre ella ?

* ¿ Cuanto tiempo llevas y que volumen de datos estas manejando( Gigas, teras, petas, bits :P) ?

Espero sus respuestas y muchas gracias por compartir su experiencia.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de javadicto

En BD

Yo guardo mis archivos e imágenes en BD, pero lo hago en un tabla en particular que tiene un trato especial (indexado, tablespace, etc;), se tiene alrededor de 6 años trabajando así, con 500GB solamente en esa tabla.

NOTA: Los archivos tienen un peso promedio de 5KB

Que tal andan los backups

Bueno hasta aquí podria decir que con 500gb va bien la base de datos guardando archivos, la cosa es ¿como haces los backups?, ¿ Cuanto tiempo tardan aprox? y en ese contexto donde sabes cual es el promedio de cada archivo es una buena implementación, supongo.

El rollo aquí es que probablemente ese volumen de archivos lo termine llenando al paso de unos 6 meses, digamos que es mucho volumen por que planeo darle bateria a "N" aplicaciones, por eso lo del API REST y tratar de externarlo a una plataforma.

Imagen de javadicto

Historicos

Puedes generar estadísticas, para conocer las fechas y/o registros que muestran poco o nulo movimientos para pasarlo a discos históricos y solo mantener en linea aquello que realmente se consulta y/o actualizan.

El tema de los respaldos (no tengo mucha experiencia), creo que se puede resolver con un arreglo de disco RAID, dependiendo de la configuración que se utilice puedes resolver los escenarios de desastre que se presenten, mucho depende de tu presupuesto.

Respuestas

* ¿ Con cuerdas con los puntos anteriores en cuanto a el guardado en la base de datos y File System ?
- Creo que en general esta bien, algo que hay que agregar son los problemas cuando migras, en ambos casos puede ser un dolor de cabeza.

* ¿ El utilizar una plataforma exclusiva para almacenar los archivos es mejor que las 2 opciones anteriores en general?
Si las uso y si es mejor, zapatero a tus zapatos.

* ¿ Tienes experiencia con las plataformas antes mencionadas, que anécdota me podrías contar sobre ellas?
Si, alfresco solo para almacenar archivos y no usar sus otras características creo que te puede traer mas problemas que beneficios pero si la intención es centralizar todos tus documentos y crear un modelo documental es un buen comienzo, si, solo vas a usar este software para centralizar tus archivos y compartirlos considera un EFSS (owncloud)

* ¿ Conoces alguna otra solución que pueda utilizar, menciona el nombre y tus conclusiones sobre ella ?
SI, tanto con las que están en la nube como las on premise, alfresco creo que es la opción mas fuerte, al menos que tengas mucho presupuesto, pues hay productos de IBM, ORACLE, EMC u OpenText, eso si piensas en un ECM (que es la familia a la que pertenece alfresco), si vas por un EFSS por lo cual volvería a validar owncloud, y/o dale un ojo a este cuadro tal vez te ayude https://www.getfilecloud.com/compare-filecloud-vs-all-competitors/ a considerar otra opción.

Los costos de usar un ECM pueden ser muy altos, por lo que buscaría solo usar un EFSS

* ¿ Cuanto tiempo llevas y que volumen de datos estas manejando( Gigas, teras, petas, bits :P) ?
Llevo cerca de 6 años trabajando con estas herramientas y estos problemas y pues en volumen entre gigas y teras.

Gracias

Por ser algo mas enterprise que personal , creo que me iré por alfresco, lo vi por dentro y utiliza muchas tecnologías con las que estoy familiarizado, confió en ellas, también veo que tiene soporte para CMIS y tenemos algunos sistemas que se integran con el mismo y creo le podríamos sacar mayor jugo.