base de datos vs. archivos planos

La empresa para la que trabajo intenta cambiar un producto que usa formato de archivo plano a un formato de base de datos. Estamos manejando archivos bastante grandes de datos (es decir, 25 GB / archivo) y se actualizan realmente rápido. Necesitamos ejecutar consultas que acceden aleatoriamente a los datos, así como de forma contigua. Estoy tratando de convencerlos de las ventajas de usar una base de datos, pero algunos de mis colegas parecen reacios a esto. Así que me preguntaba si ustedes pueden ayudarme aquí con algunas razones o enlaces a publicaciones sobre por qué deberíamos usar las bases de datos, o al menos aclarar por qué los archivos planos son mejores (si lo son).

  1. Las bases de datos pueden manejar tareas de consulta, por lo que no es necesario que recorra los archivos manualmente. Las bases de datos pueden manejar consultas muy complicadas.
  2. Las bases de datos pueden manejar tareas de indexación, por lo que si las tareas como obtener registro con id = x pueden ser MUY rápidas
  3. Las bases de datos pueden manejar el acceso multiproceso / multiproceso.
  4. Las bases de datos pueden manejar el acceso desde la red
  5. Las bases de datos pueden vigilar la integridad de los datos
  6. Las bases de datos pueden actualizar los datos fácilmente (ver 1)
  7. Las bases de datos son confiables
  8. Las bases de datos pueden manejar transacciones y acceso concurrente
  9. Las bases de datos + ORM te permiten manipular datos de una manera muy amigable con los progtwigdores.

Esta es una respuesta que ya di hace tiempo:

Depende completamente de las necesidades de la aplicación específica del dominio. Muchas veces el acceso directo a archivos de texto / archivos binarios puede ser extremadamente rápido y eficiente, además de brindarle todas las capacidades de acceso a archivos del sistema de archivos de su sistema operativo.

Además, su lenguaje de progtwigción probablemente ya tiene un módulo integrado (o es fácil de hacer uno) para el análisis específico.

Si lo que necesita son muchos anexos (¿INSERTOS?) Y secuencial / pocos acceden poco / nada, los archivos son el camino a seguir.

Por otro lado, cuando sus requisitos de concurrencia, lectura / escritura no secuencial, atomicidad, permisos atómicos, sus datos son relacionales por naturaleza, etc., estará mejor con una base de datos relacional u OO.

Hay mucho que se puede lograr con SQLite3 , que es extremadamente ligero (menos de 300kb), cumple con ACID, está escrito en C / C ++ y es muy ubicuo (si no está incluido en su lenguaje de progtwigción, por ejemplo Python), seguramente hay uno disponible). Puede ser útil incluso en archivos db de hasta 140 terabytes o 128 tebibytes ( Enlace al tamaño de la base de datos ), más.

Si sus requisitos fueran más grandes, ni siquiera habría una discusión, opte por un RDBMS completo.

Como dices en un comentario que “el sistema” no es más que un conjunto de scripts, entonces deberías echarle un vistazo a pgbash .

No lo construyas si puedes comprarlo.

Escuché esta cita recientemente, y realmente parece apropiado como una línea guía. Pregúntese esto … ¿Cuánto tiempo pasó trabajando en la parte de manejo de archivos de su aplicación? Sospecho que se gastó una buena cantidad de tiempo optimizando este código para el rendimiento. Si hubiera estado utilizando una base de datos relacional todo el tiempo, habría pasado considerablemente menos tiempo manejando esta parte de su aplicación. Habría tenido más tiempo para el verdadero aspecto “comercial” de su aplicación.

Bases de datos todo el camino.

Sin embargo, si todavía tiene una necesidad de almacenar archivos, no tiene la capacidad de asumir un nuevo RDBMS (como Oracle, SQLServer, etc.), que mirar en XML.

XML es un formato de archivo de estructura que le ofrece la capacidad de almacenar cosas como un archivo, pero le da poder de consulta sobre el archivo y los datos dentro de él. Los archivos XML son más fáciles de leer que los planos y se pueden transformar fácilmente aplicando un XSLT para una mejor legibilidad humana. XML también es una excelente forma de transportar datos si es necesario.

Sugiero fuertemente una base de datos, pero si no puedes ir por esa ruta, XML es un segundo bien.

Son más rápidos; a menos que esté cargando todo el archivo plano en la memoria, una base de datos permitirá un acceso más rápido en casi todos los casos.

Están más seguros; las bases de datos son más fáciles de hacer copias de seguridad; tienen mecanismos para verificar la corrupción de archivos, que los archivos planos no. Una vez que la corrupción en su archivo plano migra a sus copias de seguridad, ya está listo, y tal vez ni siquiera lo sepa.

Ellos tienen más características; las bases de datos pueden permitir que muchos usuarios lean / escriban al mismo tiempo.

Son mucho menos complejos para trabajar, una vez que están configurados.

¿Y una base de datos no relacional (NoSQL) como SimpleDB de Amazon, Tokio Cabinet, etc.? He oído que Google, Facebook, LinkedIn los están usando para almacenar sus enormes conjuntos de datos.

¿Puede decirnos si sus datos están estructurados, si su esquema es fijo, si necesita una fácil replicabilidad, si los tiempos de acceso son importantes, etc.?

qué tipos de archivos no se mencionan Si son archivos multimedia, continúe con los archivos planos. Probablemente solo necesite un DB para las tags y alguna forma de asociar los “BLOB externos” a los registros en el DB. pero si la búsqueda de texto completo es algo que necesita, no hay otra manera de ir, pero migrar a una base de datos completa.

otra cosa, su sistema de archivos podría proporcionar el techo en lo que se refiere al número de archivos físicos.

Las habilidades de consulta ad hoc de SQL son motivo suficiente para mí. Con un buen esquema e indexación en las tablas, esto es rápido y efectivo y tendrá un buen rendimiento.

A menos que cargue los archivos en la memoria cada vez que arranque, use una base de datos. Simple como eso.

Eso es asumiendo que sus universidades ya tienen el progtwig para manejar las consultas a los archivos. Si no, entonces usa una base de datos.

La diferencia entre la base de datos y los archivos planos se da a continuación:

  • La base de datos proporciona más flexibilidad mientras que el archivo plano proporciona menos flexibilidad.

  • El sistema de base de datos proporciona consistencia de datos mientras que el archivo plano no puede proporcionar consistencia de datos.

  • La base de datos es más segura que los archivos planos.
  • Soporte de base de datos DML y DDL mientras que los archivos planos no pueden soportarlos.

  • Menos redundancia de datos en la base de datos mientras que más redundancia de datos en archivos planos.