QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

20
QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente A cura di: Francesco Menniti

description

QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente. A cura di: Francesco Menniti. Obiettivi Tesina. Realizzare driver di QuOnto (“ Qu erying Onto logies” ): Driver per Derby Driver per SQLite Realizzare guide all’uso dei DBMS usati: Guida all’uso di Derby - PowerPoint PPT Presentation

Transcript of QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

Page 1: QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

QuOnto: Driver per SQLite e Derby e test su database di

dimensione crescente

A cura di:Francesco Menniti

Page 2: QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

07/07/2008 2

Obiettivi Tesina Realizzare driver di QuOnto (“Querying

Ontologies” ): Driver per Derby Driver per SQLite

Realizzare guide all’uso dei DBMS usati: Guida all’uso di Derby Guida all’uso di SQLite

Testare i driver Confronti tra i risultati

Page 3: QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

07/07/2008 3

Descrizione Derby e SQLite

Derby è un motore Open Source Database Technology parte dell’ Apache DB Project

SQLite è una libreria C che implementa un DBMS SQL incorporabile all'interno di applicazioni.

Page 4: QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

07/07/2008 4

Derby: obiettivi, caratteristiche, compatibilità e note I principali obiettivi di Derby sono:

Conformità agli standard SQL! Portabilità (JAVA) !

Scritto interamente in Java e Open-Source Fornisce supporto JDBC (Java Batabase

Connectivity) Può funzionare come DB embedded Deadlock detection, crash recovery,

backup and restore ability, Multi-user, transactions API

Page 5: QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

07/07/2008 5

SQLite: obiettivi, caratteristiche, compatibilità e note Gli obiettivi di SQLite sono:

Semplicità e leggerezza ! Efficienza su piccoli DB Portabilità (ANSI-C)

Supporto mediante binding e wrapper E’ una libreria scritta in C ed è Open-Source Fornisce supporto JDBC (Java Batabase

Connectivity) Può funzionare come DB embedded Non completa conformità allo standard SQL

View di sola lettura, non si possono fare insert, delete, update

Le FOREIGN KEYS sono riconosciute ma non implementate

Page 6: QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

07/07/2008 6

Strumenti ed interfacce Sia per Derby che per SQLite esistono

interfacce che permettono di usare tali DB

Derby: (ad es.) SQuirreLSQL Client Aqua Data Studio

SQLite: (ad es.) SharpPlus Sqlite Developer Liteman SQLite3 (interfaccia a riga di camando)

Page 7: QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

07/07/2008 7

Valutazioni finali

Derby: Completa compatibilità con lo standard

SQL Possibilità di creare un driver per

QuOnto SQLite

Incompleta compatibilità con SQL Possibilità di creare un driver per

QuOnto

Page 8: QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

07/07/2008 8

Implementazione Esempi di alcune differenze

implementative tra Derby e SQLite: Derby:

comando per rimuovere una vista è "DROP VIEW + nomeVista“

Nella UNION il DISTINCT è di default

SQLite: il comando per rimuovere una vista è "DROP VIEW IF

EXIST + nomeVista“ Nella UNION il DISTINCT non è di default

Page 9: QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

07/07/2008 9

Implementazione …continua Esempi di alcune somiglianze

implementative tra Derby e SQLite:

Sia in Derby sia in SQLite l’operatore di concatenazione è “||”

(String createFunctorConcatStatment(String,String[]))

Sia in Derby sia in SQLite il comando per creare una vista è "CREATE VIEW " + name + " AS " + body

Page 10: QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

07/07/2008 10

Come avviene il test Stesso computer nelle stesse condizioni per i

test Aboxes di dimensioni differenti (sia per SQLite

che per Derby): 1, 5, 10, 30 università Realizzate off-line da un tool scritto in Java a partire

dalle Aboxes della LUBM Output del test

EXPANSION TIME EVALUATION TIME TOTAL TIME (tempi rappresentati nei grafici) NUMERO DI CQs DENTRO LA UCQ ESPANSA Numero di answers delle query

