* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Connecting Databases to the web
Survey
Document related concepts
Transcript
Connecting Databases to the Web
January 31th, 2000
Seree Chinodom
1
How the Web Works
• The old fashioned way:
Web-Browser
HTTP-Request
GET ...
Web-Server
HTML-File
Load File
HTML-File
File-System
January , 2000
Connecting Databases to the Web
2
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
3
Common Gateway Interface (CGI)
• Some files on server are interpreted as programs
depending on either ext., flag or special directory
• Program is invoked and generates MIME header
and HTML on stdout
Web-Server
HTTP-Request
Web-Server
HTML
HTML-File
Output
File-System
Load File
HTML?
Program?
Execute Program
January , 2000
File
Connecting Databases to the Web
I/O, Network, DB
4
CGI: Discussion
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
January , 2000
Connecting Databases to the Web
5
Java Applets
Web-Server
HTTP-Request
Web-Server
Load File
File-System
HTML-File
Load Applet...
Java-Class Requests
File
Java-Classes
ServerProcess
Execute Applet...
Java Virtual
Machine (JVM)
January , 2000
Connecting Databases to the Web
6
Java Applets: Discussion
Advantages:
- Platform independent: works for every web-server and
browser supporting Java
Disadvantages:
- 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
January , 2000
Connecting Databases to the Web
7
DB Access in Java
Java Applet
TCP/UDP
IP
Java-Server-Process
JDBC Driver manager
January , 2000
JDBCDriver
JDBCDriver
JDBCDriver
Sybase
Oracle
...
Connecting Databases to the Web
8
Server Extensions
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
January , 2000
Connecting Databases to the Web
9
Server Extensions: The Basic Idea
Web-Server
Web-Server
HTTP-Request
Load File
HTML
HTML?
HTML-File
Output
File
Script?
Server Extension
January , 2000
File-System
I/O, Network, DB
Connecting Databases to the Web
10
Server Extensions
• 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
January , 2000
Connecting Databases to the Web
11
A Quick Look at Market Shares
Market Share for Top Servers Across All Domains
August 1995 - October 1999
Source: http://www.netcraft.com/survey/
January , 2000
Connecting Databases to the Web
12
ColdFusion
Web-Server
Web-Server
HTTP-Request
HTML
Load File File-System
HTML?
HTML-File
File
HTML
CF Script?
Cold Fusion Server
Extension
Cold Fusion Application
Server
ODBC-Driver
Native
Email
Directories
DB
January , 2000
Connecting Databases to the Web
DB
COM/CORBA
13
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>
January , 2000
<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>
Connecting Databases to the Web
14
ColdFusion: Form Handling
<CFQUERY NAME=“PersonInfo”
DATASOURCE=“PersonDB”>
SELECT * FROM Persons
WHERE Name=#Form.PName#
</CFQUERY>
<HTML>
<BODY>
<CFOUTPUT QUERY=“PersonInfo”>
<HTML>
<H1> #Name# </H1>
<BODY>
<UL>
<FORM
<LI><B>Age:</B> #Age#
ACTION="http://www.abc.com/cf/pf.cfm">
<LI><B>Salary:</B> $#Sal#
<H1> Find Person </H1>
<LI><A href=“#URL#”><B>Homepage</B>
Person Name <INPUT NAME="PNAME">
</A>
<p>
</UL>
<input type="submit" value="Find">
</CFOUTPUT>
</FORM>
</BODY>
</BODY>
</HTML>
</HTML>
January , 2000
<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>
Connecting Databases to the Web
15
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
16
Active Server Pages
• Active Server Pages (ASPs)
- Available in IIS and Personal Web
Server
- Based on VBScript, Jscript
- Code in <% ... %>
- Modular Object Modell
HTTP-Request
- Active Server
Components
HTML-File
- Active Data Objects for
Database access
Web-Server
Load File
File-System
HTML
ASP-File
Output
ASP-Script
Active Server Page
Scripting Engine
I/O, Network, DB
Active Server
Components
January , 2000
Connecting Databases to the Web
17
PHP
Web-Server
Web-Server
HTTP-Request
Load File
File-System
HTML
HTML-File
PHP-File
Output
PHP-Script
PHP
Module
January , 2000
Database APIs,
other APIs SNMP,
IMAP, POP3,
LDAP, ...
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
Connecting Databases to the Web
18
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
19
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
20
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
21
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
22
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
23
2-tier architecture
• Web server plus module connecting to
database, LDAP, IMAP, ...
HTTP-Request
1
Web-Server
HTML-File
Module
2
DB
Directory
Mail
Server
January , 2000
SNMP
Connecting Databases to the Web
24
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
25
3-tier architecture
• Web server plus application server connecting to
database, IMAP, ...
Web
Server
[Cluster]
Application
Server
[Cluster]
Other Servers
[Cluster]
DB
January , 2000
DB
Repl.
DB
Mail
Server
1
2
3
SNMP
Connecting Databases to the Web
26
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
27
4-tier architecture
Web
Server
[Cluster]
Request
Router
Request
Router
Request
Router
2
Application
Server
[Cluster]
3
Other Servers
[Cluster]
DB
January , 2000
DB
Repl.
DB
Mail
Server
1
4
SNMP
Connecting Databases to the Web
28
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
29
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
30
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
31
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/
January , 2000
Connecting Databases to the Web
32