2012-06-21 19 views
5

Stiamo progettando un aggiornamento per un sistema corrente (C++ \ CLI e C#). Il sistema raccoglierà piccole quantità (~ 1Mb) di dati da dispositivi ~ 10K (nel prossimo futuro). Attualmente, vengono utilizzati per salvare i dati del dispositivo in un CSV (una tabella) e archiviarli tutti in una struttura di cartelle ampia.Database SQL VS. Più file flat (Migliaia di CSV piccoli)

I dati vengono inseriti solo (creare/aggiungere a un file, creare una cartella) mai aggiornati/rimossi. L'elaborazione dei dati viene eseguita leggendo molti file CSV in un programma esterno (come Matlab). Utilizzato principalmente per analisi statistiche.

C'è un'opzione per iniziare a salvare questi dati in un database MS-SQL. Il tempo di elaborazione (la lettura dei CSV per il programma esterno) potrebbe richiedere alcuni minuti.

  • Come scegliere quale metodo utilizzare?
  • Uno dei metodi richiede molto più spazio di archiviazione rispetto all'altro?
  • Approssimativamente, quando leggere i dati non elaborati da un database diventa più veloce della lettura dei CSV? (10 file, 100 file? ...)

Apprezzerei le vostre risposte, Pro e Contro sono i benvenuti.

Grazie per il vostro tempo.

+0

Questa è una di quelle domande a cui puoi rispondere solo provandolo. – Gabe

+0

Si potrebbe anche considerare l'utilizzo di un database noSQL. – HLGEM

risposta

3

Bene se si stanno utilizzando i dati in un CSV per ottenere dati in un altro CSV, suppongo che SQL Server sarà più veloce di qualsiasi cosa si sia venuta a creare. Sospetto che SQL Server sarebbe più veloce nella maggior parte dei casi, ma non posso dirlo con certezza. Microsoft ha messo molte risorse per creare un DBMS che faccia esattamente quello che stai cercando di fare.

Sulla base della descrizione, sembra che tu abbia quasi creato il tuo DBMS in base ai dati della tabella e alla struttura delle cartelle. Sospetto che se passassi a utilizzare SQL Server probabilmente troverai una serie di aree in cui le cose sono più veloci e più facili.

Possibili Pro:

  • Accesso più rapido
  • più facile da gestire
  • Più facile per espandere se avete bisogno di
  • Più facile da far rispettare l'integrità dei dati
  • più facile progettare relazioni più complesse

Possibile Contro:

  • Sarebbe necessario riscrivere il codice esistente per utilizzare SQL Server al posto del tuo sistema attuale
  • Potrebbe essere necessario pagare per SQL Server, si dovrebbe controllare per vedere se è possibile utilizzare Express

Buona fortuna!

+0

Uno dei maggiori vantaggi che vedo per i file CSV è che puoi andare in uno solo e modificarlo facilmente. Puoi fare lo stesso in SQL Server, ma devi avere una copia dello studio di gestione e sapere come effettivamente * modificare * i dati. –

+0

Vero. Lo studio di gestione è piuttosto facile da ottenere, e offrono metodi di modifica dei dati interamente basati sull'interfaccia utente. –

+0

concordato. Per un normale utente aziendale, la modifica CSV potrebbe essere più semplice. Ma dai suoni di esso non sembra essere un problema. –

0

Questa è una domanda che molti dei nostri clienti hanno dove lavoro. A meno che non siano necessari file flat per un'infrastruttura esistente, o semplicemente non pensi di poter capire SQL Server, o se avrai solo pochi file con una piccola quantità di dati da gestire, starai meglio con SQL Server.

0

Se si ha la possibilità di utilizzare un database ms-sql, lo farei.

Il mantenimento di dati in una struttura di cartelle di grandi dimensioni non è mai una buona idea. Leggere i tuoi dati implicherebbe la lettura di diversi file. Questi potrebbero essere memorizzati ovunque sul tuo disco. Il tuo tempo di file-io sarebbe piuttosto alto. Poiché SQL Server è un database di produzione, questi problemi sono già stati risolti.

Stai reinventando la ruota qui. Ecco come foxpro gestisce i dati, un file per tabella. Di solito è una buona idea usare una tecnologia comprovata a meno che non si stia realizzando un server di database.

Non ho alcuna statistica di test qui, ma la lettura di diversi file sarà quasi sempre più lenta di un database se si ha a che fare con una quantità significativa di dati. Dati i tuoi dispositivi da 10k, dovresti prendere in considerazione l'utilizzo di un database standard.

1

Mi piacerebbe provare a rispondere a queste domande un po 'fuori ordine.

Approssimativamente, quando leggere i dati non elaborati da un database diventa più veloce della lettura dei CSV? (10 file, 100 file? ...)

Immediatamente. Il database è ottimizzato (supponendo che tu abbia fatto i compiti a casa) per leggere i dati a tariffe incredibili.

Uno dei metodi richiede molto più spazio di archiviazione rispetto allo ?

Fino a quando non ci si trova tra decine di migliaia di file, probabilmente non farà troppa differenza. Lo spazio è economico, giusto? Tuttavia, una volta entrati nei grandi campionati, noterete che il DB occupa molto, molto meno spazio.

Come scegliere quale metodo utilizzare?

Grande domanda. Tutto nel database torna sempre alla scalabilità. Se avessi solo un singolo file CSV da leggere, saresti a posto. Nessun DB richiesto. Anche a dozzine, nessun problema.

Sembra che si potrebbe finire in una posizione in cui si scala a livelli in cui si vorrà sicuramente il motore DB dietro i dati abbastanza rapidamente. In caso di dubbi, la creazione di un database è la scommessa sicura, dal momento che sarai ancora in grado di interrogare i 100 GB di dati in un secondo.

Problemi correlati