2010-03-01 26 views
55

La empresa para la que trabajo intenta cambiar un producto que usa formato de archivo sin formato 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).base de datos vs. archivos planos

+7

Debería mencionar de qué tipo de estructura de datos está hablando aquí. Si cada uno de esos archivos de 25 GB se traduce en 25 filas de 1 GB cada una, probablemente esté mejor con sus archivos planos. –

+0

Tengo más curiosidad por saber por qué sus colegas no quieren usar una Base de datos relacional como su almacén de datos. Geezus – Jeff

+0

todo depende de todo tipo de variables. Imposible decir que uno es mejor que el otro. –

Respuesta

73
  1. bases de datos puede manejar la consulta tareas, por lo que no tiene que caminar sobre archivos manualmente. Las bases de datos pueden manejar consultas muy complicadas.
  2. bases de datos pueden manejar las tareas de indexación, por lo que si tareas como obtener el registro con id = x puede ser muy rápido
  3. Las bases de datos pueden manejar el acceso multiproceso/multiproceso.
  4. bases de datos pueden manejar el acceso de red
  5. bases de datos pueden ver los datos integridad
  6. bases de datos pueden actualizar datos fácilmente (ver 1))
  7. bases de datos son fiables
  8. bases de datos pueden manejar las transacciones y concurrentes acceso
  9. Las bases de datos + ORM le permiten manipular los datos de una manera muy amigable con los programadores.
2

Las habilidades de consulta SQL ad hoc 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.

4

No lo construya si puede 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.

+0

En realidad, toda la aplicación son solo un par de extraños scripts bash ... todo el sistema es una demostración de un solo hombre moviendo archivos. Triste, lo sé ... – hyperboreean

+2

Genial, pero la última vez que revisé las mejores bases de datos son gratis. – rook

+4

Por desgracia, lo contrario es igualmente cierto. Un dicho mejor es "Compre buenas soluciones que se adapten a sus necesidades si existen, de lo contrario compórtalas" –

5

Databases 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 que contiene. 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 una base de datos, pero si no puede seguir esa ruta, XML es un segundo bien.

+3

Pero Oracle y SQL Server cuestan dinero, ¿por qué pagar algo cuando es mejor gratis? MySQL todo el camino. – rook

+3

Si tienen un archivo CSV de 25 gb, fácilmente podría duplicar su tamaño (si no más) con etiquetas XML para filas y columnas. Solo decir una hinchazón significativa es una consideración al pasar de archivos planos a XML. –

+4

@Scott Root: Personalmente, no me gusta el XML porque lo veo como un método pesado de transmisión de datos. – hyperboreean

3

¿Qué pasa con 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 replicabilidad fácil, si los tiempos de acceso son importantes, etc.?

+0

Estamos investigando eso también ... primero debemos asegurarnos de que todos estamos en sintonía. Sin embargo, si necesita ejecutar algunos informes complejos, no estoy seguro de cómo nosql maneja esto. – hyperboreean

3

qué tipos de archivos no se mencionan. Si son archivos multimedia, continúe con los archivos planos. Probablemente solo necesite un DB para las etiquetas 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 puede proporcionar el techo en cuanto a la cantidad de archivos físicos.

4

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 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.

Tienen más funciones; 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.

32

Esta es an answer I've already given hace algún tiempo:

que depende enteramente de las necesidades de aplicación específicas de dominio. A muchas veces el archivo de texto directo/binario acceso a archivos puede ser extremadamente rápido, eficiente, así como también le proporciona todas las capacidades de acceso a archivos del sistema de archivos de su sistema operativo.

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

Si lo que necesita es que muchos anexa (inserciones?) Y unos pocos de acceso secuencial/ poco/no concurrencia, los archivos son la manera ir.

Por otro lado, cuando sus requisitos de concurrencia, lectura no secuencial/escritura, atomicidad, permisos atómicas, sus datos relacional es por la naturaleza, etc., que será mejor con un base de datos relacional o OO.

Hay mucho que se puede lograr con SQLite3, que es extremadamente ligero (menos de 300 kb), ácido compatible, escrito en C/C++ y altamente ubicua (si no lo está ya incluido en su lenguaje de programación -por ejemplo Python-, seguramente hay uno disponible). Puede ser útil incluso en archivos db de hasta 140 terabytes o 128 tebibytes (Link to Database Size), posible más.

Si sus requisitos son mayores, ni siquiera habría una discusión, vaya por un RDBMS completo.

Como dices en un comentario que "el sistema" es simplemente un conjunto de scripts, entonces deberías echarle un vistazo al pgbash.

2

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

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

1

Diferencia entre bases de datos y archivos planos se indican a continuación:

  • base de datos proporcionan más flexibilidad, mientras archivo plano proporcionan 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 admitir estos.

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

Cuestiones relacionadas