Overview of Temporal Databases & TSQL2 Tomáš Hladík 4.11.2014 1.

Slides:



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

Základy jazyka SQL Jan Tichava
Ladislav Hofman, Jan Slavík TUL Předmět databázové systémy
Zpracování SQL Lubomír Andrle 5. přednáška
Funkce Transact-SQL Výběr Filip Čálek.
SQL: DDL v ORACLE CREATE TABLE jméno_tabulky (atribut datový_typ [DEFAULT][attribut_constraint] [, atribut datový_typ [DEFAULT] [attribut_constraint]],...
Aplikační a programové vybavení
Jazyk SQL Ing. Zdena DOBEŠOVÁ. SQL Structured Query Language 1974 SEQUEL (Structured English Query Language) neprocedurální relační dotazovací jazyk norma.
LOV, Listbox, Poplist a Combobox v Oracle Forms LOV – seznam hodnot, které se zobrazí po stisku klávesy Enter v textovém poli. LOV – seznam hodnot, které.
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 Realizace sběru dat v rámci realizovaných úloh.
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
Databázové systémy 1 Cvičení č. 2 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
1 BUMI Úvod do medicínské informatiky Počítačové cvičení č. 3 Ing. Vratislav Čmiel.
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ý
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
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í.
Radek Špinka Přepínače MSSQL výběr.
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.
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Databázové systémy teorie a návrh relačních databázových systémů část II.
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.
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.
Rauer Luboš Kopic Petr Blažek Tomáš. Structured Query Language - dotazovací jazyk -> pracuje s dotazy - neprocedurální jazyk - mocný, ale přitom jednoduchý.
Číslo šablony: III/2 VY_32_INOVACE_P4_3.8 Tematická oblast: Aplikační software pro práci s informacemi II. Databáze – základy SQL Typ: DUM - kombinovaný.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
OSNOVA: a) Příkazy pro větvení b) Příkazy pro cykly c) Příkazy pro řízení přenosu d) Příklad Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítač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
Dynamic SQL P. Částek. Dynamic SQL Embedded SQL je překládaný preprocesorem => za běhu nelze nechat uživatele rozhodovat o vzhledu samotných SQL příkazů.
Aplikační a programové vybavení
Databáze velké množství dat pevně dané struktury
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.
Databázové systémy 2 Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Základní obeznámení s jazykem SQL Databázové systémy.
Databázové systémy SQL Výběr dat.
TEMPORÁLNÍ DATABÁZE A TSQL2
Databázové systémy 2 Zkouška – 8:00. Příklad I - Funkce Vytvořte funkci ZK_DIFF_MIN_MAX (P_ZAM_ID NUMBER) RETURN VARCHAR2. Funkce může vracet.
Příkazy jazyka SQL ve VFP a na SQL Serveru
Databázové systémy přednáška 6 – Indexy
Temporální databáze jOpenSpace 2015 Petr Jůza.
SQL – příkaz SELECT Ing. Roman Danel, Ph.D.
Temporální databáze Martin Zikmund.
Dotazovací jazyk SQL - III
Databázové systémy a SQL
Dotazovací jazyk SQL I.
Databázové systémy a SQL
Databázové systémy a SQL
Šablona 32 VY_32_INOVACE_038.ICT.34
Databázové systémy a SQL
Počítačová cvičení z předmětu Datové sklady #1 Relační model dat
Přednáška 9 Triggery.
Databázové systémy a SQL
Databázové jazyky Jaroslav Pokorný FI BVŠP Bratislava
TSQL2 The Temporal Structured Query Language Jaroslav Ciml
Databázové systémy a SQL
Transkript prezentace:

Overview of Temporal Databases & TSQL2 Tomáš Hladík

Přehled O SQL92 v kombinaci s časem O Temporální databáze O TSQL2 2

Pohled času O Rozvrhy O Platy O Události O Zkoušky O Reklamy O Logování 3

Klasické databáze O Zachycují moment v čase O Obtížnější práce s časem O Veškerou práci řídí aplikační programy O DELETE / UPDATE typicky maže stav a vytvoří nový O Klasicky speciální sloupce pro časové úseky O Historie rozvrhů – pod který semestr patří O Složitější zdrojový kód 4

