Temporální a deduktivní databáze



Podobné dokumenty
Databázové systémy. Cvičení 6: SQL

Databázové systémy úvod

TSQL2. (aneb jak na to) Tomáš Janků

Temporální databáze. Jan Kolárik Miroslav Macík

Databáze I. 5. přednáška. Helena Palovská

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Úvod do databázových systémů

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Návrh a tvorba WWW stránek 1/14. PHP a databáze

8.2 Používání a tvorba databází

KIV/ZIS cvičení 5. Tomáš Potužák

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Úvod do databázových systémů

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

Informační systémy ve zdravotnictví. 6. cvičení

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

SQL - trigger, Databázové modelování

Analýza a modelování dat 6. přednáška. Helena Palovská

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Kapitola 6: Omezení integrity. Omezení domény

Jazyk SQL databáze SQLite. připravil ing. petr polách

Programování v jazyku C# II. 5.kapitola

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

KMI / TMA Tvorba mobilních aplikací. 6. seminář ZS 2016/2017 Středa 13:15-15:45

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

Databázové systémy Cvičení 5.2

Databáze I. Přednáška 4

Logické programování

Úvod do databázových systémů

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

Logické programování I

Zápisování dat do databáze

Databázové systémy a SQL

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

Tvorba informačních systémů

Databáze I. Přednáška 7

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Semestrální práce 2 znakový strom

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Oracle XML DB. Tomáš Nykodým

Databáze SQL SELECT. David Hoksza

Operátory ROLLUP a CUBE

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE

Stěhování aplikací. Michal Tomek, Sales Manager

OBJECT DEFINITION LANGUAGE. Jonáš Klimeš NDBI001 Dotazovací Jazyky I 2013

Použití databází na Webu

Databázové systémy a SQL

Analýza dat a modelování. Přednáška 3

Michal Krátký, Miroslav Beneš

1 Webový server, instalace PHP a MySQL 13

Jazyk PL/SQL Úvod, blok

4. lekce Přístup k databázi z vyššího programovacího jazyka

Databázový systém označuje soubor programových prostředků, které umožňují přístup k datům uloženým v databázi.

Paměť počítače. alg2 1

Analýza a modelování dat 3. přednáška. Helena Palovská

ALGORITMIZACE A PROGRAMOVÁNÍ

Funkcionální programování. Kristýna Kaslová

KIV/ZIS cvičení 6. Tomáš Potužák

5. POČÍTAČOVÉ CVIČENÍ

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Programování a implementace Microsoft SQL Server 2014 databází

Algoritmizace a programování

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph)

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

Objektově orientované databáze. Miroslav Beneš

Databázové systémy trocha teorie

O Apache Derby detailněji. Hynek Mlnařík

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Úvod do programovacích jazyků (Java)

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Logika a logické programování

6. blok část B Vnořené dotazy

Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

1. Webový server, instalace PHP a MySQL 13

Databáze I. Přednáška 6

Úvod do databázových systémů

Databázové systémy Cvičení 5.3

Úvod do programovacích jazyků (Java)

Databázové a informační systémy

Ukázka knihy z internetového knihkupectví

Negativní informace. Petr Štěpánek. S použitím materiálu M.Gelfonda a V. Lifschitze. Logické programování 15 1

PRG036 Technologie XML

Text úlohy. Systémový katalog (DICTIONARY):

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Databázové systémy I

PHP a Large Objecty v PostgreSQL

Transkript:

Temporální a deduktivní databáze Marek Rychlý Vysoké učení technické v Brně Fakulta informačních technologií Ústav informačních systémů 3. demonstrační cvičení pro PDB 17. října 2014 Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 1 / 47

Obsah 1 Temporální databáze 2 Úvod do deduktivních databází Databáze XSB Datalog: definice a dotazování dat, standardní predikáty Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 2 / 47

Cíle cvičení Temporální databáze, existující implementace. Představení jazyka (A)TSQL2, jeho části DDL a DML. Ukázka práce s TimeDB2 a TSQL2lib pomocí JDBC. Rozbor problémů v temporálních databázích...................................................................... Úvod do deduktivních databází, jejich implementace. Představení jazyka Datalog. Ukázka práce s databází XSB. Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 3 / 47

