base de datos vs archivos planos


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

Author: noob, 2010-03-01

10 answers

  1. Las bases de datos pueden manejar consultas tareas, para que no tengas que caminar sobre archivos manualmente. Las bases de datos pueden manejar consultas muy complicadas.
  2. Las bases de datos pueden manejar tareas de indexación, así que si las tareas como obtener registro con id = x puede ser MUY rápido
  3. Las bases de datos pueden manejar el acceso multiproceso/multiproceso.
  4. Las bases de datos pueden manejar el acceso desde red
  5. Las bases de datos pueden buscar datos integridad
  6. Las bases de datos pueden actualizar datos fácilmente (véase 1))
  7. Las bases de datos son fiable
  8. Las bases de datos pueden manejar transacciones y acceso concurrente
  9. Las bases de datos +Ms le permiten manipular datos en forma muy amigable programador.
 80
Author: Andrey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-18 13:36:41

Esta es una respuesta que ya he dado hace algún tiempo:

Depende enteramente de la necesidades de aplicaciones específicas del dominio. Un muchas veces archivo de texto directo / binario el acceso a los archivos puede ser extremadamente rápido, eficiente, así como proporcionarle todas las capacidades de acceso a archivos de el sistema de archivos de tu sistema operativo.

Además, su lenguaje de programación lo más probable es que ya tiene un módulo (o es fácil de hacer uno) para análisis específico.

Si lo que necesitas son muchos anexos (INSERTOS?) y secuencial / poco acceso poca / ninguna concurrencia, los archivos son bien hecho.

Por otro lado, cuando su requisitos para la concurrencia, lectura/escritura no secuencial, atomicidad, permisos atómicos, su los datos son relacionales por naturaleza, etc., usted será mejor con un base de datos relacional u OO.

Hay mucho que puede ser realizado con SQLite3 , que es extremadamente ligero (menos de 300kb), ACIDO compatible, escrito en C / C++, y altamente ubicuo (si no lo es ya incluido en su lenguaje de programación -por ejemplo Python-, seguramente hay uno disponible). Puede ser útil incluso en archivos de base de datos tan grandes como 140 terabytes, o 128 tebibytes (Enlace al tamaño de la base de datos), es posible mas.

Si sus requisitos son más grandes, ni siquiera habría una discusión., ve por un RDBMS en toda regla.

Como usted dice en un comentario que "el sistema" es simplemente un montón de scripts, entonces usted debe echar un vistazo a pgbash.

 36
Author: Esteban Küber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:26

No lo construyas si puedes comprarlo.

Escuché esta cita recientemente, y realmente parece apropiado como una línea de guía. Pregúntate esto... ¿Cuánto tiempo pasó trabajando en la parte de manejo de archivos de su aplicación? Sospecho que se pasó 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 mucho menos tiempo manejando esta parte de su aplicación. Habrías tenido más tiempo para la verdad aspecto "empresarial" de tu aplicación.

 5
Author: G Mastros,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-01 15:41:06

Bases de datos todo el camino.

Sin embargo, si todavía tiene una necesidad de almacenar archivos, no tiene la capacidad de tomar un nuevo RDBMS (como Oracle, SQLServer, etc.), que buscar 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 archivos planos y se pueden transformar fácilmente aplicando un XSLT para una mejor legibilidad humana. XML es también es una excelente manera de transportar datos si es necesario.

Sugiero encarecidamente una base de datos, pero si no puede ir por esa ruta, XML es un segundo ok.

 5
Author: Scott Root,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-01 15:42:15

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.

Son más seguros; las bases de datos son más fáciles de respaldar de forma segura; tienen mecanismos para verificar si hay corrupción de archivos, lo que no sucede con los archivos planos. Una vez que la corrupción en su archivo plano migra a sus copias de seguridad, ya está, y es posible que ni siquiera lo sepa todavía.

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

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

 5
Author: Dean J,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-01 15:49:25

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

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

 3
Author: Victor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-01 15:42:34

Qué tipos de archivos no se mencionan. Si son archivos multimedia, siga adelante con los archivos planos. u probablemente solo necesita una base de datos para las etiquetas y alguna forma de asociar los "BLOBs externos" a los registros en la base de datos. pero si la búsqueda de texto completo es algo que necesita, no hay otra forma de hacerlo que migrar a una base de datos completa.

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

 3
Author: stillstanding,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-01 15:47:41

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

 2
Author: Oded,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-01 15:36:33

A menos que esté cargando los archivos en la memoria cada vez que arranque, use una base de datos. Así de simple.

Eso es asumiendo que sus universidades ya tienen el programa para manejar consultas a los archivos. Si no, utilice una base de datos.

 2
Author: Lay González,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-08 06:31:48

La diferencia entre la base de datos y los archivos planos se dan 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 sobre archivos planos.
  • La base de datos admite DML y DDL, mientras que los archivos planos no pueden soportar estos.

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

 2
Author: rashedcs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-25 04:55:52