0% found this document useful (0 votes)
55 views

ApacheDerbyInternals 1 1

This document provides a high-level overview of the internal architecture and design of the Derby database engine. It discusses how Derby was originally intended for embedded use on devices like PDAs but grew to support a full SQL feature set. The document also outlines Derby's modular architecture with separated components for services, storage, language parsing, and query execution.

Uploaded by

hariharank12
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
55 views

ApacheDerbyInternals 1 1

This document provides a high-level overview of the internal architecture and design of the Derby database engine. It discusses how Derby was originally intended for embedded use on devices like PDAs but grew to support a full SQL feature set. The document also outlines Derby's modular architecture with separated components for services, storage, language parsing, and query execution.

Uploaded by

hariharank12
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 61

In t er n al s of Der b y

An Op en Sou r ce Pu r e Java Rel at i on al Dat ab ase


En g i n e
Dan i el Joh n Deb r u n n er
STSM – IBM Dat a Man ag em en t
(1.1 2004/ 09/ 20)
In t r od u ct i on

Af t er a q u i ck over vi ew of Der b y, I w i l l
p r esen t som e of t h e i n t er n al s of t h e
t ech n ol og y.

In t er n al f eat u r es w i l l b e cover ed at a
h i g h l evel , i n cl u d i n g som e of t h e
l esson s l ear n t over t h e year s.

Please f eel f r ee t o ask q u est i on s as w e
g o.

Th i s i s n ot a com p l et e g u i d e t o t h e
i n t er n al s of Der b y, f or t h at r ead t h e
sou r ce cod e!
Ag en d a

Der b y Over vi ew

Syst em i n t er n al s

Lan g u ag e i n t er n al s

St or e i n t er n al s
Ap ach e Der b y

IBM con t r i b u t ed t h e Cl ou d scap e
sou r ce cod e t o t h e Ap ach e Sof t w ar e
Fou n d at i on as Der b y

Ap ach e DB p r oj ect sp on sor ed Der b y
i n t o i n cu b at i on at Ap ach e

Der b y n ow u p an d r u n n i n g at Ap ach e

Der b y i s an ef f or t u n d er g oi n g i n cu b at i on at t h e Ap ach e
Sof t w ar e Fou n d at i on . In cu b at i on i s r eq u i r ed of al l
n ew l y accep t ed p r oj ect s u n t i l a f u r t h er r evi ew i n d i cat es
t hat t h e i n f r ast r u ct u r e, com m u n i cat i on s, an d d eci si on -
m ak i n g p r ocess h ave st ab i l i sed i n a m an n er con si st en t
w i t h ot h er su ccessf u l ASF p r oj ect s. Wh i l e i n cu b at i on
st at u s i s n ot n ecessar i l y a r ef l ect i on of t h e
com p l et en ess or st ab i l i t y of t h e cod e, i t d oes i n d i cat e
Br i ef Hi st or y

1996 – Cl ou d scap e, In c st ar t u p – Oak l an d ,
CA

1997 – JBMS 1.0

Ap r 1999 – Cl ou d scap e 2.0

Dec 1999 – Acq u i r ed b y In f or m i x Sof t w ar e

Ju n e 2001 – Cl ou d scap e 4.0

Ju l y 2001 – Acq u i r ed b y IBM

Dec 2001 – IBM Cl ou d scap e 5.0

2003 – IBM Cl ou d scap e 5.1, 5.1FP1 & FP2
➢ Si g n i f i can t IBM u se as a com p on en t

Der b y Em b ed d ed En g i n e

Pu r e Java

Em b ed d ed Dat ab ase

Sm al l Foot p r i n t

St an d ar d s Based

Com p l et e Rel at i on al Dat ab ase En g i n e
Pu r e Java

Com p l et el y w r i t t en i n Java

Su p p or t s J2SE 1.3/ 1.4/ 1.5 w i t h si n g l e
j ar

Ru n s an yw h er e – Li n u x, Wi n d ow s,
MacOS, Sol ar i s, i - Ser i es, z- Ser i es

Dat ab ase f or m at p l at f or m
i n d ep en d en t t oo
Em b ed d ed Dat ab ase

Dat ab ase en g i n e b ecom es i n t eg r al
p ar t of t h e Java ap p l i cat i on

