0
Ing. Miroslav Šimulčík      simulcik.miro@gmail.com
   Zachytávajú len jeden stav dát, väčšinou súčasný   Pri modifikácii sú staré hodnoty nahradené novými a    ďalej nedos...
   Návrat k historickým dátam    ◦ Restore databázy + rollforward      Ťažkopádne a nedostatočné riešenie   Zavedenie h...
   Databázy pracujúce s časom, umožňujúce zachytávať    históriu v čase sa meniacich (temporálnych) dát.   Jednoduchá a ...
   Aplikačný čas    ◦   Čas platnosti dát v reálnom svete    ◦   Zadáva používateľ    ◦   Zaznamenáva napríklad zmeny výš...
   Snapshot databázy    ◦ Uchovávajú len aktuálne dáta
   Historické databázy    ◦ Zachytávajú zmeny v reálnom svete (biznise)
   Rollback databázy    ◦ Zachytávajú zmeny v databáze samotnej
   Bitemporálne databázy    ◦ Kombinácia historických a rollback databáz
   TSQL2 (1994)    ◦ Rozšírenie SQL-92    ◦ Základ novších štandardov    ◦ Publikovaný, ale nebol predložený žiadnej štan...
   Len proprietárne   IBM DB2 10    ◦ Rozšírená syntax    ◦ Dodržiava štandard SQL 2011   Oracle 11g Workspace Manager ...
   Predstavuje interval hodnôt   Môže byť založený na rôznych typoch    ◦ date, timestamp, integer, decimal...    ◦ rôzn...