Temporální databáze O Hledisko času O Ukládají historii O Dva typy databází podle časových údajů O KDY / JAK DLOUHO událost trvala O Čas určujeme sami O KDY byla událost nastala O Čas se měří automaticky 5

Klasické databáze CASE STUDY O Příklad univerzity a svých zaměstnanců O Tabulka EMPLOYEE O Jaký mám Bob plat? SELECT Salary FROM Employee WHERE Name = `Bob` NameString SalaryInteger TitleString 6

CASE STUDY O Jaké je datum narození Boba? SELECT DateOfBirth FROM Employee WHERE Name = `Bob` O PROBLÉM: historie NameString SalaryInteger TitleString DateOfBirthDate 7

CASE STUDY NameString SalaryInteger TitleString DateOfBirthDate StartDate StopDate 8

CASE STUDY O Jaký je aktuální plat Boba? SELECT Salary FROM Employee WHERE Name = `Bob` AND Start <= CURRENT_DATE AND Stop >= CURRENT_DATE 9

CASE STUDY 10

Historie platů – 1. pokus CREATE TABLE Temp(Salary, Start, Stop) AS SELECT Salary, Start, Stop FROM Employee WHERE Name = `Bob` 11

Historie platů – 1. pokus repeat UPDATE Temp T1 SET (T1.Stop) = (SELECT MAX(T2.Stop) FROM Temp AS T2 WHERE T1.Salary = T2.Salary AND T1.Start < T2.Start AND T1.Stop >= T2.Start AND T1.Stop < T2.Stop) WHERE EXISTS (SELECT * FROM Temp AS T2 WHERE T1.Salary = T2.Salary AND T1.Start < T2.Start AND T1.Stop >= T2.Start AND T1.Stop < T2.Stop) until no tuples updated 12 Vytvoříme maximální délku