No ad d i t i on al p r ocess
➢ Ap p l i cat i on 's
JDBC cal l s n ow j u st r esu l t in
m et h od cal l s w it h i n sam e JVM

Ju st a Jar f i l e t o t h e ap p l i cat i on

Dat ab ase i n vi si b l e t o en d u ser of
ap p l i cat i on
Em b ed d ed w i t h Ap p l i cat i on
Java Vi r t u al Mach i n e

- Dat ab ase on l y accessi b le f r om


Ap p l i cat i on si n g l e JVM
- Java/ JDBC on l y
- No n et w or k con n ect ivi t y
JDBC
- Typ i cal ly i s si n g l e ap p l i cat ion
Der b y en g i n e p er JVM (b u t cou l d b e m u l t i p l e)

Dat ab ase(s)
on d i sk
Em b ed d ed i n Ap p l i cat i on
Ser ver
Java Vi r t u al Mach i n e
Ap p Ser ver
Ap p Ap
Appp Ap p Web - cl i en t s

It ’s j u st an em b ed d ed u se of
JDBC
Der b y w h er e t h e ap p l i cat i on
ser ver i s t h e ap p l i cat i on

Der b y en g i n e

Dat ab ase(s)
on d i sk
Sm al l Foot p r i n t

En g i n e j ar f i l e i s ar ou n d 2Mb
➢ Op t i on al Jar f i l es
● Net w or kser ver ~ 150k
● Tool s ~ 200k


Ru n t i m e m em or y u se
➢ Dep en d en t on ap p l icat ion , d at a cach i n g ,
et c.
➢ Can r u n w h en Java h eap m em or y
r est r i ct ed t o 4Mb
➢ Have r u n i n m ach i n es w i t h on l y 16Mb
p h ysi cal m em or y
St an d ar d s

SQL
➢ SQL92, SQL99, SQL2003, SQL/ XML,


Java
➢ J2SE 1.3, 1.4
➢ JDBC 2.0 & 3.0
➢ J2EE – cer t i f i ed as a JDBC d r i ver f or
J2EE 1.4 & 1.3
➢ J2ME/ OSGi

DRDA
Com p l et e Rel at i on al En g i n e

Mu l t i - u ser , m u l t i - t h r ead ed , t r an sact ion s,
r ow l ock i n g , isol at i on level s, l ock d ead l ock
d et ect i on s, cr ash r ecover y, b ack u p & r est or e

SQL
➢ Tab l es, in d exes, vi ew s, t r i g g er s,
p r oced u r es, f u n ct i on s, t em p t ab l es
➢ For ei g n k ey an d ch eck con st r ai n t s
➢ Joi n s, cost b ased op t i m i zer

Dat a cach i n g , st at em en t cach i n g , w r i t e ah ead
l og , g r ou p com m i t

Mu l t i p l e d at ab ases p er syst em
Ag en d a

Der b y Over vi ew

> > Syst em i n t er n al s

Lan g u ag e i n t er n al s

St or e i n t er n al s
Or i g i n al Cl ou d scap e
In t en t i on s

Dat ab ase en g i n e f or h i g h l y p er vasi ve
m ar k et

Sm al l f oot p r i n t f or PDAs

Wr i t t en i n Java f or
➢ Pl at f or m i n d ep en d en ce
➢ Dat a i n d ep en d en ce

Su p p or t m u l t i p l e APIs
➢ Possi b l e l ow l evel st or ag e API
➢ Possi b l e execu t e on l y en g i n e
Wh at Was Bu i l t

JDBC d r i ver t h at i s a d at ab ase en g i n e
➢ Tr yi n g t o i sol at e JDBC f r om r est of eng i n e i n cr eased
f oot p r i n t , n eed l ess con ver si ons

Foot p r i n t t oo b i g f or PDAs
➢ No PDAs r u n ni n g Java b ack i n 1997
➢ Ran on Psi on 5m x w i t h 16Mb , b u t b oot t i m e 40
secon d s
➢ Ear l y cu st om er s w an t ed al l t h e t yp i cal SQL f eat u r es

