Was ist die beste Strategie für die Speicherung großer Datenmengen?


9

Ich leite ein Projekt, bei dem wir Metriken aufzeichnen werden. Ich möchte die Daten jahrelang aufbewahren. Ich möchte aber auch vermeiden, dass die primäre Tabelle mit Daten überschwemmt wird, die für langfristige Berichte erforderlich sind, obwohl sie für langfristige Trends erforderlich sind.

Was ist die beste Strategie für den Umgang mit dieser Situation? Einfach die alten Daten in eine andere Tabelle archivieren? Oder "rollen" Sie es durch eine Konsolidierung der Daten selbst (und speichern Sie sie dann in einer anderen Tabelle ab)? Oder etwas ganz anderes?

Zusätzliche Informationen: wir sind mit SQL Server 2005.

4

Wir verwenden beide Methoden bei meiner Arbeit, aber etwas anders, wir behalten alle Verkaufsdaten in der primären Tabelle für 30 Tage, dann nachts (Teil der nächtlichen Jobs) werden die Tage Verkäufe in Zusammenfassungen (n von x Produkt heute verkauft ect) in einer separaten Tabelle für die Berichterstattung, und Verkäufe über 30 Tage werden in einer anderen Datenbank archiviert, dann einmal pro Jahr (wir gehen auf Steuer Jahre) eine neue Archiv-Datenbank gestartet wird. nicht gerade perfekt aber ..

so erhalten wir die Zusammenfassungsdaten schnell, behalten alle aktuellen Verkaufsdaten zur Hand und haben unbegrenzten Platz für die detaillierten Archivdaten. Wir haben versucht, alles in einer Datenbank zu speichern (in verschiedenen Tabellen), aber die Dateigröße der Datenbank (interbase) würde so groß werden, dass sie das System nach unten ziehen würde.

das einzige wirkliche Problem, das wir haben, ist detaillierte Daten zugreifen, die mehrere Datenbank umfasst, wie Verbinden und Trennen ist langsam, und die Analyse hat vielmehr im Code getan werden als SQL-


1

eine dieser beiden Optionen sind ausgezeichnet, aber es hängt wirklich von der Problemdomäne. Für Dinge wie Geldbilanzen oder statistische Daten denke ich, dass das Aufrollen und Konsolidieren der Datensätze der beste Weg ist. Sie können dann die aufgerollten Datensätze in eine parallele Archivtabelle verschieben und sie so abschlüsseln, dass Sie sie "ausrollen" können notwendig. Dadurch bleibt Ihre primäre Datentabelle sauber und schnell, Sie können jedoch die zusätzlichen Daten für Auditing oder ähnliches beibehalten. Die Schlüsselfrage ist, wie Sie den Roll-up-Prozess implementieren. Entweder automatisch, über einen Trigger- oder serverseitigen Prozess oder durch Benutzereingriff auf Anwendungsebene?


4

Wenn Sie SQL Server 2005 verwenden, diese kann ein guter Kandidat für die Verwendung partitioned tables sein.


2

@Jason - Ich sehe nicht, wie das Speichern von Daten in einfachen alten Textdateien es Ihnen ermöglicht, langfristige Trendanalysen leicht auf den Daten durchzuführen.

@Jason - Ich denke, wenn ich irgendeine Art von Ad-hoc-Analyse (dh Trending) auf Daten von Geschäftsleuten ausführen muss, löst das Aufrollen oder Archivieren der Daten in Textdateien wirklich nicht irgendwelche Probleme. Natürlich ist es in vielen Sprachen einfach, Code zu schreiben, um eine Textdatei zu konsumieren, aber dieses Problem wurde gelöst. Außerdem würde ich behaupten, dass die heutigen RDBMS alle extrem haltbar sind, wenn sie richtig eingerichtet und gewartet werden. Wenn sie nicht wären, warum würden Sie ein Geschäft auf einem laufen lassen (geschweige denn Daten darauf archivieren)? Ich sehe einfach nicht den Sinn der Archivierung in einer einfachen Textdatei, weil die Haltbarkeit von Textdateien der von Datenbanken überlegen ist.


2

Je nach Einschränkungen wie Budget usw. klingt dies wie ein perfekter Kandidat für eine Data Warehouse-Anwendung. Dies würde typischerweise einen neuen Server zur Verwendung als Data Warehouse einführen. SQL Server 2005 unterstützt viele dieser Funktionen standardmäßig. Außerdem können Sie möglicherweise zusätzliche SQL Server-Dienste (z. B. Analysis Services, Reporting Services) verwenden, um Ihren Benutzern zusätzlichen Nutzen zu bieten. (siehe http://www.microsoft.com/technet/prodtechnol/sql/2005/dwsqlsy.mspx)