Temporální Databáze Jaroslav Dražan. Čím se budeme zabývat Proč je čas v DB důležitý Práce s časem pomocí klasického SQL Reprezentace časové domény Spojování.

Slides:



Advertisements
Podobné prezentace
Aplikační a programové vybavení
Advertisements

KIV/ZIS Cvičení 6 SQL - SELECT.
SQL Další dotazy a pohledy
Základy jazyka SQL Jan Tichava
Jazyk SQL Ing. Zdena DOBEŠOVÁ. SQL Structured Query Language 1974 SEQUEL (Structured English Query Language) neprocedurální relační dotazovací jazyk norma.
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
DB1 – 9. cvičení Optimalizace dotazu Konkurenční přístup a deadlock Indexace Transakce.
Databázové systémy SQL Výběr dat.
YDASYS1 Ing. Monika Šimková.
Fakulta elektrotechniky a informatiky
Cvičení 03 SQL Select Ing. Pavel Bednář
Informační systémy Realizace uložených procedur a spouští, jejich praktické využití.
Informační systémy Nástroje pro sběr dat, návrh a realizace databáze.
Další dotazy SQL Structured Query Language. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
SQL Structured Query Language
Informatika pro ekonomy II přednáška 11
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Principy překladačů Mezikód Jakub Yaghob.
PROGRAMOVACÍ JAZYKY (c) Tralvex Yeap. All Rights Reserved.
Temporální databáze a TSQL
TEMPORÁLNÍ DATABÁZE A TSQL2
Možnosti implementace temporálních Databází v Caché Lukáš Rychnovský
Materiály k přednášce Úvod do programování Ondřej Čepek.
Databáze Jiří Kalousek.
SQL Přednáška DB1. Literatura CONNOLLY, T.M.-BEGG,C.E.-STRACHAN,A.D.: Database Systems – A Practial Approach to Design, Implementation and Management.
MySQL - Vytvoření nové tabulky  create table jméno_tabulky (jméno_položky typ_položky,... ) Přehled nejběžnějších datových typů Přehled nejběžnějších.
Databázové systémy Štěpán Šípal.
IBM SYPOSIUM O SPOLUPRÁCI © 2006 IBM Corporation Datamining z Domina R7 Dan Vrána CubeTeam ®
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Cvičení 04 SQL Exists, Any, All Ing. Pavel Bednář
Fakulta elektrotechniky a informatiky
Databázové systémy I Cvičení č. 9 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Relační databáze.
1IT D OTAZOVACÍ JAZYKY V RELAČNÍCH DATABÁZÍCH Ing. Jiří Šilhán.
Vypracoval: Ondřej Dvorský Třída: VIII.A
KIV/ZIS cvičení 6 Tomáš Potužák. Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Stáhnout soubor studenti_dotazy_sql.mdb.
Informatika pro ekonomy II přednáška 10
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
JAK NA DATABÁZOVÉ FUNKCE Linda Lahodná 4. B POKRAČUJ KLIKNUTÍM>>>
Databázové systémy Přednáška č. 6.
SQL – základní pojmy Ing. Roman Danel, Ph.D.
SQL PVA Jan Hora. SQL „graficky“ Grafický vs. pravý SQL SELECT ORDED BY WHERE.
Fakulta elektrotechniky a informatiky
Databázové systémy II Přednáška č. 9. Transakce je logická jednotka práce sestávající z jednoho nebo více SQL příkazů, které jsou atomické z hlediska.
Transakční zpracování v SQL P. Částek. Transakce Transakce = logická jednotka práce Podaří-li se všechny části transakce, potvrdíme je. COMMIT Jestliže.
Databázové systémy UIN010 N-ticový (řádkový) relační kalkul Hodnoty proměnných n-tice relací (řádky) Konstanty hodnoty atributů Unární funkční.
Informatika II PAA DOTAZOVACÍ JAZYKY
Aplikační a programové vybavení
Databázové systémy Informatika pro ekonomy, př. 18.
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B13 Autor Ing. Jiří Kalousek Období vytvoření březen.
KIV/ZIS cvičení 4 Tomáš Potužák. Dotazy - úvod Umožňují pracovat s databází –Získávat specifické informace z tabulky, případně z více tabulek najednou.
Databázové systémy SQL Výběr dat.
TEMPORÁLNÍ DATABÁZE A TSQL2
Teorie zpracování dat RELAČNÍ DATOVÝ MODEL.
Overview of Temporal Databases & TSQL2 Tomáš Hladík
Dynamická webová aplikace Autor:Ondřej Soukup Třída:I3.
SQL – příkaz SELECT Ing. Roman Danel, Ph.D.
Databázové systémy I Přednáška 8 Databázové systémy 1 – KIT/IDAS1
Databázové systémy a SQL
Databázové systémy a SQL
Informatika pro ekonomy přednáška 8
Databázové systémy a SQL
[ START WITH podmínka ] CONNECT BY podmínka
Optimalizace SQL dotazů
Počítačová cvičení z předmětu Datové sklady
Databázové systémy Normální formy.
Přednáška 7 SQL – JOIN.
Databázové systémy a SQL
Databázové jazyky Jaroslav Pokorný FI BVŠP Bratislava
Databázové systémy a SQL
Transkript prezentace:

