Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Tabele historyczne w PostgreSQL Rafał Piechocki Promet.

Podobne prezentacje


Prezentacja na temat: "Tabele historyczne w PostgreSQL Rafał Piechocki Promet."— Zapis prezentacji:

1 Tabele historyczne w PostgreSQL Rafał Piechocki Promet

2 Tabele historyczne wprowadzenie

3 Cele i korzyści

4 Cele i korzyści stosowania tabel historycznych Archiwum wersji Pomoc w sporze Śledzenie zmian Podstawowe PITR Backup danych Wyłapywanie błędów Dodatkowe

5 Realizacja tabel historycznych

6 AplikacjaORMBaza danychSerwer bazy danych

7 Czynniki, które należy brać pod uwagę Wpływ na wydajność Przeźroczystość rozwiązania Łatwość dostępu do archiwum Łatwość implementacji Czynniki?

8 Przykładowe implementacje 1. Osobna tabela – change logi

9 Tabela podstawowa + tabela change logów ZDJECIE (tabela podstawowa) idpeselstatuskomunikatpracownik Promet 2 (update) Nie kolorowePromet CHANGE_LOG #tabelaiddataoperacja 3zdjecie insert 4zdjecie update CHANGE_LOG_VALUE #kolumnastaranowa 4status0 4komunikatNie kolorowe 4pracownikPromet

10 1.INSERT INTO dz_oceny (os_id,toc_kod,wart_oc_kolejnosc,prot_id,term_prot_nr) VALUES ('5094','ZAL-STD','1','136651','1'); 2.INSERT INTO M_CHANGE_LOG (TABLE_NAME, MOD_TIME, MOD_TYPE) VALUES ('dz_oceny', now(), 'insert'); 3.SELECT MAX(id) as max FROM M_CHANGE_LOG; 4.INSERT INTO M_CHANGE_LOG_VALUES (CHANGE_ID, FIELD_NAME, VALUE) VALUES (8044, 'os_id', '5094'); 5.INSERT INTO M_CHANGE_LOG_VALUES (CHANGE_ID, FIELD_NAME, VALUE) VALUES (8044, 'toc_kod', 'ZAL-STD'); 6.INSERT INTO M_CHANGE_LOG_VALUES (CHANGE_ID, FIELD_NAME, VALUE) VALUES (8044, 'wart_oc_kolejnosc', '1'); 7.INSERT INTO M_CHANGE_LOG_VALUES (CHANGE_ID, FIELD_NAME, VALUE) VALUES (8044, 'prot_id', '136651'); 8.INSERT INTO M_CHANGE_LOG_VALUES (CHANGE_ID, FIELD_NAME, VALUE) VALUES (8044, 'term_prot_nr', '1');

11 Tabele typu change log - podsumowanie Zalety: Łatwość wykrywania zmian Łatwość migracji danych Testowanie spójności danych Wady: Wydajność (liczba zapytań) Trudność implementacji Nieprzeźroczystość?

12 Przykładowe implementacje 2. Tabela + widok

13 Tabela + widok ZDJECIE (tabela podstawowa) idwaznoscpeselstatuskomunikatpracownik Nie kolorowePromet infinity Zdjęcie OKPromet 2infinity V_ZDJECIE (widok dla tabeli podstawowej) idwaznoscpeselstatuskomunikatpracownik 1infinity Zdjęcie OKPromet 2infinity Filtr: WHERE waznosc=infinity

14 Tabela podstawowa ZDJECIE (tabela podstawowa) idwaznoscpeselstatuskomunikatpracownik Nie kolorowePromet infinity Zdjęcie OKPromet 2infinity Tabela zawiera zarówno bieżące dane jak i archiwalne. Klucz główny: (ID + waznosc), ograniczenia (pesel + waznosc) Triggery INSERT, UPDATE, DELETE: Oznaczają bieżący rekord jako wygasły Wstawiają nowy rekord oznaczony jako ważny Chronią archiwalne dane przed zmianą

15 Widok dla tabeli podstawowej Filtr wybiera z tabeli podstawowej wyłącznie te rekordy, które nie wygasły. Widok zawiera zatem wyłącznie bieżące dane. Możliwość wprowadzenia reguł dla widoku = możliwość wykonywania na widoku operacji: INSERT UPDATE DELETE V_ZDJECIE (widok dla tabeli podstawowej) idwaznoscpeselstatuskomunikatpracownik 1infinity Zdjęcie OKPromet 2infinity

16 Demonstracja Tabela + widok

17 Tabela + widok - podsumowanie Zalety: Łatwy dostęp do archiwum Bezpieczeństwo danych Wady: Klucze główne, ograniczenia Rozmiar tabeli podstawowej Nienaturalne operacje Problematyczna zmiana struktury

18 Przykładowe implementacje 3. Tabela podstawowa + tabela archiwalna

19 Tabela podstawowa + tabela archiwalna ARCHIWUM.ZDJECIE (tabela archiwalna) idtimestamppeselstatuskomunikatpracownik Nie kolorowePromet Zdjęcie OKPromet PUBLIC.ZDJECIE (tabela podstawowa) idtimestamppeselstatuskomunikatpracownik Zdjęcie OKPromet

20 Tabela podstawowa PUBLIC.ZDJECIE (tabela podstawowa) idtimestamppeselstatuskomunikatpracownik Zdjęcie OKPromet Zawiera wyłącznie aktualne dane Triggery INSERT, DELETE, UPDATE kopiują dane do archiwum, nie zmieniając nic w tabeli podstawowej. Mogą dziedziczyć podstawową strukturę z szablonu

21 Tabela archiwalna Tabela znajduje się w osobnym schemacie DB Zawiera dane archiwalne + dane bieżące Dane mogą być chronione przed zmianą/kasowaniem Schemat może być umieszczony na innym Storage-u ARCHIWUM.ZDJECIE (tabela archiwalna) idtimestamppeselstatuskomunikatpracownik Nie kolorowePromet Zdjęcie OKPromet

22 Tabela podstawowa + tabela archiwalna Wykorzystywane mechanizmy DBMS: Dziedziczenie struktury Triggery Procedury składowane Rozwiązane problemy: Spójność struktury tabeli podstawowej z archiwalną Łatwość tworzenia tabel archiwalnych i potrzebnych triggerów

23 Dziedziczenie tabel Wzorzec (dla wszystkich tabel, które mają mieć archiwum) Tabela podstawowaTabela archiwalna zapewnienie spójności struktury dla tabel (konieczne) wskazuje jakie tabele mają być archiwizowane (opcjonalne)

24 Demonstracja Tabela podstawowa + tabela archiwalna

25 Zalety: Łatwy dostęp do danych Dostosowanie się do zmian struktury Wydajność Przeźroczystość dla aplikacji Naturalne zapytania SQL Tabela archiwalna jako backup, PITR Wady: Implementacja w innych DBMS?

26 Kiedy stosować, a kiedy nie?

27 Kiedy (nie) stosować? Warto stosować: Kluczowe dane Nie warto stosować: Często zmieniające się dane Dane statyczne Dane wtórne/redundantne

28 Pytania?


Pobierz ppt "Tabele historyczne w PostgreSQL Rafał Piechocki Promet."

Podobne prezentacje


Reklamy Google