Temporální DBS zohledňují časové vlastnosti ukládaných dat. Přirozené pro řadu oblastí. (bankovnictví, legislativa, katastr, medicínská data, monitorování, atd.) Jazyky pro temporální databáze: Bitemporal ChronoSQL, (Andreas Steiner, ETH Zurich) Chronolog (temporální Prolog), (Michael Bohlen, Aalborg University) Temporal SQL (TSQL, převzat do SQL3), (Rick Snodgrass, University of Arizona) TSQL2 (rozšíření SQL-92 ze srpna 1994, následník TSQL). (R. Snodgrass + Christian Jensen, Aalborg University) ATSQL2 (rozšíření TSQL2, pouze vývojový prototyp). (Bohlen + Jensen + Snodgrass + Steiner) Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 5 / 47

Bitemporální model dat Z hlediska temporální databází rozlišujeme časové modely: 1 valid-time kdy jsou data pravdivá v modelovaném světě, (tabulky as validtime v TimeDB2 a as valid state/event v TSQL2lib) 2 transaction-time kdy jsou data uložena v databázi, začínají provedením vkládající databázové transakce. (např. versioning v Oracle DBWM nebo tabulky as transaction v TSQL2lib) Tyto dvě složky dohromady tvoří bitemporální model dat. Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 6 / 47

Existující implementace temporálních databází TimeDB v2.2 (Andreas Steiner, TimeConsult) (JDBC adaptér, jazyk ATSQL2, podporuje pouze valid-time, implicitní temporální selekce, vývojový prototyp) TSQL2lib v1.0 (Jiří Tomek, FIT VUT) (JDBC adaptér, jazyk TSQL2, podporuje bitemporální model, explicitní temporální selekce, výsledek DP) ChronoLog (Michaela Bohlen, Aalborg University) (nadstavba nad Oracle, jazyk Prolog a ChronoSQL, podporuje pouze valid-time, jen demonstrační aplikace) Oracle Flashback Database & Workspace Manager (podpora valid-time pomocí verzování a transaction-time přístupem k historickým datům pomocí flashback dotazů) Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 7 / 47

Druhy tabulek v (A)TSQL2 1 snímková tabulka (snapshot): Klasická relační tabulka nepodporující čas platnosti ani čas transakce, nelze se dotazovat na čas. 2 stavová tabulka (tabulka platného času, valid-time): Každý záznam spjat s množinou všech disjunktních nesousedících časových intervalů (tzv. stavová tabulka) nebo okamžiků (tzv. tabulka událostí), kdy záznam platil nebo došlo k události reprezentované záznamem. Přesnost času dána při vytváření tabulky. 3 transakční tabulka (transaction-time): Každý záznam je spjat s přesným časovým intervalem jeho přítomnosti v databázi (od vložení až po modifikaci nebo smazání). 4 bitemporální tabulka (tabulka obojího času): Kombinace stavové a transakční tabulky. Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 8 / 47

Časová ontologie v jazyce (A)TSQL2 Časová osa v (A)TSQL2 je na obou koncích omezená. Okamžik na časové ose (instant) lze určit pouze přibližně, může být přesnější než nejmenší jednotka času, tvz. chronon, zadán časovým razítkem a měřítkem (např. den 2010-11-04). Dále je možné definovat čas intervalem nebo dobou trvání, interval je dán dvěma okamžiky a otevřeností/uzavřeností, doba trvání je dána hodnotou a měřítkem (např. 1 den). (A)TSQL2 používá koncept základních hodin, přiřazují časovým údajům konkrétní sémantický význam, (nejsou vázány na žádný konkrétní kalendářový systém) synchronizačními body rozdělují časovou osu na úseky. Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 9 / 47

TimeDB2 Úvod Temporální databáze Prototyp temporální databáze s jazykem ATSQL2. ATSQL2 SQL překladač. Vrstvený přístup k implementaci TDB. Implementovaný v jazyce Java. Poskytuje vlastní rozhraní TDBCI pro temporální dotazy. Používá technologii JDBC pro back-end databáze. Podporuje různé back-end databáze. (Oracle, Sybase, Cloudscape) TimeDB2/ATSQL2 budeme používat pro demonstraci dotazů nad temporálními daty. Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 10 / 47

