1 connecting databases to the web january 31 th, 2000 seree chinodom
DESCRIPTION
January, 2000Connecting Databases to the Web3 How the Web Works All pages are static Need to generate web pages on the fly depending on user input ?TRANSCRIPT
![Page 1: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/1.jpg)
1
Connecting Databases to the Web
January 31th, 2000Seree Chinodom
![Page 2: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/2.jpg)
January , 2000 Connecting Databases to the Web 2
How the Web Works
• The old fashioned way:Web-Browser
HTTP-RequestGET ...
Web-Server
File-System
Load File
HTML-File
HTML-File
![Page 3: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/3.jpg)
January , 2000 Connecting Databases to the Web 3
How the Web Works
• All pages are static• Need to generate web pages on the fly depending
on user input
?
![Page 4: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/4.jpg)
January , 2000 Connecting Databases to the Web 4
• Some files on server are interpreted as programsdepending on either ext., flag or special directory
• Program is invoked and generates MIME header and HTML on stdout
Web-Server
Common Gateway Interface (CGI)
HTTP-Request
HTML-File
Web-Server
File-SystemLoad File
FileHTML?
HTML
Execute Program
Program?Output
I/O, Network, DB
![Page 5: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/5.jpg)
January , 2000 Connecting Databases to the Web 5
Advantages:
- Standardized: works for every web-server, browser
- Flexible: Any language (C++, Perl, Java, …) can be used
Disadvantages:
- Statelessness: query-by-query approach
- Inefficient: new process for every request
- Security: CGI programmer is responsible for security
- Updates: To update layout, one has to be a programmer
CGI: Discussion
![Page 6: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/6.jpg)
January , 2000 Connecting Databases to the Web 6
Java Applets
Web-ServerHTTP-Request
HTML-File
Web-Server
File-SystemLoad File
FileLoad Applet...
Java-Class Requests
Java-Classes
Execute Applet...
Java Virtual Machine (JVM)
Server-Process
![Page 7: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/7.jpg)
January , 2000 Connecting Databases to the Web 7
Advantages:- Platform independent: works for every web-server and
browser supporting JavaDisadvantages:
- Standalone Character:· Entire session runs inside applet· HTML forms are not used
- Inefficient: loading can take a long time ...- Resource intensive: Client needs to be state of the art- Restrictive: can only connect to server where applet was
loaded from (restrictions of Java VM)Note: Server-Process can be written in any language
Java Applets: Discussion
![Page 8: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/8.jpg)
January , 2000 Connecting Databases to the Web 8
Java-Server-Process
DB Access in Java
Sybase
Java Applet
TCP/UDPIP
Oracle ...
JDBC-Driver
JDBC-Driver
JDBC-Driver
JDBC Driver manager
![Page 9: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/9.jpg)
January , 2000 Connecting Databases to the Web 9
Previous Approaches- Platform independent and standardized
- Simple interface
- Lots of programming necessary
- Inefficient
Server Extensions- Server is extended with handler/module
- One handler for all incoming requests
- Much more efficient
Server Extensions
![Page 10: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/10.jpg)
January , 2000 Connecting Databases to the Web 10
Server Extensions: The Basic Idea
File-SystemWeb-Server
HTTP-Request
HTML-File
Web-Server
Load File
FileHTML?HTML
I/O, Network, DB
Script?Output
Server Extension
![Page 11: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/11.jpg)
January , 2000 Connecting Databases to the Web 11
• API depends on Server vendor:- Apache Foundation Apache Server: Apache API- Microsoft Internet Information Server: ISAPI- Netscape Enterprise Server: NSAPI
• One can define it’s own server extension, e.g.- Authentication module- Counter module
Server Extensions
![Page 12: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/12.jpg)
January , 2000 Connecting Databases to the Web 12
A Quick Look at Market Shares
Source: http://www.netcraft.com/survey/
Market Share for Top Servers Across All DomainsAugust 1995 - October 1999
![Page 13: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/13.jpg)
January , 2000 Connecting Databases to the Web 13
ColdFusion
File-SystemWeb-Server
HTTP-Request
HTML-File
Web-Server
Load File
FileHTML?
HTML
CF Script?HTML
Cold Fusion Server Extension
Cold Fusion Application Server
ODBC-Driver Native
DB DB
Directories
COM/CORBA
![Page 14: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/14.jpg)
January , 2000 Connecting Databases to the Web 14
ColdFusion: Simple Query
• Proprietary Scripting Language CFML - similar to other scripting languages<CFQUERY NAME=“PersonList”
DATASOURCE=“PersonDB”>SELECT * FROM Persons
</CFQUERY><HTML><BODY><H1> Person List </H1><CFOUTPUT QUERY=“PersonList”>
<B>Name:</B> #Name#<B>Age:</B> #Age# <B>Salary:</B> $#Sal# <BR>
</CFOUTPUT></BODY></HTML>
<HTML><BODY><H1> Person List </H1><B>Name:</B> Tom <B>Age:</B> 45<B>Salary:</B> $45000 <BR><B>Name:</B> Jim <B>Age:</B> 38<B>Salary:</B> $40000 <BR><B>Name:</B> Karen <B>Age:</B> 26<B>Salary:</B> $32000 <BR></BODY></HTML>
![Page 15: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/15.jpg)
January , 2000 Connecting Databases to the Web 15
ColdFusion: Form Handling
<HTML><BODY><FORM ACTION="http://www.abc.com/cf/pf.cfm"><H1> Find Person </H1>Person Name <INPUT NAME="PNAME"> <p><input type="submit" value="Find"></FORM></BODY></HTML>
<CFQUERY NAME=“PersonInfo” DATASOURCE=“PersonDB”>SELECT * FROM Persons WHERE Name=#Form.PName#
</CFQUERY><HTML><BODY><CFOUTPUT QUERY=“PersonInfo”><H1> #Name# </H1><UL> <LI><B>Age:</B> #Age# <LI><B>Salary:</B> $#Sal# <LI><A href=“#URL#”><B>Homepage</B> </A></UL></CFOUTPUT></BODY></HTML>
<HTML><BODY><H1> Tom </H1><UL> <LI><B>Age:</B> 45 <LI><B>Salary:</B> $45000 <LI><A href=“www.tom.com” <B>Homepage</B></A></UL></BODY></HTML>
![Page 16: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/16.jpg)
January , 2000 Connecting Databases to the Web 16
ColdFusion: Misc. Issues
• Siteadmin sets up data sources very similar to the handling of ODBC data sources in MS Windows
• In fact ColdFusion combines techniques to access databases:- Generation of HTML code- Java Applets embedded via <CFGRID></CFGRID>
access the database through the application server• Application server is also gateway to database
for the ColdFusion IDE (ColdFusion Studio)
![Page 17: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/17.jpg)
January , 2000 Connecting Databases to the Web 17
• Active Server Pages (ASPs)- Available in IIS and Personal Web
Server- Based on VBScript, Jscript- Code in <% ... %>- Modular Object Modell- Active Server
Components- Active Data Objects for
Database access
Active Server Pages
File-SystemWeb-Server
HTTP-Request
HTML-File
Load File
ASP-File
HTML
ASP-ScriptOutput
I/O, Network, DBActive Server PageScripting Engine
Active Server Components
![Page 18: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/18.jpg)
January , 2000 Connecting Databases to the Web 18
PHP
How does PHP differ from ASP and CF?
• Free, open source• Many client libraries
integrated• Runs on any web
server supporting CGIs (MS Windows or Unix)
• Module version for Apache
File-SystemWeb-Server
HTTP-Request
HTML-File
Load File
PHP-File
HTML
PHP-ScriptOutput
Database APIs, other APIs SNMP, IMAP, POP3, LDAP, ...
PHP
Module
Web-Server
![Page 19: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/19.jpg)
January , 2000 Connecting Databases to the Web 19
PHP: an Example<HTML> <BODY>
<?PHP $db = mysql_connect("localhost", "root"); mysql_select_db("mydb",$db); $result = mysql_query("SELECT * FROM employees",$db);?>
<TABLE BORDER=1> <TR><TD>NAME</TD><TD>POSITION</TR>
<?PHP while ($myrow = mysql_fetch_row($result)) { printf("<tr><td>%s %s</td><td>%s</td></tr>\n", $myrow[1], $myrow[2], $myrow[3]); } ?>
</TABLE></BODY></HTML>
![Page 20: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/20.jpg)
January , 2000 Connecting Databases to the Web 20
PHP: Misc. Issues
• Syntax Perl/C like• Form fields are available as variables in
following page• has e.g. image and PDF generation on the fly• some OO features (e.g. classes)• Version 4 in beta test has
- more OO features- is based on a different, faster scripting engine- more modular architecture
• The number of functions is steadily increasing
![Page 21: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/21.jpg)
January , 2000 Connecting Databases to the Web 21
Databases Usually Used• ASP
- MS Jet Engine (DB engine behind MS Access)- MS SQL Server- Oracle (ODBC)
• ColdFusion- Oracle (native driver support)- Informix (native driver support)- Sybase (native driver support)
• PHP- MySQL (linked in client library)- mSQL (linked in client library)- Postgres (linked in client library)- Oracle (linked in client library)
![Page 22: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/22.jpg)
January , 2000 Connecting Databases to the Web 22
What Else Is Out There?
• Oracle Application Server (formerly known as OWS)- 3-tier architecture- PENN ExpressApp is based on OWS
• Informix Web datablade• Servlets for Java based web server• various web shop applications
- all of them use a more or less sophisticated scripting language
• and a lot more ...
![Page 23: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/23.jpg)
January , 2000 Connecting Databases to the Web 23
Architectures
• The architecture is the kind and number of servers involved
• Different architectures different advantages and disadvantages
• Generally we can distinguish between three different types:- 2-tier architecture- 3-tier architecture- 4-tier architecture
![Page 24: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/24.jpg)
January , 2000 Connecting Databases to the Web 24
Web-Server
2-tier architecture
• Web server plus module connecting to database, LDAP, IMAP, ...
HTTP-Request
HTML-File
Module
DB Directory
Mail Server
SNMP
1
2
![Page 25: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/25.jpg)
January , 2000 Connecting Databases to the Web 25
2-tier architecture
• Advantages:- easy and fast to setup- easy to administer
• Disadvantages:- not fail safe- scales badly on high loads
![Page 26: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/26.jpg)
January , 2000 Connecting Databases to the Web 26
3-tier architecture
• Web server plus application server connecting to database, IMAP, ...
DB DB Mail Server
SNMP
1
3
2
Web Server [Cluster]
Application Server [Cluster]
Other Servers [Cluster]
DBRepl.
![Page 27: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/27.jpg)
January , 2000 Connecting Databases to the Web 27
3-tier architecture
• Advantages:- better scalability- more reliable through failover mechanisms- offers better load balancing
• Disadvantages:- already complicated to set up- who is responsible for load balancing?
![Page 28: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/28.jpg)
January , 2000 Connecting Databases to the Web 28
4-tier architecture
DB DB Mail Server
SNMP
1
4
3
Web Server [Cluster]
Application Server [Cluster]
Other Servers [Cluster]
DBRepl.
2Request Router
Request Router
Request Router
![Page 29: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/29.jpg)
January , 2000 Connecting Databases to the Web 29
4-tier architecture
• Advantages:- even better scalability- better failover mechanisms- Request routers offer better load balancing- Easier to administer (number of request router
usually small)
• Disadvantages:- initial setup very complicated
![Page 30: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/30.jpg)
January , 2000 Connecting Databases to the Web 30
Architectures: Usage
• 2-tier- Apache-PHP plus Database etc.
• 3-tier- ColdFusion 4.0x- Oracle Web Application Server?
• 4-tier- Web shops like Intershop, ...- ColdFusion 4.5x?- Oracle Application Server?
Classification not always 100% clear
![Page 31: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/31.jpg)
January , 2000 Connecting Databases to the Web 31
Security Issues
• Complicated architecture More potential for glitches
• Protection of users from each other
• Web server with DB nice way for hacker into main database
• ...
![Page 32: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom](https://reader033.vdocuments.us/reader033/viewer/2022052607/5a4d1b747f8b9ab0599b6615/html5/thumbnails/32.jpg)
January , 2000 Connecting Databases to the Web 32
Links
• Products:- Apache: http://www.apache.org/- ASP: http://msdn.microsoft.com/workshop/server/default.asp- ColdFusion: http://www.allaire.com/coldfusion/- MySQL: http://www.mysql.com/ - Oracle: http://www.oracle.net/- Oracle Technet: http://technet.oracle.net/- PHP: http://www.php.net/
• Others:- c|net: http://www.builder.com/- DevShed: http://www.devshed.com/Server_Side/- Webmonkey: http://www.hotwired.com/webmonkey/