Tabele historyczne w PostgreSQL

Slides:



Advertisements
Podobne prezentacje
Strojenie SQL w bazie Oracle
Advertisements

Indeksy w bazie danych Oracle
Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Projektowanie bazy danych
Wykład 3 Prowadzący: dr Paweł Drozda
Skrypty, procedury przechowywane i wyzwalane
Object-Relational Mapper for PHP
SQL – Strukturalny język zapytań
SQL INJECTION Wykorzystanie błędów w językach skryptowych
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
Bazy danych 8. SQL podstawy P. F. Góra semestr letni 2004/05.
PHP + MySQL część II.
Bazy danych II Instrukcja INSERT Piotr Górczyński 25/08/2001.
25/08/ Bazy danych II Piotr Górczyński Instrukcja UPDATE.
25/08/ Bazy danych II Piotr Górczyński MS Access – Action Query.
MS Access 2000 Tworzenie tabel Piotr Górczyński 2005.
Wycofywanie potwierdzonych transakcji
WekaSQL Język i aplikacja przetwarzania oraz eksploracji danych.
Metody autoryzacji użytkowników wymaga integracji z systemem operacyjnym nie wymaga logowania mała pewność mechanizmu wymaga logowania duża pewność mechanizmu.
Bezpieczeństwo Procedury składowane Funkcje i Wyzwalacze
ZSBD PL/SQL CZĘŚĆ 3 Wykład 5 Prowadzący: dr Paweł Drozda.
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
ETL – wymiana danych Michał Jabłonka
Zapytania SQL: wydajność i optymalizacja
Wykład 2 Wojciech Pieprzyca
Wykład 8 Wojciech Pieprzyca
BD-LAB6 Wojciech Pieprzyca
Wykład 5 Wojciech Pieprzyca
Rozproszone bazy danych
Projektowanie fizycznej bazy danych
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Relacyjne Bazy Danych (Oracle) Prezentacja jest współfinansowana.
Język SQL – ciąg dalszy DML (Data Manipulation Language)
Język SQL (Structured Query Language) DDL (Data Definition Language)
Bezpieczeństwo baz danych
Przykład włamania do aplikacji internetowej poprzez modyfikację zapytań SQL Skrypty ASP Serwer bazy danych MS SQL Server Piotr Kuźniacki BDi.
Autor: Maciej Piwowarczyk
Autor: Maciej Piwowarczyk
Bazy Danych II prowadzący: mgr inż. Leszek Siwik
SQL – Structured Query Language (3)
N OWOŚCI W SQL S ERVER 2008 Z PUNKTU WIDZENIA ZESPOŁÓW PROJEKTUJĄCYCH W.NET Oskar Jarczyk.
Instrukcje: CREATE, INSERT, UPDATE, DELETE, DROP
Użytkownicy i przywileje Sesja - przykład Błędy Komunikacja międzyskryptowa Wykład 83PD Technologie internetowe.
Bazy danych.
SQL - Structured Query Language
Wstęp Krótka historia programu Zastosowanie PowerPoint’a
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Aplikacje bazodanowe ADO.NET PHP i MySQL
Systemy Zarządzania Bazami Danych Laboratorium 05 Widoki i eksport tabel/widoków 1.
Autor: Joanna Barańska Promotor: dr inż. Paweł Figat Konsultant:
Komendy SQL do pracy z tabelami i bazami
Opracowanie ćwiczeń dotyczących zapewniania niezawodności baz danych na przykładzie Oracle Opiekun : dr inż. Agnieszka Landowska Dyplomant : Tomasz Krzyżanowski.
PL/SQL – dalsza wędrówka
1 SBD, L.Banachowski Podstawy SQL - języka relacyjnych i obiektowo-relacyjnych baz danych (SQL2, SQL'1999, Oracle) Powtórzenie wyk ł adu 3.
Temat 3: Integralność danych. Integralność danych, określana również mianem spójności danych, jest to funkcja SZBD, która gwarantuje, że dane nie zostaną.
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Autor: Damian Urbańczyk
1 SBD, L.Banachowski Oprogramowanie strony serwera cz. 1 Powtórzenie wyk ł adu 6.
Komendy SQL do pracy z danymi
Paweł Starzyk Obiektowe metody projektowania systemów
Wykład 3 Prowadzący: dr Paweł Drozda. Użytkownik bazy danych – osoba lub aplikacja, mająca dostęp do części danych zgromadzonych w bazie Uprawnienia –
Bazy Danych Wprowadzenie
BAZY DANYCH Microsoft Access Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i.
ASP.NET Kontrolki źródła danych i prezentacji danych w ASP.Net
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Opracowanie studium przypadku w SAS ETL Studio Systemy baz danych i hurtowni danych Ludmiła Binek Katarzyna Rafalska
Temat: Tworzenie bazy danych
Strukturalny język zapytań SQL - historia
Technologie Informacyjne Bazy danych
Zapis prezentacji:

Tabele historyczne w PostgreSQL Rafał Piechocki Promet

Tabele historyczne wprowadzenie

Cele i korzyści

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

Realizacja tabel historycznych

Realizacja tabel historycznych Aplikacja ORM Baza danych Serwer bazy danych

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

Przykładowe implementacje 1. Osobna tabela – change logi

Tabela podstawowa + tabela change logów ZDJECIE (tabela podstawowa) id pesel status komunikat pracownik 1 85050500007 Promet 2 (update) 87070700005 -1 Nie kolorowe CHANGE_LOG # tabela id data operacja 3 zdjecie 1 2012-04-01 insert 4 2 2012-12-08 update CHANGE_LOG_VALUE # kolumna stara nowa 4 status -1 komunikat Nie kolorowe pracownik Promet

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

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ść?

Przykładowe implementacje 2. Tabela + widok

Tabela + widok Filtr: WHERE waznosc=infinity ZDJECIE (tabela podstawowa) id waznosc pesel status komunikat pracownik 1 2012-04-08 85050500007 2012-04-15 -1 Nie kolorowe Promet 2012-08-07 infinity Zdjęcie OK 2 87070700007 Filtr: WHERE waznosc=infinity V_ZDJECIE (widok dla tabeli podstawowej) id waznosc pesel status komunikat pracownik 1 infinity 85050500007 Zdjęcie OK Promet 2 87070700007

Tabela podstawowa ZDJECIE (tabela podstawowa) id waznosc pesel status komunikat pracownik 1 2012-04-08 85050500007 2012-04-15 -1 Nie kolorowe Promet 2012-08-07 infinity Zdjęcie OK 2 87070700007 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ą

Widok dla tabeli podstawowej V_ZDJECIE (widok dla tabeli podstawowej) id waznosc pesel status komunikat pracownik 1 infinity 85050500007 Zdjęcie OK Promet 2 87070700007 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

Demonstracja Tabela + widok

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

Przykładowe implementacje 3. Tabela podstawowa + tabela archiwalna

Tabela podstawowa + tabela archiwalna PUBLIC.ZDJECIE (tabela podstawowa) id timestamp pesel status komunikat pracownik 1 2012-07-15 85050500007 Zdjęcie OK Promet 2 2012-08-08 87070700007 ARCHIWUM.ZDJECIE (tabela archiwalna) id timestamp pesel status komunikat pracownik 1 2012-04-08 85050500007 -1 Nie kolorowe Promet 2012-06-07 2012-07-15 Zdjęcie OK 2 2012-08-08 87070700007

Tabela podstawowa Zawiera wyłącznie aktualne dane PUBLIC.ZDJECIE (tabela podstawowa) id timestamp pesel status komunikat pracownik 1 2012-07-15 85050500007 Zdjęcie OK Promet 2 2012-08-08 87070700007 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

Tabela archiwalna Tabela znajduje się w osobnym schemacie DB ARCHIWUM.ZDJECIE (tabela archiwalna) id timestamp pesel status komunikat pracownik 1 2012-04-08 85050500007 -1 Nie kolorowe Promet 2012-06-07 2012-07-15 Zdjęcie OK 2 2012-08-08 87070700007 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

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

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

Tabela podstawowa + tabela archiwalna Demonstracja Tabela podstawowa + tabela archiwalna

Tabela podstawowa + tabela archiwalna 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?

Kiedy stosować, a kiedy nie?

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

Pytania?