TimeDB2 Demo aplikace Stáhneme soubor: http://www.timeconsult.com/software/timedb%202.2.zip Zprovozníme podle přiloženého readme souboru. Nastavíme connection string : jdbc:oracle:thin: (login)/(password)@gort.fit.vutbr.cz:1521:dbgort Spuštění po úpravě souborem: TimeDB22.bat Pro vytvoření db. použít příkaz: TimeDB/Create DB Na začátku nutné vždy otevřít db.: TimeDB/Open DB Režim spouštění příkazů z editačního okna nebo skriptu uloženého v souboru (odpovědi vypisuje systém na konzolu). Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 11 / 47

TimeDB2 Dotazovací režim I ATSQL2 podporuje ve valid-time modelu různé režimy dotazování: 1 sequenced (výsledek je stavová tabulka) období platnosti výsledků je viditelné, plně podporuje temporální dotazování, TimeDB (1): VALIDTIME SELECT... FROM... WHERE... TSQL2lib (1): SELECT... FROM... WHERE... TimeDB (2): VALIDTIME PERIOD [a-b) SELECT... FROM tablename... WHERE... TSQL2lib (2): SELECT... FROM tablename... WHERE valid(tablename) overlaps period [a-b) AND... Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 12 / 47

TimeDB2 Dotazovací režim II 2 nonsequenced (výsledek je snímková tabulka) temporální údaje jsou odstraněny, ale umožněno jejich explicitní použití, TimeDB (1): NONSEQUENCED VALIDTIME SELECT... FROM tablename... WHERE validtime(tablename)... TSQL2lib (1): SELECT SNAPSHOT... FROM tablename... WHERE valid(tablename)... TimeDB (2): NONSEQUENCED VALIDTIME PERIOD [a-b) SELECT... FROM tablename... WHERE valid(tablename)... (POZOR: zde je výsledkem stavová tabulka, kde všechny záznamy mají platnost od a včetně do b) TSQL2lib (2): nelze, není potřeba (používalo by se pro nastavení platnosti výsledků subselectů, ale ty lze filtrovat přímo v nadřazené podmínce) Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 13 / 47

TimeDB2 Dotazovací režim III 3 snapshot (výsledek je stavová tabulka) výsledek je platný implicitně v reálném čase, časy platnosti jsou skryty, TimeDB: SELECT... FROM tablename... WHERE... (výsledek je stavová tabulka se skrytými časy platnosti) TSQL2lib: SELECT SNAPSHOT... FROM tablename... WHERE valid(tablename) contains date now AND... (POZOR: výsledek je snímková tabulka, tj. bez časů platnosti) TSQL2lib: SELECT... FROM tablename... WHERE valid(tablename) contains date now AND... (POZOR: výsledek je stavová tabulka, tj. se časy platnosti) Je zde dobře viditelný rozdíl mezi TSQL2 (používá TSQL2lib) a Applied TSQL2 (ATSQL2 v TimeDB), kdy čistý TSQL2 neimplementuje temporální selekci implicitně, ale explicitně pomocí operátorů VALID(tablename) a TRANSACTION(tablename) v klauzuli WHERE, a SNAPSHOT jen vytváří snímkové tabulky (bez temporálních dat). Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 14 / 47

TimeDB2 Podporované časové typy span (doba trvání určité události bez počátku, často výsledek operací nad časem, např. interval 2 year 1 month) event (výskyt události jako bod na časové ose, např. date 1964-09-21 ) interval (začátek a trvání události jako časový úsek, např. period[1980-1990)) Také lze vyjádřit pomocí konstant počáteční (beginning), aktuální (now) a konečný čas světa (forever). Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 15 / 47