Page 11: QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

07/07/2008 11

Query usate nei test Per descrivere le query sono stati utilizzati i seguenti

fattori: Grandezza input: misura la porzione delle istanze delle

classi coinvolte nella query sul totale delle istanze delle classi (grande se input > 5%)

Selettività: misura come la porzione stimata delle istanze delle classi coinvolte nella query soddisfano i criteri di selezione della query (alta se la porzione < 10%)

Complessità: il numero di classi e di proprietà coinvolte nella query determina la complessità della stessa

Assunzione di gerarchia: considera se informazioni provenienti da una gerarchia di classi o da una gerarchia di proprietà sono richieste per raggiungere la risposta completa (ampia se la profondità della gerarchia > 3)

Assunzione di inferenza logica: considera se l’inferenza logica è richiesta per raggiungere la completezza della risposta

Page 12: QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

07/07/2008 12

Query usate nei test (cont.)1. {x | GraduateStudent(x) AND takesCourse(x,”Dep0.Univ0/GraduateCourse0”)}(query con grande input, alta selettività, tale query riguarda una classe e una proprietà, non assume nessuna informazione gerarchica)

2. {x,y,z | GraduateStudent(x) AND University(y) AND Department(z) AND subOrganizationOf(z,y) AND memberOf(x,z) AND undergraduateDegreeFrom(x,y)}(query con pattern triangolare, riguarda 3 classi e tre proprietà, quindi molti join)

5. {x | Person(x) AND memberOf(x,”Dep0.Univ0”)}(Person e memberOf hanno una gerarchia molto ampia)

6. {x | Student(x)}(query con grande quantità in input, e una discreta gerarchia determinata da Student, tale query è relativa ad una sola classe; assume sia la SubClassOf esplicita della relazioni tra UndergraduateStudent e Student e quella implicita tra GraduateStudent e Student )

Page 13: QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

07/07/2008 13

Query usate nei test (cont.)

7. {x,y | Student(x) AND Course(y) AND takesCourse(x,y) AND teacherOf(“Dep0.Univ0/AssociateProfessor0”,y)}(query simile alla precedente ma con selettività più alta, infatti è relativa a 2 classi e ad una proprietà)

8. {x,y,z | Student(x) AND Department(y) AND memberOf(x,y) AND subOrganizationOf(y,”Univ0”) AND emailAddress(x,z)}(query ancora più complessa della 7 con aggiunta di un’altra proprietà)

13. {x | Person(x) AND hasAlumnus(“Univ0”,x)}(query di verifica per relazioni inverse)

14. {x | UndergraduateStudent(x)}(è la query più semplice: grande quantità in input, bassa selettività, assenza di gerarchia, assenza di inferenza)

Page 14: QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

07/07/2008 14

Test SQLiteTest SQLite query leggere

0

1000

2000

3000

4000

5000

6000

7000

0 5 10 15 20 25 30 35

Dimensione dati (numero di università)

Tempo di calcolo (millisecondi)

Query 1 Query 3 Query 4 Query 5 Query 10

Query 11 Query 7 Query 14

TestSQLite query pesanti

0

50000

100000

150000

200000

250000

300000

350000

400000

450000

0 5 10 15 20 25 30 35

Dimensione dati (numero di università)

Tem

po d

i cal

colo

del

la Q

uer

y

(mill

isec

ondi)

Query 12 Query 6 Query 8 Query 2 Query 13 Query 9

Page 15: QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

07/07/2008 15

Test DerbyTest Derby query leggere

0100020003000400050006000

0 5 10 15 20 25 30 35

Dimensione dati (numero di università)

Tempo di calcolo (millisecondi)

Query 1 Query 3 Query 4 Query 5 Query 7 Query 10

Query 11 Query 12 Query 13

Test Derby query pesanti

0

50000

100000

150000

200000

250000

0 5 10 15 20 25 30 35