No l ow - l evel API, b u t m u ch cod e
i n f r ast r u ct u r e t o su p p or t i t
➢ Ad d s cod e, m u l t i p l e con n ect i on an d t r an sact i on st at e
ob j ect s
Typ i cal JDBC Cod e
 PreparedStatement ps = conn.prepareStatement(
“SELECT ORDERID, COST FROM ORDERS
WHERE CID = ? AND COST > ?”);

ps.setInt(1, customer);
ps.setBigDecimail(2, threshold);

ResultSet rs = ps.executeQuery();
while (rs.next()) {
int orderId = rs.getInt(1);
BigDecimal cost = rs.getBigDecimal(2);
// process order
}

rs.close();
ps.close();

Typ i cal f or w eb - ap p l i cat i on s, cl i en t ap p l i cat i on s w i l l r e- u se
Pr ep ar ed St at em en t m u l t i p l e t i m es.
Typ i cal JDBC Cod e
 PreparedStatement ps = conn.prepareStatement(
“SELECT ORDERID, COST FROM ORDERS
WHERE CID = ? AND COST > ?”);

ps.setInt(1, customer);
ps.setBigDecimal(2, threshold);

ResultSet rs = ps.executeQuery();
while (rs.next()) {
int orderId = rs.getInt(1);
BigDecimal cost = rs.getBigDecimal(2);
// process order
}

rs.close();
ps.close();

Ever y m et h od cal l i n r ed i s a cal l i n t o t h e JDBC d r i ver
JDBC Th r ead i n g Mod el
 (T1) conn.prepareStatement(
“SELECT ORDERID, COST FROM ORDERS
WHERE CID = ? AND COST > ?”)

(T2) ps.setInt(1, customer)


(T7) ps.setBigDecimal(2, threshold)

(T4) ps.executeQuery()
(T7) rs.next()
(T1) rs.getInt(1)
(T9) rs.getBigDecimal(2)

(T2) rs.close()
(T3) ps.close()

Dr i ver h as t o assu m e ever y cal l cou l d b e f r om a d i f f er en t
t h r ead

99.99% of t h e t i m e, i t w on 't b e
Ti m i n g
 (T1) conn.prepareStatement(
“SELECT ORDERID, COST FROM ORDERS
WHERE CID = ? AND COST > ?”)
// could be significant time between prepare and execute

(T2) ps.setInt(1, customer)


(T7) ps.setBigDecimal(2, threshold)

(T4) ps.executeQuery()
// could spend significant time in executeQuery
(T7) rs.next()
(T1) rs.getInt(1)
(T9) rs.getBigDecimal(2)

(T2) rs.close()
(T3) ps.close()

Tw o ch an ces f or u n d er l yi n g t ab l e t o b e m od i f i ed , b et w een
p r ep ar e an d execu t e, an d i n execu t e w hi l e w ai t i n g f or i n t en t
l ock s on t ab l e
Log i cal Ar ch i t ect u r e
Embedded JDBC Layer Monitor

Query Parser & Query Execution


Compiler

Services
Virtual Table Interface Store
Mod u l e Ar ch i t ect u r e

Pr i m ar y
Mon i t or

Ser v i ce Mod u l es
Syst em Mod u l es Ser vi ce

Pr i m ar y
Ser v i ce Mod u l es

ser v i ce.p r op er t i es
Per si st en t Ser v i ce
Mod u l e

Set of u sab l e f u n ct i on al i t y

Wel l d ef i n ed API – “ p r ot ocol ”

Pr ot ocol sep ar at ed f r om i m p lem en t at i on

Typ i cal l y d eclar ed as set of Java
i n t er f aces

Id en t i f i ed b y sin g le Java in t er f ace,
“ f act or y cl ass” .
➢ e.g .
or g .ap ach e.d er b y.i ap i .ser vi ces.l ock s.Lock Fact or
y

May r ef er en ce ot h er m od u l e p r ot ocol s

Zer o or m or e i m p lem en t at i on s i n a
r u n n i n g syst em

Im p l em en t at i on can i m p l em en t con t r ol
i n t er f aces t o:
➢ Def i n e ad d i t i on al b oot & sh ut d ow n act i on s

Ser vi ce

Col l ect ion of co- op er at in g m od u l es
p r ovi d i n g a com p l et e set of f u n ct i on al i t y.

