2009-06-05 17 views
0

Ich habe eine Anwendung, die geplant ist und einige Daten aus einer anderen Datenbanktabelle und Dumps in meiner Hauptanwendung Datenbanktabelle erhalten, die Anzahl der Datensätze in dieser Tabelle erhöht täglich und ich nehme an, es wird täglich wachsen, da es Transaktionen Ereignisdaten ist auftreten. Diese Daten werden für die Verarbeitung durch die Hauptanwendung verwendet, die jeden Datensatz aufnimmt und die erforderliche Analyse durchführt und jeden Datensatz als verarbeitet markiert.Verwalten von großen Transaktionsdatensätzen?

Welche Art von Lösung kann ich bereitstellen, damit ich die Größe der Datenbank in Zukunft niedrig halten kann?

Wie würden Sie in dieser Situation vorgehen?

Von meiner Beobachtung einiger Unternehmensanwendungen bietet man eine Option, dass der Benutzer Datensätze 'älter als 60 Tage' usw. in eine Textdatei archivieren kann. Nun könnte ich eine Option zur Archivierung der verarbeiteten Datensätze bereitstellen zu einer Textdatei und löschen Sie die Datensätze aus der Datenbank, die Textdatei könnte später bei Bedarf importiert werden? Ist das eine Lösung?

Antwort

1

Wenn Sie gelegentlich auf diese älteren Daten zugreifen müssen, dann ist das Erstellen eines Prozesses zum Archivieren von Text und dann zum Zurückladen von Text wahrscheinlich keine gute Lösung. Festplatten sind billig.

Sie könnten die älteren Daten aggregieren. Wenn die Transaktionsdaten zum Beispiel jetzt im Millisekunden-Bereich liegen, aber wenn Sie über ältere Daten berichten, erhalten Sie diese am Tag. Ziehen Sie dann in Betracht, die Daten als Ihren Archivierungsprozess auf "täglich" zu aggregieren. Sie können Hunderttausende von Zeilen in nur wenigen für jeden Tag zusammenfassen.

Denken Sie auch an ein gutes Partitionierungsschema, bei dem Sie die neuesten Transaktionen auf einem Festplattensatz und die archivierten Daten auf anderen Festplatten speichern können, hoffentlich in einem Prozess, in dem Sie einfach neue Festplatten hinzufügen und Tabellen zu diesen Festplatten erstellen können.

0

IMHO, hängt davon ab, wie wahrscheinlich es ist, dass der Benutzer frühere Daten analysieren muss. Wenn es wahrscheinlich ist, erstellen Sie einfach gute Indizes und behalten Sie alle Daten in Ihrer Hauptdatenbank.

Wenn es nicht ist dann fallen sie auf ein TXT. Die Zeit, in der es passiert, muss natürlich konfigurierbar sein.

1

Welche Art von Vergangenheitsdatenberichterstattung benötigt Ihr Unternehmen? Archivierte Daten in eine Textdatei zu löschen ist gut und schön, vorausgesetzt, Sie müssen in Zukunft nicht mehr von diesen Daten berichten können. Wenn Sie es jedoch in einer Textdatei haben, müssen Sie einen manuellen Prozess haben, um es bei Bedarf in eine Datenbank zu importieren, wenn es benötigt wird.

Eine bessere Option wäre, Archivdaten in eine Data Warehouse-Datenbank zu verschieben, die nicht für die Transaktionsverarbeitung (OLTP) verwendet wird, und stattdessen als Grundlage für eine analytische Verarbeitungsdatenbank (OLAP) verwendet wird. Wenn es an der Zeit ist, von diesen archivierten Daten zu berichten, ist es bereit zu gehen. Wenn Sie sorgfältig überlegen, wie Sie Daten in dieser Archivdatenbank strukturieren, sollten Sie alle Daten sehr einfach in einem OLAP-Cube zusammenfassen. Dadurch wird die Berichterstattung viel schneller und flexibler.

Aber wieder ... hängt davon ab, ob Sie von den Daten berichten oder nicht, und wie weit zurück in der Zeit, dass die Berichterstattung gehen könnte.

1

Es hängt davon ab, wie viel Analyse auf vergangenen Daten durchgeführt wird, aber es gibt eine Möglichkeit, alles in der Datenbank zu behalten, ohne dass die Leistung zum Problem wird.

Die Lösung, die in den Sinn kommt, ist die fraglichen Tabellen zu partitionieren. Meine Firma verfügt über eine Datenbanktabelle, die nach Monat partitionierte Daten enthält, von denen jede etwa 20 Millionen Zeilen enthält.Die Partitionierung macht die Verwendung dieser Daten wesentlich praktischer, als wenn sie in einer einzigen Tabelle gespeichert wären. Die einzige wirkliche Einschränkung ist der Speicherplatz, der angesichts der heutigen geringen Verfügbarkeit kein Thema ist.

Ich weiß jedoch, dass einige Datenbanken die Partitionierung nicht unterstützen. Wenn dies der Fall ist, wäre das Speichern der Daten in einer Datei mit Trennzeichen eine geeignete Lösung.