Apache Derby - Προχωρημένες Βάσεις Δεδομένων

nutmegactSoftware and s/w Development

Nov 10, 2012 (4 years and 9 months ago)

215 views


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

Ζωγραφάκης Ιωάννης


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

What is Derby???


Derby is a relational database


implemented completely in Java.


It has a small footprint that allows it to be easily embedded
into any Java application.


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

History Lesson


Cloudscape Inc .founded in 1996 to develop Java
database technology


The first release called JBMS (1997)



Renamed Cloudscape


Bought by Informix software Inc.(1999)


Bought by IBM (2001),IBM’s Java products and
middleware used.


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

History Lesson


IBM contributes code to Apache Software Foundation…


Renamed DERBY !!!


Sun joins the Derby project


Sun packaged Derby in the JDK (6/12/2006) as JavaDB


IBM announced marketing and support withdrawal for the
Cloudscape product (3/2007)


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

Derby Advantages


Derby has a small footprint


About 2 megabytes for the
base engine and embedded JDBC driver.

• Derby is based on the Java, JDBC, and SQL standards.

• Derby provides an embedded JDBC driver that lets you
embed Derby in any Java
-
based solution.

• Derby is easy to install, deploy, and use.

• Databases are easily transferable to other systems.


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

Derby architecture: Embedded


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

Derby architecture: Client
-
server


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων



C:
\
> set DERBY_INSTALL=C:
\
Apache
\
db
-
derby
-
10.4.1.3
-
bin



C:
\
> set CLASSPATH=%DERBY_INSTALL%
\
lib
\
derby.jar;%DERBY_INSTALL%
\
lib
\
derbytools.jar;.



C:
\
> cd %DERBY_INSTALL%
\
bin



C:
\
Apache
\
db
-
derby
-
10.4.1.3
-
bin
\
bin> setEmbeddedCP.bat



java org.apache.derby.tools.sysinfo

Install
μέσω...
tutorial


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

ij is an interactive SQL scripting tool that comes with Derby

IJ


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

Example of java example running


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

Netbeans
-
JavaDB


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

Netbeans
-
JavaDB


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

public class University

{


private static String dbURL =
"jdbc:derby://localhost:1527/university2;create=true;user=gianninos;password=***
***";


private static String tableName = "COURSE";


// jdbc Connection


private static Connection conn = null;


private static Statement stmt = null;



public static void main(String[] args)


{


createConnection();


insertCourse("EPL323", "Compilers", "P.Trancoso","Computer
-
Science");


selectCourse();


shutdown();


}

Java code


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

private static void insertCourse(String id, String title, String
professor,String department)


{


try


{


stmt = conn.createStatement();


stmt.execute("insert into " + tableName + " values ('" +


id + "','" + title + "','" + professor + "','" + department +"')");


stmt.close();


}


catch (SQLException sqlExcept)


{


sqlExcept.printStackTrace();


}


}

Java code


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων


private static void selectCourse()


{ try {


stmt = conn.createStatement();


ResultSet results = stmt.executeQuery("select * from " + tableName);


ResultSetMetaData rsmd = results.getMetaData();


int numberCols = rsmd.getColumnCount();


for (int i=1; i<=numberCols; i++)


{ //print Column Names


System.out.print(rsmd.getColumnLabel(i)+"
\
t
\
t");


}


System.out.println("
\
n
-------------------------------------------------
");


while(results.next())


{ String id = results.getString(1);


String title = results.getString(2);


String professor = results.getString(3);


String department = results.getString(4);


System.out.println(id + "
\
t
\
t" + title + "
\
t
\
t" + professor + "
\
t
\
t" + department );


}


results.close();


stmt.close(); }


catch (SQLException sqlExcept){


sqlExcept.printStackTrace();


} }

Java code


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

Test Configuration


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

Database Buffer


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

Performance Tips


Use Prepared Statements



Avoid Table Scans


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

Performance Evaluation:

MySQL, PostgreSQL and Derby


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

Database Configurations


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

Throughput: TPC
-
B like load


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

Throughput: Single
-
record Select


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

Observations


Derby outperforms MySQL on disk
-
based databases


• MySQL performs better on small main
-
memory

Databases


• PostgreSQL performs best on read
-
only databases,
and has lowest throughput on update
-
intensive
databases


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
446
-
Προχωρημένες

Βάσεις Δεδομένων

Conclusion


Ensure the integrity and recoverability of data



Portable



Good solution for a programmer


Πανεπιστήμιο Κύπρου


Τμήμα Πληροφορικής


ΕΠΛ
370
-
Αρχιτεκτονική υπολογιστών

Thanks for your attention






THE END!!!!





Any questions???