2015-08-25 16 views
5

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.

+1

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

Odpowiedz

0

Jest to obszar, w którym logiczna replikacja (taka jak Bucardo lub Slony) może naprawdę pomóc, ponieważ można replikować tylko te tabele, które są potrzebne i utrzymywać wokół nich własne wyzwalacze. W takim przypadku można aktualizować i usuwać wyzwalacze, aby archiwizować stare wersje danych, aby można było na nie spojrzeć.

Oczywiście można to również zrobić za pomocą wyzwalaczy w produkcyjnej bazie danych, a następnie użyć obcojęzycznych opakowań danych, jak sugeruje komentarz. Ale jeśli idziesz tą drogą, możesz również rozważyć skopiowanie do csv i ładowanie, abyś miał szczelinę powietrzną i dokonał transformacji, jeśli będzie to konieczne.

Powiązane problemy