¿Cuál es la mejor práctica para almacenar grandes cantidades de texto (en una base de datos o como un archivo) y qué hay de comprimirlo?

StackOverflow https://stackoverflow.com/questions/504544

Pregunta

Estoy creando una aplicación web que maneja correos electrónicos internos y otros fragmentos de texto frecuentes de tamaño pequeño a mediano entre usuarios y clientes. ¿Cuál es el mejor método para almacenar estos datos? ¿En una base de datos (MySQL) o como miles de archivos individuales? ¿Qué pasa con la compresión (gzcompress () de PHP o las funciones de compresión de MySQL)?

Esta no será una aplicación pública, por lo que la carga del usuario será mínima (menos de 20 usuarios a la vez). Sin embargo, habrá mucha comunicación yendo y viniendo todos los días dentro de la aplicación, por lo que espero que la cantidad de datos crezca bastante a medida que pasa el tiempo (por eso me gustaría comprimirla).

Me gustaría mantener los datos en una base de datos para facilitar el acceso y la portabilidad, pero algunos de los hilos que he visto aquí con respecto a las imágenes han sugerido usar el almacenamiento de archivos. ¿Qué te parece?

Gracias Seth

Editar para aclarar: no necesito ningún tipo de búsqueda en el texto, por eso me inclinaría a comprimirlo para ahorrar espacio.

¿Fue útil?

Solución

Para imágenes y documentos que ya están en un formato específico (Excel, documentos de Word, archivos PDF, etc.) prefiero el almacenamiento de archivos. Pero solo para texto sin formato probablemente preferiría usar una base de datos. Es más fácil replicar a través de máquinas para la conmutación por error, puede realizar búsquedas de subcadenas sobre el texto y, aunque no conozco un algoritmo específico para comprimirlo, creo que una base de datos sería una mejor manera de hacerlo. Pero solo si ya tiene solo el texto y es solo texto. Cualquier otro formato de documento que preferiría usar el almacenamiento de archivos.

Y a menos que me falte algo, usaría un CLOB en lugar de un BLOB, si es solo texto.

Otros consejos

Una de las razones principales para mantener los archivos en una base de datos es mantenerlos consistentes con el resto de los datos que está almacenando. Será más fácil hacer copias de seguridad, (re) implementar con conjuntos de datos predefinidos, etc. Además, es más fácil garantizar la integridad transaccional.

Uno de los beneficios de almacenar texto como archivos podría ser que es más fácil servirlos usando un servidor web, si este es el único beneficio restante de usar archivos que podría considerar almacenar en caché los archivos en el servidor web, eso dará usted realiza gran parte de la copia de seguridad y las transacciones de la base de datos, pero al mismo tiempo permite un poco de aceleración para las solicitudes http.

Hubiera elegido usar un DB. Describe un escenario en el que va a almacenar una gran cantidad de mensajes. No proporciona mucha información sobre el sistema, pero supongo que probablemente le gustaría ordenar, agrupar y aplicar varias otras propiedades a los mensajes. Sería mucho más fácil y probablemente más rápido mantener el mensaje con sus atributos en una base de datos en lugar de usar el almacenamiento de archivos.

Cuando se trata de compresión, no sé cuál de los métodos es más efectivo. Probablemente deberías probar ambos antes de elegir.

Me pregunto qué tan grande es esto " trozo medio " ;. Si el texto es solo mensajes escritos (menos de 10 KB), la compresión los hace aún más pequeños y no habría un gran impacto en el crecimiento de la base de datos. Hace que el desarrollo y el mantenimiento también sean mucho más fáciles de tener todo disponible con la consulta individual y no tener que obtener el contenido del archivo por separado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top