Sagen wir, wir haben eine Datenbank für eine Busgesellschaft.Archivierung von Datensätzen aus der PostgreSQL-Datenbank, die die Zeitlinie übertreffen
- Wir sammeln Daten über Busfahrten, Passagierlisten, Treibstoff usw.
- Wir meist mit Daten über bevorstehende Fahrten arbeiten
- Manchmal müssen wir in der Geschichte (für die Buchhaltung) sehen, aber der Zeitrahmen ist kurz (3 Monate bei max).
- Wir möchten aus offensichtlichen Gründen (Speicherverschwendung, langsame Abfragen usw.) nicht alle Aufzeichnungen auf unseren Produktions-/Entwicklungsservern aufbewahren.
- Wir wollen separate Datenbank haben, wo wir ganze Geschichte archivieren würden.
- Was wäre der beste Weg, dies auf PostgreSQL zu erreichen?
Wir suchen etwas wie folgt aus:
- Wir wollen Produktionsdatenbank (einschließlich Strukturänderungen, Sequenzen etc.) replizieren
- Wir alten Daten aus der Produktion Datenbank löschen möchten, aber Schließen Sie diese Anweisungen von der Replikation aus, um das Archiv unverändert zu lassen.
Beispiel:
- Wenn eine Busreise ist älter als 3 Monate, löschen Sie es aus der Produktion DB, aber es im Archiv DB halten, wo es ohnehin schon ist.
Was suchen wir in: (? Slony)
- Eine Art Master/Slave-Replikation.
- REPLICA RULE für bestimmte Tabellen ENABLE, wo wir mit einigen Zeitregeln (WHERE Datum < NOW() - Intervall '6 Monate) DELETE/UPDATE-Anweisungen ändern
Vielen Dank für Ihre Einsichten.
Ich würde eine [Fremddaten Wrapper] (https://wiki.postgresql.org/wiki/Foreign_data_wrappers) mit einer Abfrage nach einem Zeitplan (Cron-Job oder ähnlich). Halte es einfach. Weniger Chance für Fehler oder Verwirrung auf diese Weise. – jpmc26