Frage

Ich leite ein Projekt, bei dem wir Metrikdaten aufzeichnen.Ich möchte die Daten über Jahre hinweg aufbewahren.Allerdings möchte ich auch verhindern, dass die Primärtabelle mit Daten überfüllt wird, die zwar für die langfristige Trenderstellung, aber nicht für die kurzfristige Berichterstattung erforderlich sind.

Was ist die beste Strategie, um mit dieser Situation umzugehen?Die alten Daten einfach in einer anderen Tabelle archivieren?Oder durch eine Konsolidierung der Daten selbst „aufrollen“ (und sie dann in einer anderen Tabelle speichern)?Oder etwas ganz anderes?

Zusätzliche Information:Wir verwenden SQL Server 2005.

War es hilfreich?

Lösung

Bei meiner Arbeit verwenden wir beide Methoden, aber etwas anders: Wir speichern alle Verkaufsdaten 30 Tage lang in der Primärtabelle, dann werden nachts (ein Teil der nächtlichen Jobs) die Tagesverkäufe in Zusammenfassungen zusammengefasst (n Menge x verkauftes Produkt). Heute usw.) werden aus Berichtsgründen in einer separaten Tabelle gespeichert und Verkäufe über 30 Tage werden in einer anderen Datenbank archiviert. Anschließend wird einmal im Jahr (wir gehen von Steuerjahren aus) eine neue Archivdatenbank gestartet.nicht ganz perfekt, aber..

Auf diese Weise erhalten wir schnell die Zusammenfassungsdaten, haben alle aktuellen Verkaufsdaten griffbereit und haben unbegrenzten Platz für die detaillierten Archivdaten.Wir haben versucht, alles in einer Datenbank (in verschiedenen Tabellen) zu speichern, aber die Dateigröße der Datenbank (Interbase) würde so groß werden, dass das System heruntergefahren würde.

Das einzige wirkliche Problem, das wir haben, ist der Zugriff auf detaillierte Daten, die sich über mehrere Datenbanken erstrecken, da das Verbinden und Trennen langsam ist und die Analyse im Code statt in SQL erfolgen muss

Andere Tipps

Wenn Sie SQL Server 2005 verwenden, ist dies möglicherweise ein guter Kandidat für die Verwendung Partitionierte Tabellen.

Abhängig von Einschränkungen wie Budget usw. scheint dies ein perfekter Kandidat für eine Data Warehouse-Anwendung zu sein.Dies würde typischerweise einen neuen Server zur Verwendung als Data Warehouse einführen.SQL Server 2005 unterstützt viele dieser Aktivitäten standardmäßig. Darüber hinaus können Sie möglicherweise zusätzliche SQL Server-Dienste nutzen (z. B.Analysis Services, Reporting Services), um Ihren Benutzern einen Mehrwert zu bieten.(sehen http://www.microsoft.com/technet/prodtechnol/sql/2005/dwsqlsy.mspx)

@Jason – Ich verstehe nicht, wie Sie durch das Speichern von Daten in einfachen alten Textdateien eine einfache Langzeittrendanalyse der Daten durchführen können.

@Jason – Ich denke, mein Punkt ist, dass, wenn irgendeine Art von Ad-hoc-Analyse (d. h.(Trends) müssen von Geschäftsleuten mit den Daten durchgeführt werden. Das Zusammenfassen oder Archivieren der Daten in Textdateien löst wirklich keine Probleme.Natürlich ist es in vielen Sprachen einfach, Code zum Verarbeiten einer Textdatei zu schreiben, aber dieses Problem wurde gelöst.Außerdem würde ich behaupten, dass die heutigen RDBMS bei ordnungsgemäßer Einrichtung und Wartung alle äußerst langlebig sind.Wenn das nicht der Fall wäre, warum würden Sie dann ein Unternehmen darauf aufbauen (geschweige denn Daten darauf archivieren)?Ich sehe einfach keinen Sinn darin, in einer reinen Textdatei zu archivieren, da behauptet wird, dass die Haltbarkeit von Textdateien derjenigen von Datenbanken überlegen sei.

Jede dieser Optionen ist ausgezeichnet, aber es hängt wirklich von der Problemdomäne ab.Für Dinge wie Kassenbestände oder statistische Daten halte ich das Zusammenfassen und Konsolidieren von Datensätzen für die beste Methode. Anschließend können Sie die zusammengerollten Datensätze in eine parallele Archivtabelle verschieben und sie so verschlüsseln, dass Sie sie ggf. „entrollen“ können notwendig.Dadurch bleibt Ihre Primärdatentabelle sauber und schnell, Sie können jedoch die zusätzlichen Daten für die Prüfung oder ähnliches behalten.Die entscheidende Frage ist, wie Sie den „Roll-up“-Prozess umsetzen.Entweder automatisch, über einen Trigger oder einen serverseitigen Prozess oder durch Benutzereingriff auf Anwendungsebene?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top