1 / 34

Temporáln e Databáz y

Temporáln e Databáz y. Tomáš Kohan. Čím sa budeme zaoberať. Prečo je čas v DB dôležitý Práca s časom pomocou klasického SQL Reprezentácia časovej domény Spojovanie dat s časom … Temporálne dotazovacie jazyky. Prečo je čas dôležitý (1). Zapisovanie predmetov na VŠ

robbin
Download Presentation

Temporáln e Databáz y

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Temporálne Databázy Tomáš Kohan

  2. Čím sa budeme zaoberať • Prečo je čas v DB dôležitý • Práca s časom pomocou klasického SQL • Reprezentácia časovej domény • Spojovanie dat s časom • … • Temporálne dotazovacie jazyky

  3. Prečo je čas dôležitý (1) • Zapisovanie predmetov na VŠ • Aktuálne je zaujímavý len prebiehajúci semester • Je potrebné udržovať aj historické informácie • Programová skladba v televíznej spoločnosti • Veľké množstvo dat • Častá zmena v čase • Drahé chyby (=> dôraz na jednoduchosť kódu)

  4. Prečo je čas dôležitý (2) • Uchovanie nie iba aktuálnych dat • Vyhľadavanie a analýza údajov k nejakému datumu (z nejakého intervalu) • Vyžaduje jednoduchý a prehľadný spôsob dotazovania • Musia byť maximálne optimalizované

  5. Zhrnutie • Čas hraje v databázach významnú úlohu • Nie je to iba teoretický problém

  6. Práca s časom pomocou SQL92 (1) • Uchovávanie jednoduchej tabuľky • Zamestnanci (meno, plat, titul,d_nar DATE) • Kedy sa Bob narodil? SELECT d_nar FROM Zamestnanci WHERE meno = ‘Bob’

  7. Práca s časom pomocou SQL92 (2) • Rozšírime model o položky štart a stop • štart – začiatok platnosti položky • stop – koniec platnosti položky

  8. Práca s časom pomocou SQL92 (3) Výsledná tabuľka: Zamestnanci ( meno, plat, titul d_nar Date, štart Date, stop Date )

  9. Temporálna projekcia (1) • Aký je aktuálny Bobov plat? SELECT plat FROM Zamestnanci WHERE meno = ‘Bob’ AND štart <= aktuálny_čas AND aktuálny_čas <= stop

  10. Temporálna projekcia (2)

  11. Temporálna projekcia (3.1) • Vyrobíme si pomocnú tabuľku Temp CREATE TABLE Temp(plat, štart, stop) AS SELECT plat, štart, stop FROM Zamestnanci WHERE meno = ´Bob´ |-----------| |----| |------------| |--------|

  12. Temporálna projekcia (3.2) repeat UPDATE Temp T1 SET (T1.stop)=(SELECT MAX(T2.stop) FROM Temp AS T2 WHERE T1.plat = T2.plat AND T1.štart < T2.štart AND T1.stop >= T2.start AND T1.stop < T2.stop) WHERE EXISTS(SELECT * FROM Temp AS T2 WHERE T1.plat = T2.plat AND T1.štart < T2.štart AND T1.stop >= T2.štart AND T1.stop < T2.stop) until “žiaden riadok sa nezmení” • Záznamy sa predlžujú doprava |--------------| |------------------| |--------------| |--------|

  13. Temporálna projekcia (3.3) • Ešte zmažeme nemaximálne riadky DELETE FROM Temp T1 WHERE EXISTS ( SELECT * FROM Temp AS T2 WHERE T1.plat = T2.plat AND ((T1.štart > T2.štart AND T1.stop <= T2.stop) OR (T1.start >= T2.štart AND T1.stop < T2.stop))

  14. Temporálna projekcia (4.1) • Bez použitia repeat/until cyklu • Predpokládajme, že máme tabuľku Temp ako v predchádzajúcom príklade

  15. Temporálna projekcia (4.2) SELECT DISTINCT F.plat, F.štart, L.stop FROM Temp AS F, Temp AS L WHERE F.štart < L.stop AND F.plat = L.plat AND NOT EXISTS(SELECT * FROM Temp AS M WHERE M.plat = F.plat AND F.štart < M.štart AND M.štart < L.stop AND NOT EXISTS(SELECT * FROM Temp AS T1 WHERE T1.plat = F.plat AND T1.štart < M.štart AND M.štart <=T1.stop)) AND NOT EXISTS (SELECT * FROM Temp AS T2 WHERE T2.plat=F.plat AND ((T2.štart < F.štart AND F.štart <= T2.stop) OR T2.štart < L.stop AND L.stop < T2.stop))) • Snažíme sa o rast jednotlivých časových úsekov • Podmienky NOT EXISTS: (1) vylučuje “časové diery” a (2) zaručuje maximalitu • Je to možné robiť o niečo málo jednoduchšie pomocou kurzorov

  16. Temporálna projekcia pomocou TSQL2 SELECT plat FROM Zamestnanci WHERE meno = ‘Bob’

  17. Temporálne spojenie (join) (1) • Rozdeľme tabuľku Zamestnanci na dve: • Zamestnanci1(meno, plat, štart, stop) • Zamestnanci2(meno, titul,štart, stop) • Toto delenie uľahčí predchádzajúci dotaz: SELECT plat, štart,stop FROM Zamestnanci1 WHERE meno = ´Bob´

  18. Temporálne spojenie (2) • Pri spájaní dvoch tabuliek je treba rozlišovať štyri prípady: • T2.štart <= T1.štart AND T1.stop <=T2.stop • T1.štart > T2.štart AND T2.stop < T1.stop AND T1.štart < T2.stop • T2.štart > T1.štart AND T1.stop < T2.stop AND T2.štart < T1.stop • T2.štart>=T1.štart AND T2.stop <= T1.stop • To výrazne predlžuje zápis dotazu • jednoduché prirodzené spojenie tabuliek Zamestnanci 1 a 2 je ešte dlhšie ako predchádzajúce dotazy !!!)

  19. Zhrnutie • Práca s časom je v SQL92 veľmi obtiažna • Ľahko náchylné na chyby programátorov • Vnorené dotazy bránia optimalizáciam • …

  20. Reprezentacia časovej domény • model času • Môže to byť ľubovoľná množina, na ktorej je čiastočné usporiadanie • Prijatím dodatočných axiomov môžeme získať konkrétne modely

  21. Modely času v DB (1) • Lineárny čas (linear model) • Usporiadanie je lineárne • Čas postupuje “krok za krokom” • Vetviaci sa čas (branching model) • Čas od minulosti do teraz je lineárny • Čas od teraz do budúcnosti sa vetví na teoreticky možné vetvy • Tento model tvorí vlastne strom s koreňom v prítomnosti

  22. Modely času v DB (2) • Cyklický model • Napr. dni v týždni • Vyjadrujú sa ním rekurentné deje • Diskrétny model • Je izomorfný prirodzeným číslam • Každý prvok má známeho následníka

  23. Modely času v DB (3) • Hustý model • Je izomorfný racionálnym číslam • Medzi každými dvoma okamžikmi existuje ďalší • Spojitý model • Je izomorfný reálnym číslam • Neobsahuje medzery

  24. Modely času v DB (4) • Spojitý model • každé reálne číslo odpovedá jednému bodu • Diskrétny model • Každé reálné číslo odpovedá intervalu • Chronon • Najmenšia doba trvania reprezentovatelná v diskrétnom modele

  25. Modely času v DB (5) • Modely môžu mať hornú (dolnú) hranicu • Znázorňujú čas: • Relativný • 9 hodin • Absolutný (ten je ale tiež relativný) • 9:52, 29.5.1492

  26. Modely času v DB (6) • Najčastějšie sa používajú diskrétne modely • Spojité sa ťažko implementujú

  27. Datové typy v SQL 92 • DATE • Deň a rok • 4B • TIMESTAMP • Ako Date + časť dňa (štd. mikrosekunda) • 8B • TIME • Časový okamžik dňa. Vo formáte hodina/minuta/sekunda • 4B

  28. Spájanie dat s časom • Nová dimenzia, ktorá reprezentuje čas • 2 typy: • Čas platnosti (valid time) • Čas transakcie (transaction time) • Ak má obidva: bitemporal • Ak žiaden – jedná sa o snímku (snapshot)

  29. Čas transakcie • Čas sa zaznamená pri manipulácii s datami automaticky (insert, delete ,…) • Data v minulosti sa nikdy nemenia (data v tomto modele len pribúdajú) • Nemôže ísť do budúcnosti

  30. Reprezentácia časovej domény • Dané modely sú najlepšie vidieť na obrázkoch

  31. “Podložie” • Čas bol pridaný do veľa modelov • E-R modelu • Sémantických modelov • … • Väčšina temporálnych DB je založená na: • Relačnom modele • OO modele • Existuje veľa takýchto modelov

  32. Jednoduché príklady Segevov datový Model (čas platnosti) Sardov datový Model (čas platnosti)

  33. Temporálne dotazovacie jazyky • Sú založené na niektorom z týchto modelov • Sú odvodené zvyčajne od štandardných dot. jazykov (SQL, QUEL, Relačná algebra,…) • TSQL, TSQL2, TempSQL, HQL, Hquel, HSQL, TDM, Legol 2.0, …

  34. Záver • Existujú úlohy z praxe, kde hraje čas kľúčovú úlohu • Riešenia týchto úloh jazykom SQL sú neohrabané a nedajú se účinne optimalizovať • Riešenie – temporálne dotazovacie jazyky • modely: • Čas transakcie • Čas platnosti

More Related