Qual è la migliore strategia per il mantenimento di set di dati di grandi dimensioni?


9

Sto conducendo un progetto in cui registreremo i dati delle metriche. Mi piacerebbe conservare i dati per anni. Tuttavia, vorrei anche evitare che la tabella principale diventi gonfia di dati che, pur necessari per l'andamento a lungo termine, non sono necessari per la segnalazione a breve termine.

Qual è la migliore strategia per la gestione questa situazione? Archivia semplicemente i vecchi dati in un'altra tabella? Oppure "arrotolalo" tramite un consolidamento dei dati stessi (e poi salvalo su una tabella diversa)? O qualcos'altro interamente?

Ulteriori informazioni: stiamo usando SQL Server 2005.

4

Utilizziamo entrambi i metodi nel mio lavoro, ma leggermente diversi, manteniamo tutti i dati di vendita nella tabella principale per 30 giorni, quindi di notte (parte dei lavori notturni) i giorni in cui le vendite vengono raggruppate in riepiloghi (n qty di x prodotto venduto oggi ect) in una tabella separata per la segnalazione dei motivi e le vendite superiori a 30 giorni sono archiviate in un altro database, quindi una volta all'anno (entriamo negli anni fiscali) viene avviato un nuovo database di archivio. non proprio perfetto, ma ..

questo modo otteniamo i dati riassunti veloce, mantenere tutti i dati di vendita in corso a portata di mano e hanno uno spazio illimitato per i dati di archivio dettagliati. abbiamo provato a mantenerlo tutto in un unico database (in diverse tabelle) ma le dimensioni del file del database (interbase) sarebbero cresciute così tanto da trascinare il sistema verso il basso.

l'unico vero problema che abbiamo è l'accesso ai dati dettagliato che si estende su diversi database come collegare e scollegare è lento, e l'analisi deve essere fatto in codice piuttosto che SQL


1

una di queste opzioni sono eccellenti, ma in realtà dipende dal dominio del problema. Per cose come i saldi in contanti oi dati statistici, penso che riorganizzare i record e consolidarli sia il modo migliore, puoi quindi spostare i record arrotolati in una tabella di archivio parallela, inserendoli in modo tale da poterli "srotolare" se necessario. Ciò mantiene la tua tabella dati primaria pulita e veloce, ma ti consente di conservare i dati extra per il controllo o altro. La domanda chiave è, come si implementa il processo di "roll-up". In automatico, tramite un trigger o un processo lato server o tramite l'intervento dell'utente a livello di applicazione?


4

Se si utilizza SQL Server 2005, potrebbe essere un buon candidato per l'utilizzo di partitioned tables.


2

@ Jason - Io non vedo come, conservando i dati in file di testo normale vecchi vi permetterà di fare a lungo termine delle tendenze analisi facilmente sui dati.

@Jason - Credo che il mio punto sia che se qualsiasi tipo di analisi ad-hoc (cioè trend) deve essere fatto sui dati da parte degli uomini d'affari, arrotolare o archiviare i dati in file di testo non risolve realmente alcun problema. Naturalmente scrivere codice per consumare un file di testo è facile in molte lingue, ma quel problema è stato risolto. Inoltre, direi che gli RDBMS di oggi sono tutti estremamente duraturi quando vengono installati e mantenuti correttamente. Se non lo fossero, perché gestiresti un'azienda su uno (per non parlare dei dati di archivio)? Semplicemente non vedo il punto di archiviazione su un file di testo normale a causa del fatto che la durata dei file di testo è superiore a quella dei database.


2

A seconda dei vincoli di bilancio, come, ecc, questo suono come un candidato perfetto per un'applicazione di data warehouse. Questo in genere introdurrebbe un nuovo server da utilizzare come data warehouse. SQL Server 2005 supporta molte attività di questo tipo, inoltre potresti essere in grado di utilizzare servizi SQL Server aggiuntivi (ad esempio Analysis Services, Reporting Services) per fornire valore aggiunto ai tuoi utenti. (vedi http://www.microsoft.com/technet/prodtechnol/sql/2005/dwsqlsy.mspx)