Si n g l e p r i m ar y m od u l e d ef i n i n g ext er n al
API

Per si st en t
➢ Boot - u p st at e i n si n g l e ser vi ce.p r op er t i es f i l e,
i n cl u d i n g t h e r eq u i r ed p r i m ar y m od u l e
i d en t i f i cat i on (as t h e p r ot ocol , n ot t h e
i m p l em en t at i on )

Non - p er si st en t
➢ Pu r el y r u n - t i m e d ef i ni t i on .


Mod u l es al w ays b oot ed t h r ou g h m on i t or
Mon i t or

Man ag es Der b y syst em

Boot s & sh u t d ow n Ser vi ces

Fi n d s ser vi ce.p r op er t i es f i l e b ased u p on
ser vice b oot

Map s r eq u est s f or a m od u l e p r ot ocol t o
an i m p lem en t at i on .
Based u p on :
➢ Vi r t u al m ach i n e en vi r onm en t (J2ME/ J2SE
1.3/ 1.4)
➢ Avai l ab l e cl asses (e.g . JCE en cr yp t i on
cl asses)
➢ Su i t ab i l i t y f or cu r r en t ser vi ce

En su r es syst em i s n ot g ar b ag e
col l ect ed aw ay
Dat ab ase En g i n e Syst em

j av a.sq l .Dr i v er p r ot ocol


Mon i t or

Er r or Log g i n g , JDBC Dr i ver


Con t ext Manag er Mod ul es
com .i b m .d b 2j .d at ab ase.Dat ab ase p r ot ocol
ser v i ces, sq l , st or e Mod ul es

ser v i ce.p r op er t i es
Dat ab ase - / u sr / d j d / sal esd b
Wh y a Com p l ex Mon i t or ?

Pr ot ocol sep ar at i on f r om im p l em en t at i on
➢ Good p r og r am m i n g p r act i ce
➢ Al l ow ed ear l y r ap i d d evel op m en t
➢ Al l ow s sp eci f i c u n i t l evel m od u l e t est i n g

Si n g l e j ar f i l e su p p or t s m u l t i p le Java
en vi r on m en t s w i t h n o set t in g s f r om
ap p l i cat i on or u ser (ease of u se)
➢ JDK 1.1, J2ME, J2SE 1.2, 1.3, 1.4

Su p p or t s d i f f er en t i m p l em en t at i on s f r om
si n g l e sou r ce t r ee
➢ Dat ab ase, Cl ou d syn c ser ver , Cl ou d syn c
t ar g et

Su p p or t s d i f f er en t st or e i m p l em en t at i on s
w i t h n o ch an g e t o l an g u ag e
➢ Di sk , r ead - onl y, d at ab ase i n a j ar , d at ab ase
on HTTP ser ver
Issu es w i t h Mon i t or

Sel ect i on b et w een i m p l em en t at i on s
t h at sat i sf y r eq u i r em en t s i s n ot
d ef i n ed .

Im p l em en t at i on l i st i n si n g l e r esou r ce
(m od u l es.p r op er t i es), n o ab i l i t y t o ad d
ad d i t i on al i m p l em en t at i on s i n
sep ar at e j ar

Al l ow i n g d yn am i c i m p l em en t at i on
sel ect i on cou l d com p r i se secu r i t y.
Sessi on St at e & Er r or Cl ean u p

Desi g n g oal s
➢ Avoi d b u g s i n er r or h an d l i n g cod e
➢ Con si st en t r esou r ce cl ean u p
➢ Mod u l ar st at e ob j ect s
Con si st en t Excep t i on Cl ean
Up

Si n g l e excep t i on m od el
(St an d ar d Excep t i on )

SQLExcep t i on t h r ow n t h r ou g h JDBC
➢ Hen ce con ver si on al w ays n eed ed

Fi ve p ossi b l e act i on s f or an excep t i on
➢ St at em en t r ol l ed b ack
➢ Tr an sact i on r ol led b ack
➢ Sessi on (con n ect i on ) cl osed
➢ Dat ab ase cl ose
➢ Syst em sh u t d ow n
Excep t i on Mod el