Dimensione dati (numero di università)

Tempo di calcolo (millisecondi)

Query 2 Query 8 Query 9

Test Derby query molto pesanti

0

20000000

40000000

60000000

80000000

100000000

120000000

0 5 10 15 20 25 30 35

Dimensione dati (numero di università)

Tempo di calcolo (millisecondi)

Query 14 Query 6

Page 16: QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

07/07/2008 16

Confronto Derby SQLite query 4

0

1000

2000

3000

4000

5000

6000

Dimensione dati (numero di università)

Tempo di calcolo (millisecondi)

Query SQLite

Query Derby

Query SQLite 172 469 500 750

Query Derby 4532 5125 5313 5562

1 5 10 30

Esempio 1: query 4{x,y1,y2,y3 | Professor(x) AND worksFor(x,”Dep0.Univ0”) AND name(x,y1) AND emailAddress(x,y2) AND telephone(x,y3)}(query con 3 attributi di concetto che interroga su proprietà multiple di una singola classe, ampia gerarchia per Professor, piccolo input e alta selettività)

Page 17: QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

07/07/2008 17

Esempio 2: query 7

Confronto Derby SQLite query 7

0

2000

4000

6000

8000

Dimensione dati (numero di università)

Tempo di calcolo (millisecondi)

Query SQLite

Query Derby

Query SQLite 46 78 109 5860

Query Derby 31 438 2594 5029

1 5 10 30

{x,y | Student(x) AND Course(y) AND takesCourse(x,y) AND teacherOf(“Dep0.Univ0/AssociateProfessor0”,y)}(query con selettività alta, infatti è relativa a 2 classi e ad una proprietà)

Page 18: QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

07/07/2008 18

Esempio 3: query 12

Confronto Derby SQLite query 12

0

2000

4000

6000

8000

Dimensione dati (numero di università)

Tempo di calcolo (millisecondi)

Query SQLite

Query Derby

Query SQLite 5593 3375 3625 7422

Query Derby 878 625 984 1344

1 5 10 30

{x,y | Chair(x) AND Department(y) AND worksFor(x,y) AND subOrganizationOf(y,”Univ0”)}(tale query richiede di inferire che professore è una istanza della classe Chair perché lui o lei sono a capo del dipartimento; query con piccolo input)

Page 19: QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

07/07/2008 19

Esempio 4: query 14

Confronto Derby SQLite query 14

0

5000000

10000000

15000000

20000000

25000000

30000000

Dimensione dati (numero di università)

Tempo di calcolo (millisecondi)

Query SQLite

Query Derby

Query SQLite 0 0 0 312

Query Derby 14875 262860 1181765 28509265

1 5 10 30

{x | UndergraduateStudent(x)}(è la query più semplice: grande quantità in input, bassa selettività, assenza di gerarchia, assenza di inferenza)

Page 20: QuOnto: Driver per SQLite e Derby e test su database di dimensione crescente

07/07/2008 20

Conclusioni Derby:

Si comporta molto meglio di SQLite per Aboxes di grandi dimensioni In via generale all’aumentare della dimensione della Abox i tempi di

answering aumentano in modo pressoché lineare o quasi Estrema lentezza nel fare answering sulle query con grandi quantità

di dati in ingresso e dove ci sono molti elementi da restituire Più veloce in query dove bisogna effettuare inferenza logica

SQLite: si comporta meglio di Derby per Aboxes di dimensioni ridotte In via generale all’aumentare della dimensione della Abox i tempi di

answering aumentano in modo pressoché lineare o quasi Limite: massimo numero di termini che possono essere messi in

UNION, UNION ALL, EXCEPT, oppure INTERSECT è determinato da un parametro fisso e tale parametro di default è settato a 500

Su query con più di qualche attributo di concetto SQLite risulta più veloce rispetto a Derby indipendentemente dalla dimensione della Abox considerata

Su query dove bisogna fare inferenza logica SQLite risulta più lento, perché non adotta ottimizzazioni particolari