Historie platů – 1. pokus DELETE FROM Temp T1 WHERE EXISTS (SELECT * FROM Temp AS T2 WHERE T1.Salary = T2.Salary AND ((T1.Start > T2.Start AND T1.Stop <= T2.Stop) OR (T1.Start >= T2.Start AND T1.Stop < T2.Stop)) 13 Menší úseky smažeme

Historie platů – 2. pokus SELECT DISTINCT F.Salary, F.Start, L.stop FROM Temp AS F, Temp AS L WHERE F.Start < L.Stop AND F.salary = L.Salary AND NOT EXISTS (SELECT * FROM Temp AS M WHERE M.Salary = F.Salary AND F.Start < M.Start AND M.Start < L.Stop AND NOT EXISTS (SELECT * FROM Temp AS T1 WHERE T1.Salary = F.Salary AND T1.Start < M.Start AND M.Start <= T1.Stop)) AND NOT EXISTS (SELECT * FROM Temp AS T2 WHERE T2.Salary = F.Salary AND ((T2.Start < F.Start AND F.Start <= T2.Stop) OR (T2.Start < = L.Stop AND L.Stop < T2.Stop))) 14 Platy na sebe navazují Období je maximální

Historie platů – 3. pokus DECLARE emp_cursor CURSOR FOR SELECT Salary, Title, Start, Stop FROM Employee WHERE Name = `Bob` OPEN emp_cursor loop: FETCH emp_cursor INTO :salary, :start, :stop if no data returned then goto finished; find position in linked list to insert this information goto loop; finished: CLOSE emp_cursor; iterate through linked list, printing out dates and salaries 15

Historie platů – TSQL2! SELECT Salary FROM Employee WHERE Name = ´Bob´ 16

Historie platů SQL, další problém O Co když oddělíme historii platu a historii pozice? O Employee1(Name, Salary, Start, Stop) O Employee2(Name, Dept, Start, Stop) 17

18

Historie platů – TSQL2 SELECT Salary.Name, Salary, Dept FROM Employee1, Employee2 WHERE Employee1.Name = Employee2.Name 19

SQL92 vs. TSQL2 O Čas je běžným problémem O Klasický SQL dotaz může být velmi komplikovaný O Ztráta přehlednosti 20

Modely času O Lineární model O Je uspořádán a postupuje po „krocích“, např. dnech O Cyklický model O Dny v týdnu / měsíci O Diskrétní model O Isomorfní k přirozeným číslům (axiom následníků) O Nejčastěji používaný O Nekonečný model O Isomorfní k reálným číslům 21

Čas a SQL92 O DATE O TIME O TIMESTAMP O INTERVAL O V některých DB ani není podporován O Typy: Year-month & second-day 22

Čas O 2 hlavní typy O VALID time O KDY událost nastala / JAK DLOUHO trvala O TRANSACTION time dimension O JAK DLOUHO událost trvala O KDY začala platit a KDY byla zneplatněná O viz platy O SNAPSHOT O DB nepodporující ani jeden typ 23

Rozdíly O VALID time O Možnost vkládat jakýkoli čas O TRANSACTION time O Čas je počítán od doby založení DB O Nelze měnit 24

Časové datové modely O Relační vs. Objektově-orientované 25

Časové datové modely O Valid-time vs. Transaction time 26

Příklady datových modelů O Sevgev‘s valid-time data model O Začátek události O Neumožňuje souběh dvou činností 27

Příklady datových modelů O Sarda‘s data model (valid) O Umožňuje souběh více činností O Null není povinná 28

Příklady datových modelů O HRDM data model (valid) O Funkce: z času do hodnot atributů 29

Příklady datových modelů O The extensional data model O Obě časové dimenze O Kompletně popisuje historii O Kdy se co stalo O Kdy se co změnilo O Paměťově náročné 30

Příklady datových modelů O Bhargava‘s data model O 1. transaction time O 2. valid time 31

Dotazovací jazyky O 40 datových modelů O Každý má lehce odlišnou sémantiku O Jiný dotazovací jazyk 32

TSQL2 Temporal Structured Query Language 33

TSQL2 O Na návrhu se podílelo 18 lidí O Nadmnožina SQL92 O Základ pro nový standard SQL3 O Lineární časový model O 18 miliard let do minulosti O 18 miliard let do budoucnosti O Diskrétní reprezentace časového prostoru O Různé granularity 34

TSQL2 O BCDM O Bitemporal Conceptual Data Model O Valid-time & transaction-time 35

TSQL2 – CREATE TABLE CREATE TABLE Prescription (Name CHAR(30), Physician CHAR(30), Drug CHAR(30), Dosage CHAR(30), Frequency INTERVAL MINUTE) AS VALID STATE DAY AND TRANSACTION O AS – nová konstrukce O SNAPSHOT – bez podpory času O VALID STATE O VALID EVENT O TRANSACTION O VALID STATE AND TRANSACTION O VALID EVENT AND TRANSACTION 36

TSQL2 - SELECT O Komu byly předepsané léky? SELECT SNAPSHOT Name FROM Prescription O Komu byl předepsán Proventil? SELECT SNAPSHOT Name FROM Prescription WHERE Drug = ´Proventil´ 37

TSQL2 - SELECT O Historie SELECT Name FROM Prescription O Jaké léky byly předepsané společně s Proventilem? SELECT P1.Name, P2.Drug FROM Prescription AS P1, Prescription AS P2 WHERE P1.Drug = ´Proventil´ AND P2.Drug <> ´Proventil´ AND P1.Name = P2.Name O Výsledek trojice (Jméno, lék, max čas), kdy byly léky užívány společně 38

TSQL2 – SELECT Restructuring O Kdo bral léky déle než 6 měsíců? SELECT Name, Drug FROM Prescription(Name, Drug) AS P WHERE CAST(VALID(P) AS INTERVAL MONTH) > INTERVAL ´6´ MONTH O Prescription(Name, Drug) - čas (maximální, kdy pacient užívá lék) je vztažen k této dvojici bez ohledu na další sloupce O VALID – elementy valid-time spojené se sloupci O CAST – převod na INTERVAL MONTH za pomocí součtů doby předepsání léků O Výsledek – Jméno, lék, čas předepsání 39

TSQL2 – SELECT / Restructuring O Kdo užíval Proventil po celou dobu léčení? SELECT SNAPSHOT P1.Name FROM Prescription(Name) AS P1, P1(Drug) AS P2 WHERE P2.Drug = ´Proventil´ AND VALID(P1) = VALID(P2) O FROM (SELECT Name FROM Prescription) AS P1, (SELECT Name, Drug FROM Prescription) AS P2 + WHERE P1.Name = P2.Name O P1(Drug) obsahuje podmínku na jméno, VALID(P1) obsahuje VALID(P2), opačná relace neplatí 40

TSQL2 – SELECT / Partioning O Kdo užíval nějaký lék souvisle 6 měsíců SELECT SNAPSHOT Name, Drug, VALID(P) FROM Prescription(Name, Drug) (PERIOD) AS P WHERE CAST(VALID(P) AS INTERVAL MONTH) > INTERVAL ´6´ MONTH O Případně bez „SNAPSHOT VALID(P)“ O Vrací pouze jednu dvojici (Name, Drug) s MAX intervalem O První verze může vrátit více trojic 41

TSQL2 - INSERT INSERT INTO Prescription VALUES (´Melanie´, ´Dr. Beren´, ´Proventil´, ´100mg´, INTERVAL ´8:00´ MINUTE O Výchozí hodnota transaction-time O VALID PERIOD (CURRENT_TIMESTAMP, NOBIND(CURRENT_TIMESTAMP)) O VALID PERIOD ´[ – ]´ 42

TSQL2 - DELETE DELETE FROM Prescription WHERE Name = ´Melanie´ VALID PERIOD ´[ – ]´ 43

TSQL2 - UPDATE UPDATE Prescription SET Dosage TO ´50mg´ VALID PERIOD ´[ – ]´ WHERE Name = ´Melanie´ AND Drug = ´Proventil´ 44

TSQL2 - UDÁLOSTI CREATE TABLE LabTest (Name CHAR(30), Physician CHAR(30), TestID INTEGER) AS VALID EVENT HOUR AND TRANSACTION 45

TSQL2 - UDÁLOSTI O Byl některé pacient jediným účastníkem testů u svého doktora? SELECT L1.Name, L2.Physician FROM LabTest(Name) AS L1, L1(Physician) AS L2, LabTest(Physician) AS L3 WHERE VALID(L1 ) = VALID(L2) AND L2.Physician = L3.Physician AND VALID(L1) = VALID(L3) O VALID(L1) obsahuje souhrn událostí testů na pacientovi 46

TSQL2 - HISTORIE O Výpis historie SELECT P.Drug FROM Prescription AS P WHERE Name = ´Melanie´ O Jak vypadala historie k datu ? AND TRANSACTION(P) OVERLAPS DATE ´ ´ 47

TSQL2 O Kdy byla naposledy editována data platná ke SELECT SNAPSHOT BEGIN (TRANSACTION(P2)) FROM Prescription AS P1, P2 WHERE P1.Name = ´Melanie´ AND P2.Name = ´Melanie´ AND VALID(P1) OVERLAPS DATE ´ ´ AND VALID(P2) OVERLAPS DATE ´ ´ AND TRANSACTION(P1) MEETS TRANSACTION(P2) O N-tice P1 byla opravená – jeden z atributů stavu P2 48

TSQL2 – AGREGAČNÍ FUNCKCE O SELECT COUNT(*) FROM Prescription WHERE Name=´Melanie´ O SELECT Drug, COUNT(*) FROM Prescription GROUP BY Drug O Nově RISING O Nejdelší období, kdy se atribut monotónně zvyšuje O Kdy rostlo dávkování Proventilu u Melanie? O SELECT SNAPSHOT RISING(Dosage) FROM Prescription WHERE Name=´Melanie´ AND Drug=´Proventil´ 49

TSQL2 – ÚPRAVY TABULEK O ALTER TABLE O SQL92 – dostupná jen nejnovější verze O TSQL2 – při přidání sloupce lze získat i starší verzi O Nutná podpora transactional-time 50

ZÁVĚR O Velmi dobrá podpora času O Valid-time O Transaction-time O Výrazně jednodušší dotazování O Změny v rámci tabulek mohou být verzované O Automatické uchovávání historie 51

Zdroje O Carlo Zaniolo, et al: Advanced Database Systems. Chapters 5, 6. Morgan Kaufmann Publ.,

Děkuji za pozornost 53