Or i g i n al l y f i ve su b - cl asses, e.g .
Tr an sact i on Excep t i on
➢ Com p l i cat es sever i t y ch eck in g , ad d s cod e

Now al l act i on d r i ven b y i n t eg er
sever i t y l evel

Excep t i on cl ean u p f or r eg u l ar p at h as
w el l . Con n ect i on .cl ose() t h r ow s a cl ose
sessi on sever i t y excep t i on

En su r es cl ean u p cod e i s cor r ect , n o
h i d d en b u g s d u e t o i n f r eq u en t l y
execu t ed cl ean u p
Con t ext Cl ean u p

Each sessi on h as a st ack of con t ext
ob j ect s

Each con t ext ob j ect m ai n t ai n s sessi on
st at e an d h an d l es cl ean u pEach con t ext i s p assed t h
excep t i on & p er f or m s
Dat ab ase i t s ow n cl ean u p , i n cl u d i n
JDBC Con n ect i on p ossi b l y p op p i n g i t sel f o
t h e st ack
Lan g u ag eCon n ect i on In d i cat es i f i t i s t h e l ast
Tr an sact i on con t ext f or t h at sever i t y
St at em en t
St at em en t
Com p i l e
Th r ead t o Con t ext Map p i n g

Der b y & JDBC d o n ot h ar d l i n k Th r ead
t o Con n ect i on

Ap p l i cat i on m ay u se an y Th r ead t o
execu t e m et h od s on an y Con n ect i on or
JDBC ob j ect

Der b y l i n k s ap p l i cat i on Th r ead t o
Sessi on / Con n ect i on f or t h e l i f et i m e of
t h e JDBC m et h od cal l
➢ Al l w or k p er f or m ed u si n g ap p li cat ion 's
t h r ead , n ot Der b y w or k er t h r ead s
Si n g l e Act i ve Th r ead p er
Sessi on
Th r ead BTh r ead C

on
Ap p l i cat i
Th r ead A
C1 C2

S1A S1B S2A


execut e cl ose execut eQu er y
JDBC JDBC

A Bl ock s B

y
Der b
Session C1 l i n k ed Sessi on C2 l i n k ed
t o Th r ead A t o Th r ead C

Whi le i n Der b y sp ace Th r ead can f i n d i t s


Con t ext St ack ob j ect w i t h n o st at e
Th r ead Map p i n g
Im p l em en t at i on

Or i g i n al l y u sed Hash Map w i t h Th r ead
r ef er en ce as k ey, st ack as val u e
➢ Sl ow , sin g l e t h r ead ed

Now u se Java 2 Th r ead Local
➢ Fast er , b u t st i l l cost l y
➢ Not su p p or t ed on som e J2ME
con f i g u r at i on s

Op t i m i sed t o avoi d m ap p i n g w h en n ot
st r i ct l y r eq u i r ed
➢ Resu l t Set .g et XXX()
m et h od s, t oo
exp en si ve t o m ap Th r ead t o con t ext ever y
Im p r oved Con t ext Map p i n g

En su r e Con t ext st ack i s al w ays
avai l ab l e t h r ou g h m et h od cal l
p ar am et er s
➢ Di r ect l y as p assed p ar am et er
➢ In d i r ect l y
t h r ou g h f i el d s or m et h od s i n
p assed p ar am et er s

Lar g e am ou n t of cod e t o r e- w or k

JDBC r eq u i r es st at el ess m ap p i n g d u e
t o con n ect i on access i n ser ver si d e
m et h od s
➢ Dr i ver Man ag er .g et Con n ect i on
(“ j d b c:d ef au l t :con n ect i on ” );
Th r ead Saf e

Si n g l e act i ve t h r ead p er sessi on
si m p l i f i es st at e m an ag em en t w i t h i n a
sessi on

Der b y cod e st i l l m u l t i - t h r ead aw ar e
f or sh ar ed r esou r ces su ch as d at a
cach e, l ock m an ag er , st at em en t cach e,
et c.

Th r ead saf e b u t n ot op t i m i sed f or
m u l t i p l e CPUs, h i d d en i n
i m p l em en t at i on s of cach es an d l ock
m an ag er
Gen er i c Cach e/ Lock
Man ag er s

Cach e Man ag er cach es ob j ect s t h at i m p l em en t
a Cach eab l e i n t er f ace

