Base de datos SQL VS. Múltiples archivos planos (miles de CSV pequeños)

Estamos diseñando una actualización de un sistema actual (C ++ \ CLI y C #). El sistema recopilará cantidades pequeñas (~ 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.

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.

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

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

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

Gracias por tu tiempo.

0
Esta es una de esas preguntas que solo puedes responder probándola.
agregado el autor Gabe, fuente
También podría considerar usar una base de datos no SQL.
agregado el autor HLGEM, fuente

4 Respuestas

Bien, si está usando datos en un CSV para obtener datos en otro CSV, supongo 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 basado en datos de tabla y estructura de carpetas. 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.

Posibles Pros:

  • Acceso más rápido
  • Más fácil de administrar
  • Más fácil de expandir si necesita </​​li>
  • Más fácil de aplicar integridad de datos
  • Es más fácil diseñar relaciones más complejas

Posibles contras:

  • Tendría que volver a escribir su código existente para usar SQL Server en lugar de su sistema actual
  • Es posible que tengas que pagar por SQL Server, deberías verificar si puedes usar Express

¡Buena suerte!

0
agregado
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.
agregado el autor Abe Miessler, fuente
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.
agregado el autor Mike Bailey, fuente
Convenido. 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.
agregado el autor Mike Bailey, fuente

Me gustaría tratar de sacar esas preguntas un poco fuera de orden.

Aproximadamente, cuando se convierte en lectura de los datos brutos de una base de datos   más rápido que leer los CSV? (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 requiere mucho más almacenamiento que el   otro?

Hasta que tengas decenas de miles de archivos, probablemente no hará mucha 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 deberíamos 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ías terminar en una posición en la que escalarás a niveles en los que definitivamente querrás el motor de DB detrás de tus 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.

0
agregado

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 estadísticas 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.

0
agregado

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
agregado