Date post: | 18-Jan-2018 |
Category: |
Documents |
Upload: | patricia-hancock |
View: | 215 times |
Download: | 0 times |
1
Connecting Databases to the Web
January 31th, 2000Seree Chinodom
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
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
?
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
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
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
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
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
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
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
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
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
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
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>
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>
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)
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
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
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>
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
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)
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 ...
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
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
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
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.
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?
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
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
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
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
• ...
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/