Han d l es ag i n g , p r u n i n g , et c.

Cach es p ag es, st at em en t s, st r i n g t r an sl at i on s,
op en f i l es, d i ct i on ar y ob j ect s

Lock Man ag er l ock s ob j ect s t h at i m p l em en t a
Lock ab l e i n t er f ace

Lock com p at i b i l i t y d ef i n ed b y Lock ab l e, n ot
m an ag er

Cen t r al i zes “ h ar d ” t h r ead - saf e i ssu es
Ag en d a

Der b y Over vi ew

Syst em i n t er n al s

> > Lan g u ag e i n t er n al s

St or e i n t er n al s
SQL Com p i l at i on

Pr ep ar ed St at em en t p s =
con n .p r ep ar eSt at em en t (
“ SELECT * FROM T WHERE ID = ?” );
1) Look u p i n cach e u si n g exact t ext
m at ch
(sk i p t o 5 i f p l an f ou n d i n cach e)

2) Par se u si n g JavaCC g en er at ed p ar ser


3) Bi n d t o d i ct i on ar y, g et t yp es, et c.
4) Gen er at e cod e f or p l an
5) Cr eat e i n st an ce of p l an
Par se Ph ase

Tr ee of Qu er y Nod es cr eat ed

Man y Nod es, on e p er op er at i on t yp e
➢ Fr om BaseTab le, Met h od Cal l Nod e,
Di st i n ct Nod e, Cu r r en User Nod e, ...
➢ Bu l k of cod e f oot p r i n t i s SQL com p il er

Sw i t ch t o sm al l er n u m b er of b u i l d i n g
b l ock s?

No execu t i on cod e i n Qu er y Nod es,
l ead s t o si m i l ar set of execu t i on
Resu l t Set s

Du p l i cat e ch eck i n g of st at e i n Qu er y
Gen er at e Ph ase

Gen er at e Java b yt e cod e d i r ect l y, i n t o
i n - m em or y b yt e ar r ay

Load w i t h sp eci al Cl assLoad er t h at
l oad s f r om t h e b yt e ar r ay

Si n g l e Cl assLoad er p er g en er at ed
cl ass
➢ Al l ow s st at em en t s t o b e ag ed ou t
i n d ep en d en t l y

Gen er at ed cl ass ext en d s an i n t er n al
cl ass BaseAct i vat i on w h i ch p r ovi d es
su p p or t m et h od s, com m on
Act i vat i on – In st an ce of p l an

In st an ce of g en er at ed cl ass cal l ed
Act i vat i on

Hol d s q u er y sp eci f i c st at e, p ar am et er s,
et c.

Con n ect ed i n d i r ect l y t o JDBC
Pr ep ar ed St at em en t t h r ou g h
h ol d er / w r ap p er cl ass t h at i m p l em en t s
Act i vat i on i n t er f ace

Hol d er al l ow s com p i l ed p l an t o ch an g e
w i t h ou t k n ow l ed g e of ap p l i cat i on ,
t r an sp ar en t t o Pr ep ar ed St at em en t
Act i vat i on – Execu t i on

Pr ep ar ed St at em en t .execu t e m et h od s

Cr eat es t r ee of i n t er n al Resu l t Set
ob j ect s t h at m ap t o SQL op er at i on s
➢ Scan Resu l t Set

➢ Sor t Resu l t Set

➢ In d exScan Resu l t Set


Gen er at ed cod e m ai n g l u e cod e

Exp r essi on s ar e g en er at ed as m et h od s
i n g en er at ed cl ass
St at em en t Resu l t s
JDBC PreparedStatement Up d at e Coun t
PS (i nt ) f or non - q u er i es

Hol d er

UC
(Language) ResultSet Tree Act i v at i on
Gen er at ed b y act i vat i on
execu t i on , p er f or m s u p d at es,
f et ch es r ow s, et c.
e.g . Pr oj ect Rest r i ct Resu l t Set
on t op of In d exScan Resu l t Set LRS RS

JDBC Resu l t Set


Accesses r ow s f r om t op
LRS LRS
LRS i n t r ee t o p r esen t t h em
as a JDBC Resu l t Set