CREATE TABLE person (    id INTEGER PRIMARY KEY,    first_name VARCHAR(50),    last_name VARCHAR(50),    sys_start TIMESTA...
   Syntax príkazov nezmenená   Hodnoty pre začiatok a koniec platnosti stĺpcov sa generujú automaticky   INSERT    ◦ Sp...
   Bežný SELECT pracuje len s aktuálnymi verziami záznamov    ◦ Spätná kompatibilita s existujúcimi aplikáciami   Na prí...
CREATE TABLE person (    id INTEGER,    first_name VARCHAR(50),    last_name VARCHAR(50),    bus_start TIMESTAMP NOT NULL,...
   Hodnoty pre začiatok a koniec platnosti stĺpcov zadáva    používateľ   INSERT    ◦ Syntax a správanie nezmenené   UP...
UPDATE                                              UPDATE1992      2000     2008          2020   2000      2012         2...
   DELETE    ◦ S nezmenenou syntaxou – mazanie ľubovoľných riadkov    ◦ FOR PORTION OF <application time period name> FRO...
DELETE                                                    DELETE1992      2000      2008          2020    2000          20...
CREATE TABLE department (    id INTEGER,    name VARCHAR(50),    bus_start TIMESTAMP NOT NULL,    bus_start TIMESTAMP NOT ...
   Množinové operácie     ◦ Vyhodnocované v každom časovom okamihu     ◦ Nezahrnuté v SQL 2011     ◦ Príklad:person      ...
   Agregačné funkcie     ◦ Vyhodnocované v každom časovom okamihu     ◦ Nezahrnuté v SQL 2011     ◦ Príklad:personid firs...
   DISTINCT    ◦ Duplicitné riadky musia platiť v rovnakom čase    ◦ Nezahrnuté v SQL 2011   JOIN    ◦ Spájané riadky mu...
   Range types (PERIOD)    ◦ od verzie 9.2    ◦ Možnosť indexovania GIST indexom      Podpora všetkých spomínaných predi...
   Vytvorený v rámci diplomovej práce   Snaha o zaradenie do oficiálneho release   Pôvodne založený na štandarde SQL/Te...
   Implementačný jazyk – C   Rozšírenie syntaxe    ◦ Gramatika v BNF, z ktorej sa pomocou nástroja Bison generuje      p...
Otázky?
Upcoming SlideShare
Loading in...5
×

Miroslav Šimulčík: Temporálne databázy

732

Published on

Temporálne databázy umožňujú zachytávať históriu biznisových a systémových zmien dát a poskytujú prostriedky na pohodlnú prácu s historickými dátami. Majú široké uplatnenie v rôznych sektoroch ako napríklad poisťovníctvo, bankovníctvo či rezervačné systémy. Umožňujú jednoduché kontrolovanie vykonaných zmien, návrat k predchádzajúcim stavom dát a rôzne analytické dotazy nad históriou. V rámci prezentácie sa budem venovať všeobecnému prehľadu oblasti, existujúcim štandardom (napr. SQL:2011) a riešeniam a na jednoduchých príkladoch predvediem hlavnú funkcionalitu temporálnych databáz. Nakoniec ešte načrtnem možnosti pridania temporálnej podpory do Postgresql a porozprávam aj o tom, ako sa snažím temporálnu podporu dostať do oficiálneho release a čo všetko také niečo obnáša.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
732
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Miroslav Šimulčík: Temporálne databázy"

  1. 1. Ing. Miroslav Šimulčík simulcik.miro@gmail.com
  2. 2.  Zachytávajú len jeden stav dát, väčšinou súčasný Pri modifikácii sú staré hodnoty nahradené novými a ďalej nedostupné Príklad: systém na správu zamestnancov ◦ Zamestnanec požiada o zvýšenie platu  Kedy sme mu naposledy zvýšili plat a o koľko? ◦ V databáze sa „pokazili“ dáta  Akou postupnosťou operácií dáta vznikli? Kto je za to zodpovedný?
  3. 3.  Návrat k historickým dátam ◦ Restore databázy + rollforward  Ťažkopádne a nedostatočné riešenie Zavedenie histórie – časté riešenia: ◦ Triggre ◦ Uložené procedúry ◦ Aplikačná vrstva Netriviálne problémy ◦ Dotazy ◦ Modifikujúce operácie ◦ Dátová integrita
  4. 4.  Databázy pracujúce s časom, umožňujúce zachytávať históriu v čase sa meniacich (temporálnych) dát. Jednoduchá a efektívna práca s temporálnymi dátami Bez nutnosti vývoja vlastných riešení Široké spektrum uplatnenia ◦ Poisťovníctvo ◦ Bankovníctvo ◦ Zdravotníctvo ◦ Rezervačné systémy
  5. 5.  Aplikačný čas ◦ Čas platnosti dát v reálnom svete ◦ Zadáva používateľ ◦ Zaznamenáva napríklad zmeny výšky platu ◦ Využitie  Analýzy vývoja dát  Historické reporty Systémový čas ◦ Čas operácie (INSERT, UPDATE, DELETE ...) v databázovom systéme ◦ Udržiavaný databázovým systémom ◦ Zaznamenáva napríklad opravy preklepov ◦ Využitie  Audity modifikácií  Identifikácia a oprava chýb  Obnova dát
  6. 6.  Snapshot databázy ◦ Uchovávajú len aktuálne dáta
  7. 7.  Historické databázy ◦ Zachytávajú zmeny v reálnom svete (biznise)
  8. 8.  Rollback databázy ◦ Zachytávajú zmeny v databáze samotnej
  9. 9.  Bitemporálne databázy ◦ Kombinácia historických a rollback databáz
  10. 10.  TSQL2 (1994) ◦ Rozšírenie SQL-92 ◦ Základ novších štandardov ◦ Publikovaný, ale nebol predložený žiadnej štandardizačnej autorite SQL/Temporal (1997) ◦ Časť štandardu SQL 3 ◦ Návrh na pridanie temporálnej podpory vychádzajúcej z TSQL2 bol zamietnutý ISO komisiou ◦ Základ niektorých existujúcich riešení SQL 2011 (koniec 2011) ◦ Výrazné rozdiely oproti TSQL2 ◦ Vydaný ISO ◦ Nie je voľne dostupný – dokopy cca 1300$
  11. 11.  Len proprietárne IBM DB2 10 ◦ Rozšírená syntax ◦ Dodržiava štandard SQL 2011 Oracle 11g Workspace Manager ◦ Nepodporuje štandardy ◦ Pomocou prostriedkov databázy (uložené procedúry) Teradata Database 13 ◦ Vychádza zo SQL/Temporal ◦ Poskytuje najbohatšiu temporálnu podporu
  12. 12.  Predstavuje interval hodnôt Môže byť založený na rôznych typoch ◦ date, timestamp, integer, decimal... ◦ rôzna granularita Rôzna uzavretosť hraníc Operácie ◦ UNION, EXCEPT, INTERSECT Predikáty ◦ PRECEDES, SUCCEEDS, MEETS, OVERLAPS, CONTAINS Vhodný na vyjadrenie období platnosti záznamov SQL 2011 – slabá podpora
  13. 13. CREATE TABLE person ( id INTEGER PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50), sys_start TIMESTAMP GENERATED ALWAYS AS ROW START, sys_end TIMESTAMP GENERATED ALWAYS AS ROW END, PERIOD FOR SYSTEM_TIME (sys_start, sys_end)) WITH SYSTEM VERSIONING;
  14. 14.  Syntax príkazov nezmenená Hodnoty pre začiatok a koniec platnosti stĺpcov sa generujú automaticky INSERT ◦ Správanie nezmenené ◦ Začiatok platnosti = začiatok transakcie ◦ Koniec platnosti = max. hodnota typu UPDATE UPDATE ◦ Automatické vytvorenie novej verzie a ukončenie platnosti starej verzie ◦ Len aktuálne platné riadky môžu byť 1999 2012 (zač. transakcie) 9999 modifikované 1999 2012 9999 DELETE DELETE ◦ Automatické ukončenie platnosti starej verzie ◦ Len aktuálne platné riadky môžu byť vymazané 1999 2012 9999 1999 2012
  15. 15.  Bežný SELECT pracuje len s aktuálnymi verziami záznamov ◦ Spätná kompatibilita s existujúcimi aplikáciami Na prístup k historickým verziám definuje štandard rozšírenú syntax: ◦ FOR SYSTEM_TIME AS OF <point in time 1> ◦ FOR SYSTEM_TIME BETWEEN <point in time 1> AND <point in time 2> ◦ FOR SYSTEM_TIME FROM <point in time 1> TO <point in time 2> Príklad SELECT * FROM person FOR SYSTEM_TIME AS OF 2012-09-26-19.00.00.000000
  16. 16. CREATE TABLE person ( id INTEGER, first_name VARCHAR(50), last_name VARCHAR(50), bus_start TIMESTAMP NOT NULL, bus_end TIMESTAMP NOT NULL, PERIOD FOR bus_time (bus_start, bus_end) PRIMARY KEY (id, bus_time WITHOUT OVERLAPS));
  17. 17.  Hodnoty pre začiatok a koniec platnosti stĺpcov zadáva používateľ INSERT ◦ Syntax a správanie nezmenené UPDATE ◦ S nezmenenou syntaxou  Ľubovoľná modifikácia riadkov v tabuľke (aj začiatok a koniec platnosti) ◦ FOR PORTION OF <application time period name> FROM <point in time 1> TO <point in time 2>  Zabezpečené automatické rozdeľovanie riadkov  Nie je možné modifikovať začiatok a koniec platnosti riadkov  UPDATE person FOR PORTION OF bus_time FROM 2012-09-26-19.00.00.000000 TO 2013-12-14-01.00.00.000000 SET name = Ferko
  18. 18. UPDATE UPDATE1992 2000 2008 2020 2000 2012 2020 2025 2000 2008 2020 2000 2012 2020 UPDATE UPDATE 2000 2020 2000 2005 2010 2020 2000 2020 2000 2005 2010 2020
  19. 19.  DELETE ◦ S nezmenenou syntaxou – mazanie ľubovoľných riadkov ◦ FOR PORTION OF <application time period name> FROM <point in time 1> TO <point in time 2>  Zabezpečené automatické rozdeľovanie riadkov  DELETE FROM person FOR PORTION OF bus_time FROM 2012-09-26-19.00.00.000000 TO 2013-12-14-01.00.00.000000
  20. 20. DELETE DELETE1992 2000 2008 2020 2000 2012 2020 2025 2008 2020 2000 2012 DELETE DELETE 2000 2020 2000 2005 2010 2020 2000 2005 2010 2020
  21. 21. CREATE TABLE department ( id INTEGER, name VARCHAR(50), bus_start TIMESTAMP NOT NULL, bus_start TIMESTAMP NOT NULL, PERIOD FOR business_time (bus_start, bus_end) PRIMARY KEY (id, business_time WITHOUT OVERLAPS));CREATE TABLE person ( id INTEGER, first_name VARCHAR(50), last_name VARCHAR(50), department_id INTEGER, bus_start TIMESTAMP NOT NULL, bus_start TIMESTAMP NOT NULL, PERIOD FOR bus_time (bus_start, bus_end) PRIMARY KEY (id, bus_time WITHOUT OVERLAPS) FOREIGN KEY (department_id, PERIOD bus_time) REFERENCES department(id, PERIOD bus_time));
  22. 22.  Množinové operácie ◦ Vyhodnocované v každom časovom okamihu ◦ Nezahrnuté v SQL 2011 ◦ Príklad:person personid first_name last_name bus_time id first_name last_name bus_time 1 Paľko Malý [1989-1999) 1 Paľko Malý [1960-1980) 4 Janko Hraško [2006 - 2020) 2 Jožko Mrkvička [1985-2005) 2 Jožko Mrkvička [1999-∞) 3 Peter Krasko [1960 - 1970) INTERSECT person id first_name last_name bus_time 2 Jožko Mrkvička [1999-2005)
  23. 23.  Agregačné funkcie ◦ Vyhodnocované v každom časovom okamihu ◦ Nezahrnuté v SQL 2011 ◦ Príklad:personid first_name last_name salary bus_time SELECT SUM(salary) FROM person 1 Paľko Malý 1000 [1960-1980) 2 Janko Hraško 900 [1970 - ∞) 3 Jožko Mrkvička 1500 [1975-1990) salary_sum bus_time 1000 [1960-1970) 1900 [1970-1975) 3400 [1975-1980) 2400 [1980-1990) 900 [1990-∞)
  24. 24.  DISTINCT ◦ Duplicitné riadky musia platiť v rovnakom čase ◦ Nezahrnuté v SQL 2011 JOIN ◦ Spájané riadky musia platiť v rovnakom čase ◦ Realizovateľné aj v SQL 2011
  25. 25.  Range types (PERIOD) ◦ od verzie 9.2 ◦ Možnosť indexovania GIST indexom  Podpora všetkých spomínaných predikátov EXCLUDE constraint – flexibilnejší UNIQUE constraint ◦ Zabránenie prekrývaniu období platnosti  EXCLUDE USING gist (id WITH =, bus_time WITH &&)
  26. 26.  Vytvorený v rámci diplomovej práce Snaha o zaradenie do oficiálneho release Pôvodne založený na štandarde SQL/Temporal Funkcionalita zahrnutá priamo v backende (nie extension) Pre prijatie je nutný redizajn ◦ Podpora SQL 2011 ◦ Využitie novo pridanej funkcionality V súčasnosti - čakanie na schválenie nového návrhu komunitou Následne – implementácia ◦ Extension / core funkcionalita ?
  27. 27.  Implementačný jazyk – C Rozšírenie syntaxe ◦ Gramatika v BNF, z ktorej sa pomocou nástroja Bison generuje prekladač v jazyku C Úpravy systémových katalógov ◦ Pridanie stĺpcov na ukladanie informácií o temporálnych tabuľkách Zmeny vo vnútorných štruktúrach Spúšťače na odkladanie starých verzií záznamov ◦ Používajú pripravené príkazy, ukladané do hash tabuliek Rozsah zmien – cca 4000 riadkov v 80 súboroch Modifikované moduly: ◦ Parser – zaoberá sa prekladom a spracovávaním SQL príkazov preložených do vnútornej štruktúry ◦ Command – zabezpečuje spracovanie a vykonávanie príkazov na vytváranie a úpravu databázových objektov
  28. 28. Otázky?
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×