George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu



Podobné dokumenty
Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

Iterator & for cyklus

Java a XML. 10/26/09 1/7 Java a XML

Čipové karty Lekařská informatika

KIV/PIA 2013 Jan Tichava

Abstraktní datové typy: zásobník

Object-relational mapping (JPA, Hibernate)

Stream API. Petr Krajča. Základy programovaní 4 (Java) Katedra informatiky Univerzita Palackého v Olomouci

RMI Remote Method Invocation

Přehled systému Microsoft SQL Server. Komu je kniha určena Struktura knihy Nejvhodnější výchozí bod pro čtení knihy Konvence a struktura knihy

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

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

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

Programování v Javě I. Leden 2008

Projekty pro výuku programování v jazyce Java

Databázové systémy trocha teorie

Programování v Javě I. Únor 2009

5 Rekurze a zásobník. Rekurzivní volání metody

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Principy objektově orientovaného programování

Vědecký tutoriál, část I. A Tutorial. Vilém Vychodil (Univerzita Palackého v Olomouci)

Java a Caché IV: Manipulace s objekty

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC

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

PostgreSQL. Podpora dědičnosti Rozšiřitelnost vlastní datové typy. Univerzální nasazení ve vědecké sféře

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

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

Technologie JavaBeans

4IT218 Databáze. 4IT218 Databáze

DPKOM_06 Dědičnost entit a zpětná volání posluchači

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

2011 Jan Janoušek BI-PJP. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

Dotazování nad stromem abstraktní syntaxe

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Teoretické minimum z PJV

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Semin aˇr Java N avrhov e vzory Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2009 Radek Koˇc ı Semin aˇr Java N avrhov e vzory 1/ 25

KTE / ZPE Informační technologie

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

NIO. Aplikační programování v Javě (BI-APJ) - 12 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Úvod do programování - Java. Cvičení č.4

Šablony, kontejnery a iterátory

Databázové systémy úvod

Databázové systémy I. 1. přednáška

Datové struktury. alg12 1

Programování v C++ 2, 4. cvičení

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Objektově orientované programování

Anotace a Hibernate. Aleš Nosek Ondřej Vadinský Daniel Krátký

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Dědění, polymorfismus

Virtual Private Database (VPD) Jaroslav Kotrč

typová konverze typová inference

MySQL sežere vaše data

RMI - Distribuované objekty v Javě

20. Projekt Domácí mediotéka

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

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

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

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů

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

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4

Typický prvek kolekce pro české řazení


Základy programovaní 3 - Java. Unit testy. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 26.,27.

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

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

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

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

Lambda funkce Novinky v interfaces Streamy Optional - aneb zbavujeme se null. Java 8. Ondřej Hrstka

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

Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013

