32
1 Connecting Databases to the Web January 31 th , 2000 Seree Chinodom

1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom

Embed Size (px)

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 ?

Citation preview

Page 1: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom

1

Connecting Databases to the Web

January 31th, 2000Seree Chinodom

Page 2: 1 Connecting Databases to the Web January 31 th, 2000 Seree 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

Page 3: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom

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

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

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

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

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

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

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

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

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

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

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

Email

Directories

COM/CORBA

Page 14: 1 Connecting Databases to the Web January 31 th, 2000 Seree Chinodom

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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/