2012-06-21 21 views
5

Estamos diseñando una actualización de un sistema actual (C++ \ CLI y C#). El sistema recopilará pequeñas cantidades (~ 1Mb) de datos de ~ 10K dispositivos (en el futuro cercano). Actualmente, se usan para guardar los datos del dispositivo en un archivo CSV (una tabla) y almacenarlos en una estructura de carpetas amplia.Base de datos SQL VS. Múltiples archivos planos (miles de CSV pequeños)

Los datos solo se insertan (crear/anexar a un archivo, crear una carpeta) nunca actualizados/eliminados. El procesamiento de datos se realiza leyendo muchos CSV a un programa externo (como Matlab). Principalmente ser utilizado para el análisis estadístico.

Existe una opción para comenzar a guardar estos datos en una base de datos MS-SQL. El tiempo de proceso (leer el CSV al programa externo) podría ser de unos pocos minutos.

  • ¿Cómo debemos elegir qué método usar?
  • ¿Uno de los métodos requiere mucho más almacenamiento que el otro?
  • En general, ¿cuándo se vuelve más rápido leer los datos brutos de una base de datos que leer los CSV? (10 archivos, 100 archivos? ...)

Agradecería sus respuestas, Los pros y contras son bienvenidos.

Gracias por su tiempo.

+0

Esta es una de esas preguntas que solo puede responder probándola. – Gabe

+0

También podría considerar el uso de una base de datos noSQL. – HLGEM

Respuesta

3

Bueno, si está utilizando datos en un CSV para obtener datos en otro archivo CSV, creo que SQL Server va a ser más rápido que cualquier otro que haya surgido. Sospecho que SQL Server sería más rápido en la mayoría de los casos, pero no puedo decirlo con certeza. Microsoft ha invertido muchos recursos para crear un SGBD que hace exactamente lo que está intentando hacer.

Según su descripción, parece que casi ha creado su propio DBMS en función de los datos de la tabla y la estructura de la carpeta. Sospecho que si cambió al uso de SQL Server, probablemente encuentre una serie de áreas donde las cosas son más rápidas y fáciles.

Pros posibles:

  • acceso más rápido
  • más fácil de manejar
  • Más fácil de ampliar en caso de necesitar
  • más fácil de hacer cumplir la integridad de datos
  • más fácil de diseñar relaciones más complejas

Posibles contras:

  • Usted tendría que reescribir su código existente para utilizar SQL Server en lugar de su sistema actual
  • Es posible que tenga que pagar para SQL Server, habría que comprobar para ver si se puede usar expreso

¡Buena suerte!

+0

Una de las mayores ventajas que veo para los archivos CSV es que puede acceder a una sola y editarla con bastante facilidad. Puede hacer lo mismo en SQL Server, pero debe tener una copia de Management Studio y saber cómo * editar * los datos. –

+0

cierto. Sin embargo, el estudio de administración es bastante fácil de aprender, y ofrecen formas de edición de datos totalmente basadas en la interfaz de usuario. –

+0

De acuerdo. Para un usuario comercial normal, la edición CSV puede ser más fácil. Pero por los sonidos de esto no parece ser un problema. –

0

Esta es una pregunta que muchos de nuestros clientes tienen en donde trabajo. A menos que necesite archivos planos para una infraestructura existente, o simplemente no cree que pueda averiguar SQL Server, o si solo tendrá unos pocos archivos con pequeñas cantidades de datos para administrar, estará mejor con SQL Server.

0

Si tiene la opción de usar una base de datos ms-sql, lo haría.

Mantener los datos en una estructura de carpetas amplia nunca es una buena idea. Leer sus datos implicaría leer varios archivos. Estos podrían almacenarse en cualquier lugar de su disco. Su tiempo de archivo-io sería bastante alto. El servidor SQL es una base de datos de producción y ya se han solucionado estos problemas.

Estás reinventando la rueda aquí. Así es como foxpro maneja los datos, un archivo por tabla. Por lo general, es una buena idea usar tecnología probada a menos que realmente esté creando un servidor de base de datos.

No tengo ninguna estadística de prueba aquí, pero la lectura de varios archivos casi siempre será más lenta que una base de datos si se trata de una gran cantidad de datos. Dado sus aproximadamente 10k dispositivos, debería considerar usar una base de datos estándar.

1

Me gustaría tratar de hacer esas preguntas un poco fuera de servicio.

Aproximadamente, ¿cuándo la lectura de los datos en bruto de una base de datos se convierte en más rápido que la lectura de la CSV de? (10 archivos, 100 archivos? ...)

Inmediatamente. La base de datos está optimizada (suponiendo que haya hecho su tarea) para leer los datos a una velocidad increíble.

¿Uno de los métodos toman significativamente más capacidad de almacenamiento que la otra ?

Hasta que tenga decenas de miles de archivos, probablemente no supondrá una gran diferencia. El espacio es barato, ¿verdad? Sin embargo, una vez que ingresas a las Grandes Ligas, notarás que el DB está ocupando mucho, mucho menos espacio.

¿Cómo debemos elegir qué método usar?

Gran pregunta. Todo en la base de datos siempre vuelve a la escalabilidad. Si solo tuviera un solo archivo CSV para leer, estaría listo. No se requiere DB Incluso docenas, no hay problema.

Parece que podría terminar en una posición en la que escalará a niveles en los que definitivamente querrá el motor de DB detrás de sus datos con bastante rapidez. En caso de duda, la creación de una base de datos es la apuesta segura, ya que aún podrá consultar ese valor de 100 GB de datos en un segundo.

Cuestiones relacionadas