LRS
LRS
Ben ef i t s of Gen er at ed Cod e

No n eed t o h ave Der b y sp eci f i c
i n t er p r et er w r i t t en i n Java, j u st u se
JVM

Gen er at ed cod e w i l l g et JIT'ed an d
t h u s g ai n t h e p er f or m an ce b en ef i t s

Ti g h t i n t eg r at i on w i t h Java cal l s f r om
SQL, e.g . SQL f u n ct i on s w r i t t en i n Java.
No u se of (sl ow ) r ef l ect i on , j u st
com p i l e m et h od cal l i n t o g en er at ed
cl ass
Issu es w i t h Gen er at ed Cod e
(1)

Fi r st r u n on a n ew Java Vi r t u al
Mach i n e p r et t y m u ch g u ar an t eed t o
b r eak , f i n d VM b u g s
➢ Der b y g en er at es cod e t o JVM
sp eci f i cat ion
➢ VMs t en d ed t o on l y exp ect cod e as
g en er at ed b y Java com p i ler s
➢ Mu ch b et t er in r ecen t year s
➢ Su n an d IBM u se Cl ou d scap e d at ab ase
t est s i n t h ei r n i g h t l y VM t est i n g
Issu es w i t h Gen er at ed Cod e
(2)

Deb u g g i n g – h ar d , n o sou r ce, n o b yt e
cod e f i l e, n o l i n e n u m b er s, n o m ap p i n g
t o el em en t s i n SQL st at em en t
➢ Deb u g op t i on s t o:
● dum p b yt e cod e f il e
● ad d “ l i n e n u m b er s” t h at m ap t o b yt e cod e
of f set s

In syst em w i t h m u l t i p l e act i ve
st at em en t s can b e h ar d t o f i g u r e ou t
w h i ch g en er at ed cl ass m ap s t o w h i ch
SQL st at em en t
Gen er at or Hi st or y

Gen er at or m od u l e i n i t i al l y u sed Java
sou r ce cod e & j avac f or sp eed of
i m p l em en t at i on

Th en d i r ect b yt e cod e i m p l em en t at i on ,
u si n g sam e APIs (i n t er f aces)

Byt e cod e u sed f or p r od u ct , j ava
sou r ce f or d eb u g g i n g

Com p i l at i on w as sl ow , si g n i f i can t t i m e
sp en t i n g en er at i on
Byt eCod e Gen er at or Issu es

Too m an y ob j ect s cr eat ed – ob j ect p er
b yt e cod e i n st r u ct i on

Too m an y cl asses – f oot p r i n t i ssu es

Tr ee of ob j ect s r ep r esen t i n g
g en er at ed cl ass m i m i ced st r u ct u r e of
cl ass f or m at g en er at or

API w as n ot n eu t r al , t r an sl at ed
n at u r al l y i n t o Java sou r ce, n ot i n t o
b yt e cod e
Byt eCod e Im p r ovem en t s

Ch an g ed API t o m at ch f ast b yt e cod e
g en er at i on – d r op p ed Jav a sou r ce i m p l em en t at i on

Qu er yNod es g en er at e al m ost at t h e
b yt e cod e l evel , d ef i n i t e k n ow l ed g e of
st ack b ased VM

Nu m b er of cl asses r ed u ced t o 16
(4,12) f r om 65 (14,51)

Cl ose i n t eg r at i on w i t h cl ass f or m at
b u i l d er

Met h od cod e ar r ays b u i l t as- you - g o
Gen er at or Op t i m i zat i on s

Met h od s ad d ed t o act i vat i on i n t er f ace
f or 10 exp r essi on s, al l ow s d i r ect
execu t i on r at h er t h an t h r ou g h
r ef l ect i on
➢ St i l l su p p or t ar b i t ar y n u m b er of
exp r essi on s, ot h er s w i l l b e cal l ed t h r ou g h
r ef l ect i on

Gen er at ed secon d cl ass t o act as an
Act i vat i on f act or y, avoi d s u se of
r ef l ect i on t o cr eat e i n st an ce of
g en er at ed cl ass
➢ Not u sed as m ost JVMs n ow op t i m i ze
Ar t i f act of Com p i l e Mod el