TimeDB2 Intervaly pro platnost dat Často se používá intervalů pro reprezentaci výskytu události. PERIOD [1980-1981) popisuje událost, která se stala v začátkem roku 1998 a trvala jeden, PERIOD [1980/10/05-1980/10/06) popisuje událost, která se stala 5. října 1980 a trvala 1 den, PERIOD [1980/10/05 12:30-1980/10/05 12:31) popisuje událost, která se stala 5. října 1980 v 12.30 hodin a trvala 1 minutu, PERIOD [1981/1/1-1981/1/1) nevyjadřuje platný čas pro žádnou fyzickou událost (prázdný interval), DATE 1999/01/01 vyjadřuje okamžik, který nastal 1. ledna 1999 v 0.00 hodin. Hodnoty výrazu PERIOD se interpretují tak, že obsahuje všechny body na časové ose včetně počátku intervalu, ale bez jeho konce. Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 16 / 47

TimeDB2 Ukázka definice a dotazování dat CREATE TABLE student(jmeno varchar(15), PRIJMENI varchar(20), studium varchar(10)) AS VALIDTIME; VALIDTIME PERIOD [2004-2007) INSERT INTO student VALUES ( Jan, Novak, BIT ); VALIDTIME PERIOD [now-forever) INSERT INTO student VALUES ( Libor, Tesar, MIT ); NONSEQUENCED VALIDTIME SELECT * FROM student; /* bez casovych udaju */ VALIDTIME SELECT * FROM student; /* vcetne casovych udaju */ VALIDTIME PERIOD [1990-1994) SELECT * FROM student; /* jen v~danem obdobi */ Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 17 / 47

TimeDB2 Aritmetické operace s časem CREATE TABLE time(s interval, I~period, E date); INSERT INTO time VALUES (interval 3 year 2 month, period [1989-1991), date 1970-01-01 ); SELECT a.s+b.s, a.s-b.s FROM time a, time b; /* secteni a odecteni casovych intervalu */ SELECT a.e+b.s, a.e-b.s FROM time a, time b; /* pricitani a odecitani int. a udalosti */ SELECT * FROM time a, time b WHERE a.i precedes b.i; /* predchazejici cas. obdobi nebo datum */ SELECT * FROM time a, time b WHERE a.i overlaps b.i; /* casove obdobi presahuje druhe */ SELECT * FROM time a, time b WHERE a.i meets b.i; /* porovnani zda se intervaly dotykaji */ SELECT * FROM time a, time b WHERE a.i contains b.e; /* cas. obdobi obsahuje jine nebo obsahuje datum */ Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 18 / 47

TimeDB2 Pokročilé temporální dotazy Implicitní temporální údaje je možné explicitně používat v dotazech. NONSEQUENCED VALIDTIME SELECT VALIDTIME(e1),e1.state FROM eh e1 WHERE VALIDTIME(e1) PRECEDES PERIOD [1900-1901); validtime(e1) e1.state -------------------------------------- [1198-1621) czech kingdom [1025-1040) poland [1040-1596) poland [1596-1795) poland Co způsobí vynechání slova NONSEQUENCED? V dotazu budou uvedeny údaje o platnosti záznamů 2. Dotaz by měl vrátit pouze takové záznamy, které předcházejí vyžadovanou platnost, ale jsou ještě stále platné. Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 19 / 47