Temporální Databáze Jaroslav Dražan

Čím se budeme zabývat Proč je čas v DB důležitý Práce s časem pomocí klasického SQL Reprezentace časové domény Spojování dat s časem … Temporální dotazovací jazyky

Proč je čas důležitý 1 Zapisování předmětů na VŠ –Aktuálně je zajímavý pouze probíhající semestr –Je potřeba udržovat i historické informace Programová skladba u televizní společnosti –Velké množství dat –Častá změna v čase –Drahé chyby (=> důraz na jednoduchost kódu)

Proč je čas důležitý 2 Uchování nejenom aktuálních dat Vyhledávání a analýza údajů k nějakému datu (z nějakého intervalu) –Vyžaduje jednoduchý a přehledný způsob dotazování –Musí být maximálně optimalizováno

Shrnutí Čas hraje v databázích významnou roli Nejenom teoretický problém

Práce s časem pomocí SQL Uchovávání jednoduché tabulky Zaměstnanci (jméno, plat, titul,d_nar DATE) Kdy se Bob narodil? SELECT d_nar FROM Zaměstnanci WHERE jméno = ‘Bob’

Práce s časem pomocí SQL Rozšíříme model o položky start a stop start – začátek platnosti položky stop – konec platnosti položky

Práce s časem pomocí SQL Výsledná tabulka: Zaměstnanci ( jméno, plat, titul d_nar Date, start Date, stop Date )

Temporální projekce 1 Jaký je aktuální Bobův plat? SELECT plat FROM Zaměstnanci WHERE Jméno = ‘Bob’ AND start <= aktuální_čas AND aktuální_čas <= stop

Temporální projekce 2 jménoplattituld_narstartstop Bob60Kasistent Bob70Kasistent Bob70Kdocent Bob70Kprofesor jménoplatstartstop Bob Bob

Temporální projekce 3.1 Vyrobíme si pomocnou tabulku Temp CREATE TABLE Temp(plat, start, stop) AS SELECT plat, start, stop FROM Zaměstnanci WHERE jméno = ´Bob´ | | |----| | | | |

Temporální projekce 3.2 repeat UPDATE Temp T1 SET (T1.stop)=(SELECT MAX(T2.stop) FROM Temp AS T2 WHERE T1.plat = T2.plat AND T1.start < T2.start AND T1.stop >= T2.start AND T1.stop < T2.stop) WHERE EXISTS ( SELECT * FROM Temp AS T2 WHERE T1.plat = T2.plat AND T1.start < T2.start AND T1.stop >= T2.start AND T1.stop < T2.stop) until “žádná řada se nezmění” Záznamy se prodlužují doprava | | | | | | | |

Temporální projekce 3.3 Ještě smažeme nemaximální řádky DELETE FROM Temp T1 WHERE EXISTS ( SELECT * FROM Temp AS T2 WHERE T1.plat = T2.plat AND ((T1.start > T2.start AND T1.stop = T2.start AND T1.stop < T2.stop))

Temporální projekce 4.1 Bez použití repeat/until cyklu Předpokládejme, že máme tabulku Temp jako v předchozím příkladu

Temporální projekce 4.2 SELECT DISTINCT F.plat, F.start, L.stop FROM Temp AS F, Temp AS L WHERE F.start < L.stop AND F.plat = L.plat AND NOT EXISTS (SELECT * FROM Temp AS M WHERE M.plat = F.plat AND F.start < M.start AND M.start < L.stop AND NOT EXISTS (SELECT * FROM Temp AS T1 WHERE T1.plat = F.plat AND T1.start < M.start AND M.start <=T1.stop)) AND NOT EXISTS (SELECT * FROM Temp AS T2 WHERE T2.plat=F.plat AND ((T2.start < F.start AND F.start <= T2.stop) OR T2.start < L.stop AND L.stop < T2.stop))) Snažíme se o srůstání jednotlivých časových úseků Ta NOT EXISTS vylučují “časové díry” Je možné dělat o něco málo snadněji pomocí kurzorů

