Załóżmy, że mamy bazę danych dla firmy przewozowej.Archiwizowanie rekordów z bazy danych PostgreSQL przekraczających linię czasu
- Zbieramy dane dotyczące przejazdów autobusowych, list pasażerów, paliwo itp
- My głównie pracy z danymi o nadchodzących przejażdżki
- Czasami musimy patrzeć w historii (rachunkowości), ale ramy czasowe jest krótki (maksymalnie 3 miesiące).
- Nie chcemy przechowywać wszystkich zapisów na naszych serwerach produkcyjnych/programistycznych z oczywistych powodów (marnotrawstwo, powolne zapytania itp.).
- Chcemy mieć oddzielną bazę danych, w której będziemy archiwizować całą historię.
- Jaki byłby najlepszy sposób osiągnięcia tego w PostgreSQL?
Szukamy coś takiego:
- Chcemy replikacji bazy produkcyjnej (w tym zmiany struktury, sekwencje itp)
- chcemy usunąć stare dane z bazy produkcyjnej, ale wyklucz te instrukcje z replikacji, aby zachować nienaruszone archiwum.
Przykład:
- Kiedy podróż autobusem jest starszy niż 3 miesiące, należy usunąć go z produkcji DB, ale utrzymać go w archiwum DB, gdzie jest obecnie.
Co poszukujemy obecnie na: (? Slony)
- Jakiś Master/Slave replikacji.
- ENABLE REPLICA reguły dla poszczególnych tabel, gdzie zmieniają DELETE/aktualizacja z niektórych przepisów dotyczących czasu (gdzie data < NOW() - przedział '6 miesięcy')
Dzięki za swoimi spostrzeżeniami.
Uznałbym za [Zagadnienie danych zagranicznych] (https://wiki.postgresql.org/wiki/Foreign_data_wrappers) za pomocą zapytania uruchamianego w harmonogramie (zadanie cron lub podobne). Nie komplikuj. Mniejsze szanse na błędy lub zamieszanie w ten sposób. – jpmc26