Použití TimeDB2 a TSQL2lib v JDBC 1 Získat knihovny TSQL2lib, TimeDB 2.2 a HSQLDB 2.3.2. (stáhnout z http://www.fit.vutbr.cz/homes/rychly/pdb/lib/ vč. adresáře timedb-scripts a konfiguračního souboru prefs) 2 Knihovny přidat do CLASSPATH pro překlad a spuštění. (javac -classpath...:./lib/tsql2lib.jar:./lib/timedb22.jar:./lib/hsqldb232.jar... ) 3 Spustit demonstrační příklady Demo3TimeDB a cz.vutbr.fit.pdb.demo3.tsql2lib.demo3tsql2lib.............................................................................. Použití TSQL2lib, jako adaptér JDBC spojení: // create a OracleDataSource instance OracleDataSource ods = new OracleDataSource(); ods.set... // connect to the database via TSQL2 adapter Connection conn = new TSQL2Adapter(ods.getConnection()); Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 20 / 47

Implementace (A)TSQL2 Stavové tabulky Stavové tabulky se implementují jako běžné tabulky rozšířené o sloupce platnosti (VTS, VTE). Při vytváření tabulky je určí její druh, měřítko času a podmínky odsávání. (platí v TSQL2lib; v TimeDB2 pouze stavové tabulky bez přesnosti) Pří vkládání/mazání/aktualizaci záznamu se specifikuje jeho platnost (interval od-do). (není-li platnost zadána, platí akce od aktuálního okamžiku dále) Aktualizovat záznam znamená ukončit platnost předchozího a vložit aktuální s danou platností. Zpracování dotazu závisí na režimu (snapshot). ( snapshot v TSQL2lib ignoruje čas, v TimeDB2 vybere pouze aktuální data) Při vyhodnocování dotazu se filtruje podle hodnot sloupců platnosti. (filtr je časti implicitní, v závislosti na režimu dotazu) Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 21 / 47

Aktualizace záznamů s omezenou platností Leží-li interval platnosti mazaných záznamů uprostřed intervalu platných dat, je původní interval rozdělen (tzn. i ovlivněné záznamy). Na jejich místo lze pak vložit nové, aktuální. VALIDTIME PERIOD [1950-1955) DELETE FROM eh WHERE (ccity = warsaw ); VALIDTIME SELECT ccity FROM eh WHERE state = poland ; valid ccity ---------------------------------- [1025-1040) gniezno [1040-1596) cracow [1596-1795) warsaw [1918-1939) warsaw [1945-1950) warsaw <<< [1955-1993) warsaw <<< (příklad je v ATSQL2/TimeDB2) Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 22 / 47

Mazání ze stavové tabulky V případech (b) a (e) bude aktualizována platnost u fyzického záznamu. V případě (c) bude aktualizována platnost u fyzického záznamu a navíc vložen další fyzický záznam se zbytkem platnosti. V případě (d) bude fyzický záznam odstraněn. Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 23 / 47

Aktualizace ve stavové tabulce V případech (b) a (e) bude aktualizována platnost u fyzického záznamu se starými daty a vložen další fyzický záznam s novými daty a novou platností. V případě (c) bude aktualizována platnost u fyzického záznamu se starými daty a navíc vloženy další dva fyzické záznamy se zbytkem platnosti a starými daty a novou platností a novými daty. V případě (d) bude fyzický záznam jen aktualizován. Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 24 / 47

Referenční integrita mezi stavovými tabulkami Bude aktualizován záznam s ID 1 a novým časem platnosti dat: Jak zachováme referenční integritu? Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 25 / 47

Referenční integrita mezi stavovými tabulkami řešení Záznam z druhé tabulky rozdělíme na dva podle prvního záznamu a nastavíme odkazy mezi odpovídajícími variantami. Použije se složený primární klíč, bude obsahovat i čas platnosti. (původní primární klíč byl jen ID a to je nyní nejednoznačné) Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 26 / 47

Doporučení pro implementaci (A)TSQL2 Umožnit všechny režimy práce s temporálními daty. (pro ATSQL2/TimeDB všechny tři, pro TSQL2lib stavové a snímkové dotazy) V tabulkách navíc uschovávat ke každému záznamu rozsah jeho platnosti (dolní a horní mez intervalu). Při vyhodnocování dotazu určit požadovanou platnost a tuto doplnit do WHERE části dotazu pro každou temporální tabulku. Při mazání záznamu nalézt záznamy v jeho platnosti a ty bud odstranit (jsou obsaženy v mazaném) nebo upravit platnost (překrývají se s mazaným) nebo záznamy rozdělit (obsahují mazaný). Kontrolovat referenční integritu i vzhledem k platnosti. (při mazání rodiče smazat i potomky ve stejné platnosti, při vkládání potomka kontrolovat existenci rodiče v celé jeho platnosti) Při vkládání záznamu slučovat stejné záznamy dotýkající se navzájem svou platností. (tzv. shlukování dat, vizte přednášky) Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 27 / 47

Do projektu k převodu (A)TSQL2 na čisté SQL Alespoň 5 netriviálních dotazů temporální povahy. (jednoduché dotazy nad jednou tabulkou, ale také nad JOINem více tabulek, vč. vkládání a mazání záznamů s uvedením jejich platnosti) Pro temporální dotazy napsat strukturu příslušných tabulek a SQL dotazy, které se provedou při volání temporálních dotazů. (např. při mazání včetně zjištění rozsahu mazání a úprav platnosti stávajících a mazání přeživších záznamů) Implementovat uvedené dotazy ve vaší aplikaci. (nejlépe jako kombinované multimediální, prostorové a temporální dotazy) Za nadstandardní řešení bude považováno např.: Interpret libovolného (A)TSQL2 dotazu s jistými omezeními. Čím méně omezení a čím více pokryto (A)TSQL2, tím lepší projekt. Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 28 / 47

Literatura k temporálním databázím Jiří Tomek: TSQL2 interpret nad relační databází. http://www.fit.vutbr.cz/study/dp/dp.php?id=8603 Christian S. Jensen: Temporal Database Management. http://www.cs.aau.dk/~csj/thesis/ Richard T. Snodgrass: Developing Time-Oriented Database Applications in SQL. ISBN 1-55860-436-7 http://www.cs.arizona.edu/people/rts/tdbbook.pdf, http://www.cs.arizona.edu/people/rts/cdrom.tgz Andreas Steiner: A Generalisation Approach to Temporal Data Models and their Implementations. http://www.timeconsult.com/publications/phd-thesis.pdf Ocelka et al.: Současné db. modely Temporální databáze. http://www.fi.muni.cz/usr/popelinsky/lectures/databaze/projekty98/ ocelka.html Zdeněk Vilušínský: Temporalní databáze a TSQL2. http://www.ksi.mff.cuni.cz/~pokorny/dj/prezentace/3_39.ppt Richard T. Snodgrass et al.: A TSQL2 tutorial. ACM SIGMOD Record. http://doi.acm.org/10.1145/187436.187449 Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 29 / 47

Úvod do deduktivních databází Úvod do deduktivních databází Databáze XSB Datalog: definice a dotazování dat, standardní predikáty Zpracovávání velkých objemů dat s vyjadřovacími schopnostmi logických programovacích jazyků. PROLOG = jazyk pro logické programování. DATALOG = jazyk deduktivní databáze, používá: fakta: statická data, základní informace, pravidla: návod jak odvodit data, která nejsou explicitně uložena, dotaz: výraz jehož výsledkem jsou nalezená a odvozená data. Uživatel položí otázku, systém prohledává databázi a používá odvozovací pravidla při hledání odpovědi. Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 31 / 47

Databáze XSB Temporální databáze Úvod do deduktivních databází Databáze XSB Datalog: definice a dotazování dat, standardní predikáty Systém pro logické programování a implementace deduktivní databáze. Dva způsoby vyhodnocení predikátu: 1 prologovské vyhodnocování shora dolů, pro cyklické závislosti nemá konečný výpočet, 2 metoda zdola nahoru pro zvolené predikáty (tzv. tabled resolution ), dovoluje vyhodnocovat cyklické závislosti. Jazyk HiLog umožňuje konstruovat predikáty vyššího řádu. (predikátový symbol může mít význam proměnné = prostředek pro definici generických predikátů) Rozhraní pro C, Javu, Perl, obj. orientovaný systém Flora, F-Logic, přístup k ext. datovým zdrojům ODBC či Oracle. Open-source, verze pro systémy Unix, Linux a Windows. (http://xsb.sourceforge.net/) Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 32 / 47

Ukázka spuštění interpretu XSB Úvod do deduktivních databází Databáze XSB Datalog: definice a dotazování dat, standardní predikáty Načtení modulu (definiční režim), příkazový řádek (dotazovací režim): [xsb_configuration loaded] [sysinitrc loaded] XSB Version 3.3.6 (Pignoletto) of January 2, 2012 [x86_64-pc-linux-gnu 64 bits; mode: debug; engine: multi-threading; scheduling: local] [Patch date: 2012/01/09 03:50:32]?- [pribuzni]. [Compiling./pribuzni] [Module pribuzni compiled, cpu time used: 0.0430 seconds] [pribuzni loaded] yes?- rodic(x, Marie Terezie ). X = Karel VI. yes?- halt. End XSB (cputime 0.03 secs, elapsetime 51.50 secs) Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 33 / 47

Úvod do deduktivních databází Databáze XSB Datalog: definice a dotazování dat, standardní predikáty Platné výrazy XSB (manuál, vol. 1, ch.4) Syntaxe jazyka XSB vychází ze syntaxe jazyka PROLOG, a obsahuje pouze tyto druhy výrazů: konstanta, celé číslo: 1, 3456, 95359, 1601FA4 reálné číslo: 1.0, 34.56, 817.3E12, 0.0314e26 atomické výrazy: foo, foo_bar1, I am also atom!, [] proměnná, sekvence písmen, číslic, a _ : X, HiLog, _3, _List nepojmenovaná proměnná _ složený výraz, seznam. Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 34 / 47

Úvod do deduktivních databází Databáze XSB Datalog: definice a dotazování dat, standardní predikáty Platné výrazy XSB složený výraz a seznamy Složený výraz PROLOG + HiLOG (Struktura, Funktor) Struktura = term a sekvence argumentů: foo(bar), prolog(a,x), 123(joh_n,500), X(Y,Z,Y(W)), f(a,(b(c))(d)), map(double)([],[]) Explicitní odkaz na funktor = Name/Arity: foo/1, prolog/2, 123/2, X/3, f/2, map(double)/2 Seznamy: Prázdný seznam: [] Neprázdný seznam:.(1,.(2,.(3, []))), [1,2,3] Pattern matching: [Tail Head], (Tail, Head) Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 35 / 47

Úvod do deduktivních databází Databáze XSB Datalog: definice a dotazování dat, standardní predikáty Predikáty explicitně a odvoditelně uložené Explicitně uložené predikáty: B(A1, A2,..., An). rodic( Leopold I., Karel VI. ). rodic( Karel VI., Marie Terezie ). rodic( Marie Terezie, Josef II. ). Odvoditelně uložené predikáty: B :- A1, A2,..., An. A 1 A 2... A n B predek(x,y) :- rodic(x,y). predek(x,y) :- rodic(x,z), predek(z,y). potomek(x,y) :- predek(y,x). Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 36 / 47

Úvod do deduktivních databází Databáze XSB Datalog: definice a dotazování dat, standardní predikáty Kombinace expl. a odv. uložených predikátů Obecně je kombinace expl. a odv. uložených predikátů potřeba. Predikát nat vyjadřuje tvrzení je přirozené číslo. nat(zero). nat(succ(x)) :- nat(x). Funkce sčítání pro predikát nat je plus(0,n,n) :- nat(n). plus(succ(m),n,succ(z)) :- plus(m,n,z). Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 37 / 47

Tranzitivní uzávěr Temporální databáze Úvod do deduktivních databází Databáze XSB Datalog: definice a dotazování dat, standardní predikáty V deduktivní databázi je jednoduché definovat vztah s vlastností tranzitivní relace. Predikát rodic(x,y) deklaruje vztah x je rodičem y. Definujme tranzitivní uzávěr predek: chybně (zacyklí se) predek(x,y) :- rodic(x,y). predek(x,y) :- predek(x,z), predek(z,y). správně predek(x,y) :- rodic(x,y). predek(x,y) :- rodic(x,z), predek(z,y). Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 38 / 47

Dotazy Temporální databáze Úvod do deduktivních databází Databáze XSB Datalog: definice a dotazování dat, standardní predikáty Test, zda je A prarodičem B:?- prarodic( Leopold I., Marie Terezie ). yes Nalezení všech vyhovujících hodnot: (při výpisu hodnot sekvence. a Enter přejde na další položku, jen klávesa Enter ukončí výpis)?- predek(x, Marie Terezie ). X = Karel VI.. X = Leopold I.. no setof vrací výsledek jako množinu?- setof(x, dite(x, Karel VI. ),L). X = _h114 L = [Leopold Jan,Marie Anna 2,Marie Terezie] bagof vrací výsledek jako multi-množinu. Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 39 / 47

Základní predikáty Temporální databáze Úvod do deduktivních databází Databáze XSB Datalog: definice a dotazování dat, standardní predikáty true vždy splněno, fail nikdy splněno, fail_if/1 je platný, když predikát platný není, P -> Q ; R jestliže P, potom Q, jinak R, P -> Q jestliže P, potom Q, jinak fail, X = Y když X a Y jsou unifikovatelné, X \= Y když X a Y nejsou unifikovatelné, T1 == T2 splněno jsou-li T1 a T2 identické, T1 \== T2 splněno nejsou-li T1 a T2 identické, T1 @< T2 pokud T1 předchází T2, T1 @>= T2 pokud T1 následuje za T2 nebo je identické, T1 @= T2 jsou-li identické proměnné, nebo shodná struktura. Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 40 / 47

Třídění Temporální databáze Úvod do deduktivních databází Databáze XSB Datalog: definice a dotazování dat, standardní predikáty sort(l1, L2) porovnává seznam L1 se setříděným seznamem L2,?- sort([1,4,3,2], L). L = [1,2,3,4]; keysort(l1, L2) porovnává seznam L1 se setříděným seznamem L2, kde prvky seznamů jsou dvojice Key-Value.?- keysort([1-a,3-d,2-h,4-f], L). L = [1 - a,2 - h,3 - d,4 - f] Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 41 / 47

Aritmetické výrazy Temporální databáze Úvod do deduktivních databází Databáze XSB Datalog: definice a dotazování dat, standardní predikáty Používá se is(result,expression) standardní predikát.?- X is 3 /2. X = 1.5000 yes Funktory, které mohou být vyhodnoceny: +(Expr1,Expr2) -(Expr1) -(Expr1,Expr2) ceiling(expr) *(Expr1,Expr2) float(expr) /(Expr1,Expr2) floor(expr) //(Expr1,Expr2) Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 42 / 47

Predikáty pro práci se seznamy Úvod do deduktivních databází Databáze XSB Datalog: definice a dotazování dat, standardní predikáty V modulu basics: append(list1, List2, List3) member(element, List) ith(index, List, Element) delete_ith(index, List, Element, RestList) v modulu listutil length(list, Length) same_length(list1, List2) reverse(list1, List2) subseq(list1, List2a, List2b) Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 43 / 47

Predikáty pro práci s řetězci Úvod do deduktivních databází Databáze XSB Datalog: definice a dotazování dat, standardní predikáty V modulu string: str_sub(sub, String, Pos) str_length(string, Length) substring(string, BeginOffset, EndOffset, Result) string_substitute(inpstr, SubStr, SubList, Out) Substr je funktor s(begoffset, EndOffset)?- string_substitute( qaddf, [s(2,4)], [ 123 ],L). L = qa123f concat_atom(atomlist,atom) Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 44 / 47

Agregované operátory Úvod do deduktivních databází Databáze XSB Datalog: definice a dotazování dat, standardní predikáty Reprezentace operátoru Count?- import length/2 from basics.?- length(l, C), setof(x, nadrizenyt(x, rysavy), L). C = 3 yes a další operátory... Více informací v manuálu XSB a v tutoriálech systému PROLOG. Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 45 / 47

Literatura k deduktivním databázím Úvod do deduktivních databází Databáze XSB Datalog: definice a dotazování dat, standardní predikáty The XSB System, Version 3.5.x, Volume 1: Programmer s Manual. http://sourceforge.net/p/xsb/src/head/tree/trunk/xsb/docs/userman/ manual1.pdf?format=raw F. S. Perez: Datalog Educational System V3.8: User s Manual. http://sourceforge.net/projects/des/files/des/des3.8/manualdes3.8. pdf/download Karel Ježek: a jejich implementace v relačním prostředí. ISBN 80-210-2958-7 http://www.kiv.zcu.cz/~jezek_ka/vyuka/db2%202005/deduc/datakon02.pdf Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 46 / 47

Poděkování a otázky Děkuji za pozornost. Otázky? Diskuze? Marek Rychlý Temporální a deduktivní databáze 3. demonstrační cvičení pro PDB, 17. října 2014 47 / 47