Each SQL st at em en t i n vol ves cl ass
g en er at i on an d l oad i n g , p er f or m an ce
h u r t b y m u l t i p l e st at em en t s l i k e
➢ INSERT INTO T VALUES(1, 'f r ed ');
➢ INSERT INTO T VALUES(2, 'f r ed ');
➢ INSERT INTO T VALUES(3, 'n an cy');

Cor r ect ap p r oach i s
Pr ep ar ed St at em en t s
➢ INSERT INTO T VALUES(?, ?);
➢ St an d ar d r ecom m en d ed JDBC p r act i ce, w i l l p er f or m b et t er
on al l d at ab ases, b u t ear l y JDBC p r og r am m er s st i l l use
sep ar at e st at em en t s.
Ag en d a

Der b y Over vi ew

Syst em i n t er n al s

Lan g u ag e i n t er n al s

> > St or e i n t er n al s
St or e Ar ch i t ect u r e

St or e Access In t er f ace
Access
(Row s)
Heap BTr ee RTr ee? ...
St or e Raw In t er f ace
Raw Dat a Log Tr an sact ion s
(Pag es)
Con f i g u r ab l e en cr yp t i on u si n g JCE

St or ag e Fi l e
Jar HTTP Mem or y An yt h i n g
Syst em
St or e Not es

St or e u n aw ar e of SQL sem an t i cs

In d ex t o h eap l i n k ag e con t r ol l ed b y
l an g u ag e l ayer , n ot st or e

Al l l an g u ag e access t h r ou g h r ow s i n a
con t ai n er , n o con cep t of p ag es

Fi xed r ow m od el – en ab l es r ow l evel
l ock i n g
Fl exi b l e St or e

Desi g n ed t o st or e ser i al i zed Java
ob j ect s

Var i ab l e l en g t h w i t h n o m axi m u m
d ef i n ed

Hen ce n o l i m i t s on col u m n si ze or r ow
si ze

Si d e ef f ect of ease of u se
➢ Row al w ays f i t s, r eg ar d l ess of p ag e si ze

Al so con si d er ed :
➢ Java cl ass p r e- p r ocessi n g
Fl exi b i l i t y Dow n si d e

Col u m n f i el d l en g t h s st or ed i n each
val u e

No op t i m i zat i on f or f i xed l en g t h f i el d s
➢ E.g . SMALLINT val u e i s p r ep en d ed b y t w o
st at u s b yt es
● Fi el d st at e (NULL b i t )
● Fi el d l en g t h (al w ays 2) - “ com p r essed
i n t eg er ”
th

No f ast access t o N f i el d , n eed t o
w al k t h r ou g h p r evi ou s f i el d s
Tr an sact i on Log g i n g

Ar i es l og g i n g syst em f or r ol l b ack an d
r ecover y

Or d er of a ch an g e – w r i t e ah ead
l og g i n g
➢ Wr i t e l og r ecor d
➢ Mod i f y d at a p ag e
➢ On com m i t f l u sh l og u p t o p oi n t
con t ai n i n g com m i t r ecor d
➢ On d at a p ag e f l u sh , en su r e l og r ecor d s
f or al l m od i f i cat i on s ar e f l u sh ed t o d isk
Log Recor d

On r ecover y i n i t i al l y t h e 'd o' act i on of
a l og r ecor d i s m ad e

Su b seq u en t l y t h e 'u n d o' act i on m ay
occu r i f t r an sact i on w as n ot
com m i t t ed b ef or e cr ash

Log Recor d s ar e ob j ect s i n Der b y

'd o' m et h od u sed f or r u n t i m e
ap p l i cat i on as w el l as r ecover y

'u n d o' m et h od u sed f or r u n t i m e
r ol l b ack an d r ecover y

Resou r ces

Ap ach e si t e – w w w .ap ach e.or g

Der b y si t e –
i n cu b at or .ap ach e.or g / d er b y

IBM Cl ou d scap e –
w w w .i b m .com / d evel op er w or k s/ cl ou d s
cap e

JDBC – j ava.su n .com / j d b c


Dan Deb r u n n er
➢ d eb r u n n e@u s.i b m .com (IBM)
➢ d j d @d eb r u n n er s.com (Ap ach e Der b y)

You might also like