Temporální projekce pomocí TSQL2 SELECT plat FROM Zaměstnanci WHERE jméno = ‘Bob’

Temporální spojení (join) 1 Rozdělme tabulku Zaměstnanci na dvě: 1.Zaměstnanci1(jméno, plat, start, stop) 2.Zaměstnanci2(jméno, titul,start, stop) Toto dělení usnadní předchozí dotaz: SELECT plat, start,stop FROM Zaměstnanci1 WHERE jméno = ´Bob´

Temporální spojení 2 Při spojování dvou tabulek je třeba rozlišovat čtyři případy: 1.T2.start <= T1.start AND T1.stop <=T2.stop 2.T1.start > T2.start AND T2.stop < T1.stop AND T1.start < T2.stop 3.T2.start > T1.start AND T1.stop < T2.stop AND T2start < T1.stop 4.T2.start>=T1.start AND T2.stop <= T1.stop To výrazně prodlužuje zápis dotazu jednoduché přirozené spojení tabulek Zaměstnanci 1 a 2 je ještě delší než předchozí dotazy !!!)

Shrnutí Práce s časem je v SQL92 velice obtížná Snadno náchylné na chyby programátorů Vnořené dotazy brání optimalizacím …

Reprezentace časové domény model času –Může to být jakákoliv množina, na níž je částečné uspořádání –Přijmutím dodatečných axiomů můžeme získat konkrétní modely

Modely času v DB 1 Lineární čas (linear model) –Uspořádání je lineární –Čas postupuje “krok za krokem” Větvící se čas (branching model) –Čas od minulosti do teď je lineární –Čas od teď do budoucnosti se větví na teoreticky možné větve –Tento model tvoří vlastně strom s kořenem v přítomnosti

Modely času v DB 2 Cyklický model –Např. dny v týdnu –Vyjadřují se jím rekurentní děje Diskrétní model –Je izomorfní přirozeným číslům –Každý prvek má známého následníka

Modely času v DB 3 Hustý model –Je izomorfní racionálním číslům –Mezi každými dvěma okamžiky existuje další Spojitý model –Je izomorfní reálným číslům –Je neobsahuje mezery

Modely času v DB 4 Spojitý model –každé reálné číslo odpovídá jednomu bodu Diskrétní model –Každé reálné číslo odpovídá intervalu –Chronon Nejmenší doba trvání reprezentovatelná v diskrétním modelu

Modely času v DB 5 Modely mohou mít horní (dolní) hranice Znázorňují čas: –Relativní 9 hodin –Absolutní (ten je ovšem také relativní) 9:52,

Modely času v DB 6 Nejčastěji se používají diskrétní modely –Spojité se těžko implementují

Datové typy v SQL 92 DATE –Den a rok –4B TIMESTAMP –Jako Date + část dne (std. mikrosekunda) –8B TIME –Časový okamžik dne. Ve formátu hodina/minuta/vteřina –4B

Spojování dat s časem Nová dimenze, která reprezentuje čas 2 typy: –Čas platnosti (valid time) –Čas transakce (transaction time) –Pokud má oboje: bitemporal –Pokud nic – jedná se o snímek (snapshot)

Čas transakce Čas se zaznamená při manipulaci s daty automaticky (insert, delete,…) Data v minulosti se nikdy nemění (data v tomto modelu pouze přibývají) Nemůže jít do budoucnosti

Reprezentace časové domény Dané modely jsou nejlépe vidět na obrázcích

“Podloží” Čas by přidán do spousty modelů –E-R modelu –Sémantických modelů –… Většina temporálních DB je založena na: –Relačním modelu –OO modelu –Existuje spousta takovýchto modelů

Jednoduché příklady JménoVěc Čas : TIMESTAMP Ericbota1 Erickniha6 Ericbota11 Ericnull13 JménoVěcčas Ericbota[1-5] Erickniha[6-10] Ericbota[11-12]

Temporální dotazovací jazyky Jsou založeny na některém z těchto modelů Jsou odvozeny obvykle od standardních dot. Jazyků (SQL, QUEL, Relační Algebra,…) TSQL, TSQL2, TempSQL, HQL, Hquel, HSQL, TDM, Legol 2.0, …

Obecně vícedimenzionální DB Implementováno např. v Oracle Podpora Multidimenzionální analýzy OLAP (MOLAP) Klauzule CUBE

Závěr Existují úlohy z praxe, kde hraje čas klíčovou roli Řešení těchto úloh jazykem SQL jsou neohrabaná a nedají se účinně optimalizovat Řešení – temporální dotazovací jazyky modely: –Čas transakce –Čas platnosti