The Web Application Developer’s Vie · 2001. 12. 6. · C/C++, Embedded SQL in C, Tcl, Python,...
Transcript of The Web Application Developer’s Vie · 2001. 12. 6. · C/C++, Embedded SQL in C, Tcl, Python,...
Red
Hat
Dat
abas
eTh
e W
eb A
pplic
atio
n D
evel
oper
’s
View
Web
cast
Oct
ober
30,
200
1
Patr
ick
Mac
dona
ld, F
erna
ndo
Nas
ser
Liam
Ste
war
t, N
eil P
adge
ttR
ed H
at D
atab
ase
Engi
neer
ing
Age
nda
Red
Hat
Dat
abas
e W
eb In
tera
ctio
n –
Patri
ck M
acdo
nald
Prog
ram
min
g In
terfa
ces
Ove
rvie
w –
Fern
ando
Nas
ser
Dem
onst
ratio
n / E
xam
ples
•O
verv
iew
–Li
am S
tew
art
•Int
erac
tion
with
PH
P –
Nei
l Pad
gett
•Int
erac
tion
with
Jav
a –
Liam
Ste
war
t
Futu
re E
nhan
cem
ents
: GU
I Too
ls –
Nei
l Pad
gett
Q&A
Red
Hat
Dat
abas
e W
eb In
tera
ctio
n
Dat
abas
e as
a W
eb S
erve
r Bac
kend
Sim
plifi
ed V
iew
Brow
ser
Web
Ser
ver
Dat
abas
e
Clie
ntSe
rver
http
Clie
ntSe
rver
Insi
de th
e Se
rver
is
anot
her C
lient
/ Se
rver
hie
rarc
hy
Red
Hat
Dat
abas
e as
a W
eb
Serv
er B
acke
nd
Post
greS
QL
–O
RD
BMS
SQL9
2
Tran
sact
iona
l
ACID
com
plia
nt
Red
Hat
Dat
abas
e as
a W
eb
Serv
er B
acke
ndM
ultip
le s
uppo
rted
prog
ram
min
g la
ngua
ges
and
inte
rface
s fo
r clie
nts
Dat
a in
dexi
ng fo
r ret
rieva
l
Onl
ine
back
ups
Mul
ti-Ve
rsio
n C
oncu
rrenc
y C
ontro
l (M
VCC
)
UR
Ls o
f Int
eres
tR
ed H
at D
atab
ase
-w
ww
.redh
at.c
om/s
oftw
are/
data
base
Post
greS
QL
-ww
w.p
ostg
resq
l.org
Apac
he -
ww
w.a
pach
e.or
g
Tom
cat -
jaka
rta.a
pach
e.or
g
PHP
-ww
w.p
hp.n
et
Java
/JD
BC -
•ja
va.s
un.c
om/p
rodu
cts
•jd
bc.p
ostg
resq
l.org
Prog
ram
min
g In
terf
aces
Ove
rvie
w
Dat
abas
e C
lient
-Ser
ver A
rchi
tect
ure
Clie
ntAp
plic
atio
nD
atab
ase
Back
end
Clie
ntSe
rver
Cod
e w
ritte
n in
su
ppor
ted
fron
tend
prog
ram
min
g in
terf
ace
Cod
e w
ritte
n in
sup
port
ed
back
end
prog
ram
min
g
inte
rfac
e
Dat
abas
e C
lient
-Ser
ver A
rchi
tect
ure
Clie
ntAp
plic
atio
nD
atab
ase
Back
end
Clie
ntSe
rver
C/C
++, E
mbe
dded
SQ
L in
C, T
cl, P
ytho
n, P
erl,
Emac
sLI
SP
Perl
DB
I, O
DB
C, J
DB
CSQ
L, P
L/pg
SQL,
PL/
Tcl,
PL/P
erl,
C
Dat
abas
e as
a W
eb S
erve
r Bac
kend
Brow
ser
Web
Ser
ver
Dat
abas
e
Clie
ntSe
rver
HTM
L
http
Clie
ntSe
rver
Scrip
ting
Lang
uage
s
Perl,
PH
P, J
SP
Prog
ram
min
g In
terf
aces
Sum
mar
yFr
onte
nd L
angu
ages
•C
/C++
•Em
bedd
ed S
QL
in C
•Tc
l
•Py
thon
(inc
l. D
B-A
PI)
•Pe
rl (in
cl. P
erl D
BI)
•Em
acs
LISP
•JD
BC
•O
DB
C (C
/C++
, Per
l, Tc
l…)
Web
Scr
iptin
g •
PHP
•Pe
rl
•JS
P
Apa
che
mod
or
CG
I int
erpr
eter
(with
Tom
cat o
rsi
mila
r W.A
.S.)
Prog
ram
min
g In
terf
aces
Sum
mar
y
Bac
kend
Lan
guag
es
ts
CPL/P
erl
tPL
/Tcl
tPL
/pgS
QL
sSQ
L
TR
IGG
ER
SE
TO
FLa
ngua
ge
Coh
abita
tion
with
Oth
er D
BM
S
Perl,
C e
tc.
Driv
erM
ngr
OD
BC
Driv
er
OD
BC
Driv
er
PG DB/
2
Ora
cle
OD
BC
API
OD
BC
Driv
er
Coh
abita
tion
with
Oth
er D
BM
S
Perl
Scrip
tD
BI
DBD
:Pg
DBD
:DB2
DBD
:Ora
cle
PG DB/
2
Ora
cle
Dem
onst
ratio
ns /
Exam
ple
O
verv
iew
PHP
/ Jav
a D
emo
App
licat
ion
Sim
ple
new
s si
te s
imila
r to
Slas
hdot
and
Linu
x To
day
Visi
tors
can
read
arti
cles
pos
ted
by m
oder
ator
s,
post
com
men
ts a
bout
arti
cles
, and
read
co
mm
ents
pos
ted
by o
ther
vis
itors
Des
ign
follo
ws
the
web
clie
nt-s
erve
r mod
el
Impl
emen
ted
in b
oth
PHP
and
Java
with
Red
Hat
D
atab
ase
as th
e da
taba
se b
acke
nd
PHP
/ Jav
a D
emo
App
licat
ion
PHP
/ Jav
a D
emo
App
licat
ion
Dat
abas
e Sc
hem
aU
sers
id: i
nteg
er (
prim
ary
key)
hand
le: s
trin
g
emai
l: st
ring
nam
e: s
trin
g
Cat
egor
ies
img_
type
: str
ing
imag
e: b
lob
nam
e: s
trin
g
id: i
nteg
er (
prim
ary
key)
Artic
les
id: i
nteg
er (
prim
ary
key)
head
line:
str
ing
date
: tim
esta
mp
post
er: i
nteg
er
cate
gory
: int
eger
sum
mar
y: s
trin
g
stor
y: s
trin
g
com
men
ts: i
nteg
er
Com
men
tsid
: int
eger
(pr
imar
y ke
y)
artic
le: i
nteg
er
com
men
ts: s
trin
g
post
er: s
trin
g
date
: tim
esta
mp
Dem
onst
ratio
ns /
Exam
ple
Inte
ract
ion
with
PH
P
Usi
ng P
HP
with
Red
Hat
Dat
abas
e
Sim
ilar t
o us
ing
PHP
with
oth
er p
opul
ar
data
base
s
Min
or c
hang
es in
acc
ess
func
tions
PHP
supp
orts
a n
umbe
r of u
sefu
l fea
ture
s w
hen
used
with
Red
Hat
Dat
abas
e (P
ostg
reSQ
L)•
Con
nect
ion
Pool
ing
(Per
sist
ent C
onne
ctio
ns)
•La
rge
Obj
ects
Con
nect
ing
to th
e D
atab
ase
if(!( $connection=pg_pconnect( "host=myhost ".
"dbname=webcastdemo ".
"user=webcastdemo".
"password=mypassword"))) {
echo"<B>Error:</B>";
echo"Could not establish connection to database server.";
echo"<BR>”;
exit;
}
Con
nect
ion
Inde
x
Con
nect
ion
Strin
g
Ope
n a
pers
iste
nt c
onne
ctio
n
Perf
orm
ing
a Q
uery
// Article lookup query
$query="SELECT headline FROM articles";
// Query for all of the articles
if(!( $result= @pg_exec($connection, $query))) {
echo "<B>Error:</B>";
echo "Could not execute article lookup query:";
echo"<PRE>", pg_errormessage($connection), "</PRE>";
exit;
}
Con
nect
ion
Inde
x
Res
ult I
ndex Que
ry S
tring
A nu
mbe
r of r
elev
ant f
unct
ions
•pg
_res
ult(i
ntre
sult_
id, i
ntro
w_n
umbe
r, m
ixed
fiel
dnam
e)In
dex
into
resu
lt by
row
and
fiel
d
•pg
_fet
ch_r
ow(in
tres
ult,
intr
ow)
Wor
k w
ith a
resu
lt ro
w a
t a ti
me
as a
n en
umer
ated
arra
y
•pg
_fet
ch_a
rray(
intr
esul
t, in
trow
[, in
tres
ult_
type
])In
dex
into
resu
lt as
an
enum
erat
ed a
rray
like
pg_f
etch
_row
()En
hanc
emen
t: In
dex
by fi
eld
num
ber o
r fie
ld n
ame
(ass
ocia
tive
arra
y)
•pg
_fet
ch_o
bjec
t(int
resu
lt, in
trow
[, in
tres
ult_
type
])C
reat
es a
n ob
ject
with
pro
perti
es n
amed
as
the
field
sLi
ke w
orki
ng w
ith a
pop
ulat
ed C
stru
ct
Wor
king
With
Res
ults
Wor
king
With
Res
ults
: An
Exam
ple
<? // Output a list of all of the article headlines?>
<UL>
<?
for( $row=0; $data= @pg_fetch_object( $result, $row); $row++) {
?>
<LI><?=$data->headline?> </LI>
<?
}
?>
</UL>
Itera
te o
ver a
ll re
sults
Echo
the
head
line
Get
the
curre
nt ro
w a
s an
obj
ect
Wor
king
With
Tra
nsac
tions
Man
aged
by
send
ing
SQL
to th
e ba
cken
d
Rel
evan
t SQ
L st
atem
ents
:•
BEG
IN Star
t a tr
ansa
ctio
n
•C
OM
MIT
Com
mit
the
curre
nt tr
ansa
ctio
n to
the
data
base
•R
OLL
BAC
KBa
ck o
ut o
f the
cur
rent
tran
sact
ion
Wor
king
With
Tra
nsac
tions
:A
n Ex
ampl
e (S
lide
1/2)
<?
@pg_exec($connection, "BEGIN");
$query
="INSERT INTO
comments(article,poster,subject,comment)" .
"VALUES (".
$article.
", ".
"'"
.$poster.
"', ".
"'"
.$subject."', ".
"'"
.$comments."')";
if(!@pg_exec( $connection, $query)) {
@pg_exec($connection, "ROLLBACK");
echo "<br> <i>Unable to process request.</i>";
exit;
}
In c
ase
of fa
ilure
,ab
ort a
nd ro
llbac
k
Firs
t, po
st th
e co
mm
ent
Begi
n ou
r tra
nsac
tion
Wor
king
With
Tra
nsac
tions
:A
n Ex
ampl
e (S
lide
2/2)
$query="UPDATE articles SET comments = comments + 1 WHERE id = ".
$article;
if(!@pg_exec($connection, $query)) {
@pg_exec($connection, "ROLLBACK");
echo "<br> <i>Unable to process request.</i>";
exit;
} @pg_exec( $connection, "COMMIT");
?>
<p><i>Your comment has been submitted.</i></p>
In c
ase
of fa
ilure
,ab
ort a
nd ro
llbac
k (re
peat
ed c
ode
–co
uld
use
a fu
nctio
n)
Now
, upd
ate
the
com
men
t cou
nt
Com
mit
the
tran
sact
ion
Rep
ort s
ucce
ss to
the
user
Usi
ng L
arge
Obj
ects
:Im
age
Dat
abas
e Ex
ampl
e
$query
="SELECT image FROM images WHERE id=".
$id;
$result=@pg_exec($connection, $query);
header("Content-type: image/gif");
@pg_exec($connection, "BEGIN");
$image
=pg_loopen($connection, pg_result($result, 0, "image"),
"r");
pg_loreadall($image);
@pg_exec($connection, "COMMIT");
Look
up th
e O
IDof
the
larg
e ob
ject
File
des
crip
tor
Send
the
larg
e ob
ject
to th
e br
owse
r
Send
the
cont
ent t
ype
to th
e br
owse
r
Ope
n th
e la
rge
obje
ct u
sing
the
OID
Dem
onst
ratio
ns /
Exam
ple
Inte
ract
ion
with
Jav
a
Java
and
JD
BC
Java
is a
n ob
ject
-orie
nted
lang
uage
dev
elop
ed b
y Su
n M
icro
syst
ems
JDBC
: Jav
a's
data
base
acc
ess
API
Prov
ides
Jav
a pr
ogra
mm
ers
with
a la
rge
set o
f cla
sses
for
wor
king
with
dat
abas
es
Cod
e w
ritte
n us
ing
JDBC
can
be
used
aga
inst
mul
tiple
da
taba
ses
with
littl
e or
no
chan
ge
Red
Hat
Dat
abas
e pr
ovid
es d
river
s fo
r bot
h JD
BC 1
and
JD
BC 2
Upd
ated
driv
ers
avai
labl
e fro
mPo
stgr
eSQ
L’s
JDBC
web
pa
ge
Impl
emen
tatio
n O
verv
iew
Java
Ser
vlet
s an
d Ja
va S
erve
r Pag
es (J
SP)
used
:•
JSP
for m
ain
inde
x, s
tory
pag
e, a
nd c
omm
ent
subm
issi
on p
age
•Se
rvle
ttha
t ret
rieve
s an
imag
e fro
m th
e ca
tego
ries
tabl
e•
Seve
ral s
uppo
rt cl
asse
s
All u
se J
DBC
for d
atab
ase
acce
ss
Com
mun
icat
ion
Path
way
Clie
ntw
eb-b
row
ser
Apa
che
web
-ser
ver
Tom
cat
appl
icat
ion
serv
er
Red
Hat
Dat
abas
ese
rver
Java
Ser
vlet
san
dSe
rver
Pag
es
Con
nect
ing
to th
e D
atab
ase
A C
onne
ctio
nob
ject
repr
esen
ts a
con
nect
ion
to a
da
taba
seR
eque
st c
onne
ctio
n af
ter l
oadi
ng a
ppro
pria
te
driv
er
<%Class.forName(“org.postgresql.Driver”);
Connectioncon= DriverManager.getConnection(
“jdbc:postgresql://demobox/webcastdemo”,
“webcastdemo”,
“mypassword”);
%>
Dyn
amic
ally
load
and
re
gist
er th
e dr
iver
Req
uest
con
nect
ion
from
dr
iver
man
ager
Perf
orm
ing
a Q
uery
Cre
ate
a St
atem
ento
r a P
repa
redS
tate
men
tob
ject
and
use
its
exec
uteQ
uery
met
hod
to
exec
ute
a qu
ery
Res
ults
sto
red
in a
Res
ultS
etob
ject
and
dat
a ca
n be
acc
esse
d vi
a ac
cess
orm
etho
ds
<%Statementstmt= con.createStatement();
ResultSetrs= stmt.executeQuery(“SELECT headline FROM articles”);
while(rs.next()) {
%>
<LI> <%=rs.getString(“headline”); %> </LI>
<%}
%>
Loop
thro
ugh
resu
lts
Ret
rieve
hea
dlin
efie
ld
Send
que
ry to
dat
abas
e
Perf
orm
ing
an U
pdat
e
Sim
ilar t
o pe
rform
ing
a qu
ery
exce
pt u
se
exec
uteU
pdat
em
etho
d of
Sta
tem
ento
r Pr
epar
edSt
atem
ento
bjec
t
Also
use
d fo
r SQ
L st
atem
ents
suc
h as
C
REA
TE, D
RO
P, e
tc.
If ap
plic
able
, ret
urns
num
ber o
f row
s ch
ange
d (z
ero
othe
rwis
e)
Wor
king
With
Tra
nsac
tions
By d
efau
lt ev
ery
SQL
stat
emen
t is
a co
mpl
ete
trans
actio
n
Use
the
setA
utoC
omm
it, c
omm
it, ro
llbac
km
etho
ds o
f Con
nect
ion
obje
cts
whe
n w
orki
ng
with
mul
ti-st
atem
ent t
rans
actio
ns:
•se
tting
aut
o-co
mm
it m
ode
to fa
lse
ente
rsm
ulti-
stat
emen
t tra
nsac
tion
mod
e•
first
SQ
L st
atem
ent a
fter t
urni
ng o
ff au
to-c
omm
it or
af
ter a
com
mit/
rollb
ack
is s
tart
of tr
ansa
ctio
n•
com
mit
com
mits
all
chan
ges
sinc
e st
art o
f tra
nsac
tion
•ro
llbac
kun
does
all
chan
ges
sinc
e st
art o
f tra
nsac
tion
Wor
king
With
Tra
nsac
tions
:A
n Ex
ampl
e<%Statementstmt= con.createStatement();
con.setAutoCommit(false);
try{
stmt.executeUpdate(“INSERT INTO comments ”+
“VALUES(10, 1, ‘foo’, ‘bar’, now()”);
stmt.executeUpdate(“UPDATE articles SET ”+
“comments = comments + 1 WHERE article=1”);
con.commit();
%><P><I>Your comment has been submitted.</I></P>
<%} catch(Exceptionex) {
con.rollback();
%><P><I>Unable to process request.</I></P>
<%}
%>
Turn
off
auto
-com
mit
Com
mit
all c
hang
es
Any
erro
rs w
ill be
cau
ght a
ndtra
nsac
tion
will
be ro
lled
back
Usi
ng L
arge
Obj
ects
JDBC
sup
ports
inpu
t and
out
put o
f lar
ge o
bjec
ts
Can
use
sta
ndar
d Ja
va I/
O fu
nctio
nalit
y (s
tream
s) w
hen
inse
rting
and
pul
ling
out l
arge
ob
ject
s
Encl
ose
all l
arge
obj
ect o
pera
tions
in a
tra
nsac
tion
Usi
ng L
arge
Obj
ects
:A
n Ex
ampl
e
Statementstmt= con.createStatement();
con.setAutoCommit(false);
ResultSetrs= stmt.executeQuery(“SELECT img_type, image ”+
“FROM categories WHERE id = 3”);
if(rs.next()) {
resp.setContentType(rs.getString(“img_type”));
InputStreamin= rs.getBinaryStream(“image”);
ServletOutputStreamout= resp.getOutputStream();
intb;
while((b = in.read()) != -1) {
out.write(b);
} in.close();
out.close();
} con.commit();
con.setAutoCommit(true);
Ret
rieve
larg
e ob
ject
and
send
to
clie
nt
Dis
conn
ectin
g fr
om th
e D
atab
ase
Cal
l the
clo
sem
etho
d of
Con
nect
ion
obje
ct:
<%
con.close();
%>
Red
Hat
Dat
abas
e Fu
ture
En
hanc
emen
ts P
revi
ew
GU
I Too
ls
Red
Hat
Dat
abas
e G
UI t
ools
Suite
of G
UI t
ools
for d
atab
ase
man
agem
ent,
acce
ss, a
dmin
istra
tion,
and
con
figur
atio
n
Des
igne
d to
allo
w c
ross
-pla
tform
use
•In
itial
rele
ase
of to
ols
for R
ed H
at L
inux
•Su
ppor
t for
oth
er p
opul
ar O
S’s
plan
ned
Prov
ide
enha
nced
eas
e-of
-use
, and
allo
w fa
ster
ad
min
istra
tion
Red
Hat
Dat
abas
e G
UI t
ools
Toda
y’s
Prev
iew
:R
ed H
at D
atab
ase
Adm
inis
trato
r•
GU
I Adm
inis
tratio
n To
ol
•M
anag
e da
taba
se o
bjec
tsU
sers
, Gro
ups,
Inde
xes,
Tab
les,
etc
.
•G
oal i
s to
acc
eler
ate
typi
cal a
dmin
istra
tive
task
sAd
d / D
rop
/ Cre
ate
obje
cts
Gra
nt /
Rev
oke
user
per
mis
sion
set
c.
(con
tinue
d)
Than
k yo
u!Vi
sit t
he R
ed H
at w
ebsi
te to
lear
n m
ore
abou
t Red
H
at D
atab
ase:
w
ww
.redh
at.c
om/s
oftw
are/
data
base
Com
ing
early
Nov
embe
r, R
ed H
at D
atab
ase
Com
mun
ity P
roje
ct P
ages
: so
urce
s.re
dhat
.com
/rhdb
Upc
omin
g Tr
aini
ng: D
ec 4
-7, D
urha
m, N
.C.
•R
DB
147
–R
ed H
at D
atab
ase
Esse
ntia
ls
Con
tact
Red
Hat
Sal
es
•86
6-2R
EDH
AT
-Opt
ion
2444
•sa
les@
redh
at.c
om
Que
stio
ns a
nd A
nsw
ers
All p
artic
ipan
ts a
re o
n m
ute.
Pl
ease
sub
mit
your
que
stio
ns v
ia th
e ch
at fe
atur
e