public class Karel { private int position; public boolean issmiling; public int getposition() { return position;

Java - řazení objektů

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

Semin aˇr Java N avrhov e vzory Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2008 Radek Koˇc ı Semin aˇr Java N avrhov e vzory 1/ 24

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Distribuované systémy a výpočty

UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky. Databázová aplikace pro evidenci mechatronických stavebnic Michal Grof

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

JAVA. Další jazyky kompilovatelné do Java byte-code

Úvod do programování v jazyce Java

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

Uložené procedury Úvod ulehčit správu zabezpečení rychleji

Vytváření a použití knihoven tříd

Úvod do programovacích jazyků (Java)

Elektronická dokumentace - LATEX. Maticové operace

programování formulářů Windows

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

Nasazení Object Relation Mapping nástrojů nad legacy datovým modelem

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

Výchozí a statické metody rozhraní. Tomáš Pitner, upravil Marek Šabo

Transkript:

A Tutorial Advances in query languages for similarity-based databases George J. Klir Petr Krajča State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu Palacky University, Olomouc, Czech Republic prepared for International Centre for Information and Uncertainty, Palacky University, Olomouc!!!! Krajča P. (DAMOL) RESIQL 8. 11. 2012 1 / 16

RESIQL 1 RESIQL: relační databázový systém implementace relačního databázového modelu navrženého RB a VV platforma pro další výzkum (algoritmy, závislosti,... ) ověřování vlasností databázového modelu implementace v Javě... 2 RESIQL: jazyk dotazovací jazyk pro relační databázový systém RESIQL částečně kompatibilní s SQL (výrazná inspirace Tutorial D) některé části SQL zavrženy (např. SELECT) Krajča P. (DAMOL) RESIQL 8. 11. 2012 2 / 16

Životní cyklus dotazu I. RESIQL: klient uživatelské rozhraní na první pohled,,hloupá Swing-ová aplikace, která ale umí: 1 zpracovat vstup od uživatele a vypsat výsledek (vše lze volitelně zformátovat jako text nebo LaTex) 2 syntax-highlighting 3 nápověda kódu 4 práce s historíı ala BASH (historie příkazů uložena přímo v RESIQL) 5 umí poradit s opravou některých chyb 6... (řada dalších nedokumentovaných vlasností) Krajča P. (DAMOL) RESIQL 8. 11. 2012 3 / 16

Parser konverze vstupu do syntaktického stromu využívá se knihovna ANTLR (+ možnost přepisovat AST) CREATE TABLE foo (a int, b int); STATEMENTS TABLE ACTION CREATE NAME foo TABLE COLUMNS a int b int příkaz se vztahuje k tabulkám příkaz vytvoř tabulku jméno tabulky seznam sloupců jméno sloupce typ sloupce, popř. další vlastnosti Krajča P. (DAMOL) RESIQL 8. 11. 2012 4 / 16

Front End konverze syntaktického stromu do objektů (typicky POJO) třída QLCompiler podle typu objektu a názvu akce volá konverzní metodu objekty mají strukturu: public class CreateTableCommand extends GenericCommand { private String tablename; private List<ColumnDefinition> columns; private List<String> primarykey;... public static final class ColumnDefinition { private String columnname; private String domain;... Krajča P. (DAMOL) RESIQL 8. 11. 2012 5 / 16

...konečně Akce předchozí objekt de facto popisuje, co se má s databází dělat v dalším kroce je objekt převeden na objekt provádějící danou akci oddělení těchto dvou kroků umožňuje některé operace zaměňovat (např. SET a DELETE) každá akce dědí ze třídy QLStatement public abstract class QLStatement implements Closeable { } // otestuje, jestli daný příkaz je možno provést protected void check(integritycheck check) { } // vrací popis problémů, které se vyskytly public List<String> getknownissues() {... } // provede daný příkaz public abstract QLResult invoke() throws BadRequestException; Krajča P. (DAMOL) RESIQL 8. 11. 2012 6 / 16

Manipulace s databází veškeré perzistentní informace (tabulky, indexy, definice pohledů, operátorů,... ) jsou uloženy stejně jako uživatelská data všechny tyto objekty spravuje třída Database pro každý typ objektu existuje samostastný Manager TableManager IndexManager ViewManager OperatorManager... přes tyto objekty probíhají všechny operace s databazí společné rozhraní, řeší závislosti mezi objekty,... komunikuje přímo se storage enginem, který se stará o uložení dat Krajča P. (DAMOL) RESIQL 8. 11. 2012 7 / 16

Storage engine BerkeleyDB Java Edition key-value store obstarává čistě uložení dat do tabulek + indexy vyhledávání v datech s pomocí B-stromů zajistění transakcí potenciálně nahraditelné něčím jiným (InnoDB, Falcon, JDBC databáze,... ) Krajča P. (DAMOL) RESIQL 8. 11. 2012 8 / 16

Životní cyklus dotazu II. RETRIEVE foo WHERE bar < 10; STATEMENTS RETRIEVE WHERE foo < bar 10 příkaz výraz první fáze zpracování dotazu identická jako v prvním případě odlišný je způsob zpracování výrazu (zásadní část RESIQL) Krajča P. (DAMOL) RESIQL 8. 11. 2012 9 / 16

Kompilace výrazů Aforismus (Greenspun s tenth rule of programming) Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp. syntaktický strom je převeden na strom objektů (instancí třídy AbstractOperator), např. WhereOperator Variable (foo) IntegerComparisonOperator (<) Variable (bar) Constant (10) každý objekt obsahuje: metody pro vyhodnocení výrazu informace vztahující se k typům dat (popř. souvisejícímu kontextu) metody pro další transformace Krajča P. (DAMOL) RESIQL 8. 11. 2012 10 / 16

Kompilace výrazů Aforismus (Greenspun s tenth rule of programming) Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp. syntaktický strom je převeden na strom objektů (instancí třídy AbstractOperator), např. WhereOperator Variable (foo) IntegerComparisonOperator (<) Variable (bar) Constant (10) každý objekt obsahuje: metody pro vyhodnocení výrazu informace vztahující se k typům dat (popř. souvisejícímu kontextu) metody pro další transformace Krajča P. (DAMOL) RESIQL 8. 11. 2012 10 / 16

Kompilace výrazů Aforismus (Greenspun s tenth rule of programming) Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp. syntaktický strom je převeden na strom objektů (instancí třídy AbstractOperator), např. WhereOperator Variable (foo) IntegerComparisonOperator (<) Variable (bar) Constant (10) každý objekt obsahuje: metody pro vyhodnocení výrazu informace vztahující se k typům dat (popř. souvisejícímu kontextu) metody pro další transformace Krajča P. (DAMOL) RESIQL 8. 11. 2012 10 / 16

Vyhodnocení výrazů nejdřív vyhodnocení výrazů v potomcích skalární objekty se vyhodnocují na odpovídající,,javovské objekty relační výrazy se vyhodnocují na Cursor: public interface Cursor extends Closeable { public boolean first() throws BadRequestException; public boolean next() throws BadRequestException; public Tuple fetch() throws BadRequestException;... } relační operátory zpracovávají data po řádcích (pokud je to možné) relační operátory vytváří prostředí, ve kterých jsou vyhodnocovány další výrazy (např. podmínka operátoru WHERE) v tomto prostředí jsou na symboly (odpovídájící sloupcům tabulky) navázany hodnoty z daného řádku Krajča P. (DAMOL) RESIQL 8. 11. 2012 11 / 16

Optimalizace (1/2) před vyhodnocením výrazu se provedou optimalizace transformace stromu objektů (AbstractOperator) na ekvivalentní aplikace algebraických zákonů (včetně částečného vyhodnocení podvýrazů) použití operátorů, které nemají ekvivalentní protějšek v jazyce RESIQL (např. využití indexů) sada pravidel pro přepisování pattern matching: DSL založený na Fluent interface (vláčcích) jednoduchý,,jazyk (přímo v Javě) schopný popsat základní vzory využívá čistě volání metod a anonymních tříd Krajča P. (DAMOL) RESIQL 8. 11. 2012 12 / 16

Optimalizace: příklady odstranění dvojího WHERE: foo WHERE bar WHERE baz = foo WHERE bar baz if (StructureCheck.check(operator).isInstanceOf(WhereOperator.class).itsArg(0).isInstanceOf(WhereOperator.class).test()) {... } eliminace neutrálního prvku (např. 0 + x = x) if (StructureCheck.check(operator).isInstanceOf(IntegerOperator.class).isToken(QLLexer.PLUS).itsArg(0).isEqual(ZERO INT).test()) return operator.getarg(1); Krajča P. (DAMOL) RESIQL 8. 11. 2012 13 / 16

Optimalizace: Indexy a podobnostní dotazy (1/2) Definition Podobnost y nad doménou D y je monotonní vzhledem k ostrému lineárnímu uspořádní na množině D y, pokud pro všechny prvky u, v, w D y platí právě když w v u nebo u v w. u D w u D v (1) běžně se podobnost odvozuje ze vzdálenosti hodnot s použitím antitonního škálovaní taková podobnost je monotonní pokud doména je restrikcí R, pak odpovídá < Krajča P. (DAMOL) RESIQL 8. 11. 2012 14 / 16

Optimalizace: Indexy a podobnostní dotazy (2/2) Pokud máme index (založený na B-stromu) nad sloupci y 1,..., y n, hodnoty c 1 D y1,..., c n D yn, monotonní operátor yn, pak lze efektivně získat řádky s nejvyššími ranky pro dotazy: Nástin algoritmu (y 1 = c 1 ) (y n 1 = c n 1 ) (y n yn c n ). (2) 1 dva kurzory jeden pohybující se vpřed a druhý vzad 2 na počátku jsou oba kurzory nastaveny na řádek splňující podmínku y 1 = c 1,..., y n 1 = c n 1, and y n = c n (nebo nejbližšího souseda) 3 kurzor pohybující se vzad se posune o jeden řádek zpět 4 podmínka (2) je vyhodnocena pro řádky, na které ukazují oba kurzory 5 řádek s vyšším rankem je vrácen a daný kurzor se posune o jeden řádek v daném směru algoritmus lze zobecnit pro operátory <,,, between.... Krajča P. (DAMOL) RESIQL 8. 11. 2012 15 / 16

Optimalizace: Indexy a podobnostní dotazy (2/2) Pokud máme index (založený na B-stromu) nad sloupci y 1,..., y n, hodnoty c 1 D y1,..., c n D yn, monotonní operátor yn, pak lze efektivně získat řádky s nejvyššími ranky pro dotazy: Nástin algoritmu (y 1 = c 1 ) (y n 1 = c n 1 ) (y n yn c n ). (2) 1 dva kurzory jeden pohybující se vpřed a druhý vzad 2 na počátku jsou oba kurzory nastaveny na řádek splňující podmínku y 1 = c 1,..., y n 1 = c n 1, and y n = c n (nebo nejbližšího souseda) 3 kurzor pohybující se vzad se posune o jeden řádek zpět 4 podmínka (2) je vyhodnocena pro řádky, na které ukazují oba kurzory 5 řádek s vyšším rankem je vrácen a daný kurzor se posune o jeden řádek v daném směru algoritmus lze zobecnit pro operátory <,,, between.... Krajča P. (DAMOL) RESIQL 8. 11. 2012 15 / 16

Přehled rozsahem menší až středně velký projekt přibližně rok práce na částečný úvazek použité knihovny: BDB JE, ANTLR, Guava, Log4J RESIQL: RDBMS + klient Počet tříd: cca 164 Počet řádků kódu: cca 13 tis. Integrační testy Počet testů: 83 Počet řádků kódu: cca 2 tis. Krajča P. (DAMOL) RESIQL 8. 11. 2012 16 / 16