¿Cuándo se debe preferir una base de datos para almacenar los datos en lugar de almacenarlos en un archivo de texto?
Wikipedia nos dice que una base de datos es una colección organizada de datos . Según esa medida, su archivo de texto es una base de datos. Continúa diciendo:
Los datos generalmente se organizan para modelar aspectos relevantes de la realidad de una manera que respalde los procesos que requieren esta información. Por ejemplo, modelar la disponibilidad de habitaciones en hoteles de una manera que permita encontrar un hotel con vacantes.
Esa parte es subjetiva: no nos dice específicamente cómo deben modelarse los datos o qué operaciones deben optimizarse. Su archivo de texto consta de varios registros distintos, uno para cada día, por lo que está modelando un aspecto de la realidad de una manera que sea relevante para su problema.
Me doy cuenta de que cuando dices "base de datos" probablemente estés pensando en algún tipo de sistema de administración de bases de datos relacionales, pero pensar en tu archivo de texto como una base de datos cambia tu pregunta de "¿cuándo debo usar una base de datos?" a "¿qué tipo de base de datos debo usar?" Ver las cosas de esa manera hace que la respuesta sea más fácil de ver: use una mejor base de datos cuando la que ya no cumpla con sus requisitos.
Si su script Python y su archivo de texto simple funcionan lo suficientemente bien, no hay necesidad de cambiarlos. Con solo un nuevo registro por día y las computadoras cada vez más rápidas cada año, sospecho que su solución actual podría ser viable durante mucho tiempo. El valor de una década de datos le daría solo 3650 registros que, una vez analizados, probablemente requerirían menos de 75 kilobytes.
Imagine que en lugar de un pequeño registro por día, decidió registrar cada pregunta formulada en CodeReview, quién la hizo y cuándo. Además, también recopila todas las respuestas y los metadatos relevantes. Usted podría almacenar todos los que en un archivo de texto, pero un archivo plano, sería difícil encontrar información cuando lo necesitas. Habría demasiados datos para leer todo en la memoria, por lo que cada vez que quisiera encontrar una pregunta o respuesta, tendría que escanear el archivo hasta encontrar lo que estaba buscando. Cuando deseaba encontrar todas las preguntas formuladas por un usuario determinado, tendría que escanear todo el archivo. Si desea encontrar todas las preguntas que tienen "errores" como etiqueta, tendría que escanear el archivo.
Eso sería terriblemente lento, por lo que puede decidir acelerar las cosas creando algunos índices que le indiquen dónde buscar en el archivo para encontrar un registro dado. Podría tener un índice para preguntas, otro para usuarios, un tercero para respuestas, etc. Cuando quisiera encontrar una pregunta, buscaría en el índice de preguntas (mucho más pequeño), obtendría la posición de la pregunta en el archivo de datos principal y saltaría rápidamente al lugar correcto en el archivo. Esa sería una gran mejora en el rendimiento. De hecho, eso es más o menos lo que es un sistema de gestión de bases de datos.
Por lo tanto, use un DBMS cuando sea lo que necesita. Úselo cuando tenga muchos datos, cuando necesite poder acceder a esos datos rápidamente y tal vez de una manera que no pueda predecir por completo desde el principio. Si tiene diferentes tipos de datos, diferentes tipos de registros, que están conectados entre sí, use un RDBMS para que pueda relacionar los diversos registros de manera adecuada.