You are on page 1of 11

Tæng quan vÒ ODBC/JDBC 1

http://www.jdbc-tutorial.com/

Tæng quan vÒ ODBC/JDBC


KiÕn tróc vµ c¸c m« h×nh ho¹t ®éng

Ngêi viÕt b¸o c¸o: §µo Chung Thµnh.


WEB Database Applications Development Group.

giíi thiÖu chung.

Cïng víi sù ph¸t triÓn cña CNTT, nhu cÇu x©y dùng, lu tr÷ c¸c CSDL lín vµ
nhu cÇu vÒ chia sÎ d÷ liÖu ngµy cµng gia t¨ng. §iÒu ®ã dÉn ®Õn sù ra ®êi cña c¸c
HÖ qu¶n trÞ c¬ së d÷ liÖu kh¸c nhau (DBMS - Database Management System: Lµ
phÇn mÒm thùc thi c¸c lÖnh ®Ó truy xuÊt d÷ liÖu trong Data Storage. Thêng th×
mét DBMS bao gåm mét SQL parser - module ph©n tÝch có ph¸p c¸c lÖnh SQL,
mét Optimizer - module ®¸nh gi¸, tèi u c¸c c©u lÖnh, mét module thùc thi, vµ mét
vµi thµnh phÇn kh¸c mµ nã cung cÊp c¸c phôc vô qu¶n lý d÷ liÖu nh security,
transactions, recovery. §«i khi DBMS ®îc nh¾c tíi nh mét server, khi nãi ®Õn
Microsoft SQL Server, Oracle, hoÆc DB2 chóng ta thêng nghÜ ngay tíi DBMS.
Trong néi dung tr×nh bµy ë ®©y chóng ta sÏ xem c¸c DBMS bao gåm c¶ c¸c
Desktop Database Product nh Foxpro, Access vµ Paradox). Mçi DBMS kh¸c nhau ®-
îc triÓn khai tuú thuéc vµo c¸c nhu cÇu riªng cña tõng bé phËn.
Tríc nh÷ng nhu cÇu ngµy cµng cao cña ngêi sö dông, hä cÇn cã nh÷ng øng
dông mµ nã cã thÓ ®îc ph¸t triÓn vµ söa ®æi nhanh chãng vµ c¸c øng dông ®ã ph¶i
ph¶i khai th¸c ®îc c¸c kh¶ n¨ng ®Æc biÖt cña mçi DBMS vµ cuèi cïng lµ nã ph¶i
®¬n gi¶n dÔ sö dông. Vµ nh vËy c¸c nhµ ph¸t triÓn øng dông ®· gÆp ph¶i nhiÒu
khã kh¨n v× mçi DBMS sö dông mét version SQL cña riªng hä vµ do ®ã nã cã mét
API riªng rÊt phøc t¹p. §iÒu nµy ®· t¹o ra mét nhu cÇu cÇn thiÕt ph¶i cã mét
middleware layer ®¶m nhËn chøc n¨ng cña mét translator, nã sÏ chuyÓn ®æi c¸c
lÖnh SQL chuÈn thµnh c¸c c©u lÖnh SQL sö dông bëi DBMSs ®Æc biÖt.
Microsoft's ODBC vµ Sun Microsystem's JDBC chÝnh lµ c¸c translator nh vËy.

A. ODBC - Open database connectivity

I - ODBC lµ g× ?

§µo Chung Thµnh – WEB Group


Tæng quan vÒ ODBC/JDBC 2

ODBC (Open Database Connectivity) lµ mét standard Database API. ë ®©y


cÇn ph©n biÖt 2 kh¸i niÖm "standard API" vµ "native API": Standard API lµ mét
API chuÈn, ®iÒu ®ã cã nghÜa lµ nã ®îc sù chÊp thuËn vµ hç trî tõ c¸c nhµ cung
cÊp DBMSs vµ c¸c nhµ ph¸t triÓn øng dông. Cßn c¸c native API lµ c¸c API do tõng
nhµ cung cÊp DBMS ®a ra ®Ó truy xuÊt vµ khai th¸c hiÖu qu¶ c¸c kh¶ n¨ng ®Æc
trng cña DBMS do hä cung cÊp (vÝ dô Oracle OCI, Sybase DB-Library lµ c¸c native
API).
C¸c b¹n ®· lµm quen víi Windows API khi lËp tr×nh trong m«i trêng
Windows. Trong Visual Basic cã thÓ b¹n sÏ Ýt dïng trùc tiÕp c¸c hµm, thñ tôc do
Windows API cung cÊp nhng trong Visual C++ th× gÇn nh liªn tôc sö dông c¸c hµm,
thñ tôc nµy ®Ó øng dông cña b¹n giao tiÕp ®îc víi hÖ ®iÒu hµnh Windows vµ ®Ó
t¹o ra c¸c giao diÖn cña ngêi sö dông. Cho vÝ dô, trong vÊn ®Ò hiÓn thÞ video ®Ó
®a ra mét cöa sæ trªn mµn h×nh th× b¹n kh«ng cÇn ph¶i biÕt ®Õn lo¹i mµn h×nh
nµo ®ang ®îc sö dông, Windows API cung cÊp cho b¹n kh¶ n¨ng hiÓn thÞ video
®éc lËp víi c¸c thiÕt bÞ. Còng t¬ng tù nh vËy, ODBC lµ mét Database API chuÈn,
nã cung cÊp cho c¸c b¹n kh¶ n¨ng truy nhËp ®Õn c¸c CSDL mét c¸ch ®éc lËp víi c¸c
DBMS, qua ODBC c¸c b¹n cã thÓ truy xuÊt ®îc tíi c¸c CSDL trªn c¸c DBMS kh¸c
nhau.

C¸c ®Æc ®iÓm cña ODBC:

 ODBC lµ mét giao diÖn lËp tr×nh sö dông SQL : ODBC sÏ sö dông c¸c
lÖnh SQL ®Ó truy xuÊt c¸c CSDL.

 ODBC t¸ch c¸c nhµ ph¸t triÓn øng dông khái sù phøc t¹p cña viÖc kÕt nèi
tíi mét nguån d÷ liÖu: Môc tiªu chÝnh ®îc ®Ò cho ODBC lµ nã ph¶i dÔ
dµng cho ngêi lËp tr×nh øng dông cã thÓ t¹o ra c¸c kÕt nèi cña ngêi sö
dông cuèi tíi nguån d÷ liÖu thÝch hîp mµ kh«ng ph¶i trë thµnh mét
chuyªn gia vÒ m¹ng.

 KiÕn tróc cña ODBC cho phÐp nhiÒu øng dông truy xuÊt nhiÒu nguån
d÷ liÖu.

Truy xuÊt nhiÒu DBMS kh«ng cã ODBC:

Application 1 Application 2 Application 3


API API API API API API API API API

§µo Chung Thµnh – WEB Group


Tæng quan vÒ ODBC/JDBC 3

DBMS 1 DBMS 2 DBMS 3

Truy xuÊt nhiÒu DBMS víi ODBC:

Application 1 Application 2 Application 3

ODBC

DBMS 1 DBMS 2 DBMS 3

 ODBC cung cÊp mét m« h×nh lËp tr×nh "thÝch øng" (adaptive): ODBC
cung cÊp c¸c chøc n¨ng mµ nã cã thÓ ®îc sö dông víi tÊt c¶ c¸c DBMS
trong khi vÉn cho phÐp mét øng dông khai th¸c c¸c kh¶ n¨ng riªng cña mçi
DBMS. Nã cung cÊp c¸c interrogation function mµ mét øng dông cã thÓ
chñ ®éng sö dông ®Ó x¸c ®Þnh c¸c kh¶ n¨ng cña mét DBMS. C¸c
interrogation function cho phÐp mét øng dông hái mét driver vÒ mét vµi
chøc n¨ng ®Æc biÖt cã ®îc cung cÊp trong mét DBMS nµo ®ã hay kh«ng.

II - KiÕn tróc cña ODBC.

1. ODBC ®îc x©y dùng trªn m« h×nh kiÕn tróc Client/Server.

Trong kiÕn tróc Client/Server bao gåm mét mét client, mét server, vµ mét data
protocol mµ nã cho phÐp client vµ server giao tiÕp víi nhau. M« h×nh nµy rÊt lý t-
ëng cho mét Traditional Relational DBMS, trong ®ã mét m¹ng vËt lý kÕt nèi client
PC tíi DBMS ë trªn mét m¸y kh¸c. ODBC ®îc thiÕt kÕ ®Ó sö dông víi c¸c hÖ thèng

§µo Chung Thµnh – WEB Group


Tæng quan vÒ ODBC/JDBC 4

n»m trong m« h×nh kiÕn tróc client/server, ®¸p øng ®îc c¸c yªu cÇu cÇn thiÕt cho
c¸c Traditional Relational DBMS nh:

 Cung cÊp mét standard API.


 Khai th¸c tÊt c¶ c¸c chøc n¨ng cña bÊt cø mét DBMS nµo.
 Cung cÊp mét sù thùc thi t¬ng ®¬ng víi native API cña bÊt cø mét
DBMS nµo.

KiÕn tróc cña ODBC ®Æt trªn nÒn t¶ng m« h×nh kiÕn tróc client/server vµ
sù ®¶m nhËn cho bÊt cø mét giao diÖn lËp tr×nh nµo còng cã thÓ ph¸t vµ thu trªn
giao thøc truyÒn d÷ liÖu cña bÊt cø mét SQL DBMS, sÏ ho¹t ®éng vµ thùc thi nh
native API cho DBMS ®ã.
ODBC kh«ng chØ giíi h¹n víi c¸c client/server DBMS, nã còng lµm viÖc víi
c¸c desktop database vµ c¸c file-oriented store nh b¶ng tÝnh vµ text.

2. C¸c thµnh phÇn c¬ b¶n trong kiÕn tróc cña ODBC.


File - Oriented Data Store Client/Server DBMS

User User
Interface Interface
Client

Application Application

ODBC Driver Manager ODBC Driver Manager


ODBC Drivers ODBC Drivers

Data Network/Communications

Data Protocol

DBMS
Data Source
Serve
Data

§µo Chung Thµnh – WEB Group


Tæng quan vÒ ODBC/JDBC 5

Applications: C¸c øng dông ®¶m nhËn viÖc t¬ng t¸c víi ngêi sö dông qua
user interface vµ gäi c¸c ODBC function ®Ó ®a ra c¸c c©u lÖnh SQL vµ nhËn c¸c
kÕt qu¶ tr¶ vÒ.
Driver Manager: Nh tªn gäi cña nã, nhiÖm vô cña nã lµ qu¶n lý sù t¬ng t¸c
gi÷a c¸c ch¬ng tr×nh øng dông vµ c¸c driver, nhiÒu øng dông vµ nhiÒu driver cã
thÓ ®îc qu¶n lý cïng mét lóc. Driver Manager cung cÊp sù liªn kÕt gi÷a c¸c øng
dông vµ c¸c driver, cho phÐp nhiÒu øng dông truy xuÊt d÷ liÖu qua nhiÒu driver.
Driver Manager load hay unload mét hoÆc nhiÒu driver cho mét hoÆc nhiÒu øng
dông. Khi mét øng dông cÇn truy xuÊt mét nguån d÷ liÖu, Driver Manager sÏ load
®óng driver cÇn thiÕt. Driver Manager x¸c ®Þnh c¸c ODBC function ®îc cung cÊp
bëi driver ®ã vµ ghi c¸c ®Þa chØ trong bé nhí cña chóng vµo mét b¶ng. Khi mét øng
dông gäi mét function trong mét driver, Driver Manager sÏ x¸c ®Þnh vµo gäi
function ®ã. B»ng c¸ch nµy, nhiÒu driver cã thÓ ®îc qu¶n lý ®ång thêi vµ ngêi lËp
tr×nh øng dông kh«ng ph¶i lo l¾ng ®Õn viÖc qu¶n lý chi tiÕt c¸c tõng driver. Mét
øng dông cã thÓ sö dông ODBC t¹i cïng mét thêi ®iÓm víi mét øng dông kh¸c mµ
kh«ng cÇn ph¶i biÕt ®Õn øng dông nµy.
Drivers: C¸c driver xö lý c¸c ODBC function ®îc gäi, ®a ra c¸c yªu cÇu SQL
®Ó chØ ®Þnh c¸c nguån d÷ liÖu, vµ tr¶ vÒ kÕt qu¶ cho c¸c øng dông. C¸c driver
còng ®¶m nhËn viÖc t¬ng t¸c víi bÊt cø c¸c líp phÇn mÒm nµo cÇn thiÕt ®Ó truy
xuÊt nguån d÷ liÖu.
Data sources: Bao gåm c¸c tËp hîp d÷ liÖu vµ c¸c m«i trêng t¬ng øng cña
chóng, bao gåm c¸c hÖ ®iÒu hµnh, c¸c DBMS, vµ c¸c phÇn mÒm m¹ng.

III - C¸c m« h×nh ho¹t ®éng cña ODBC.

1. M« h×nh One-Tier

M« h×nh nµy ®îc dïng ®Ó truy xuÊt c¸c Desktop Database/ISAM (Indexed
Sequential Access Method) file (c¸c file d÷ liÖu Foxpro, Access, Paradox, dBase),
hoÆc c¸c flat file (c¸c file text hoÆc spreadsheet).

Application
ODBC Driver Manager
One-Tier Driver One-Tier Driver
(Flat files) (ISAM/Desktop DB
files)

§µo Chung Thµnh – WEB Group


Tæng quan vÒ ODBC/JDBC 6

ISAM/Desktop Database
Engines

File I/O Calls

File System

Trong m« h×nh nµy One-Tier driver sÏ ®¶m nhiÖm vai trß cña mét SQL
Database Engine, thùc hiÖn xö lý tÊt c¶ c¸c c©u lÖnh SQL (parse, optimize,
execute).

2. M« h×nh Two-Tier

§©y lµ mét m« h×nh kinh ®iÓn trong kiÕn tróc Client/Server. C¸c Two-Tier
driver trùc tiÕp göi vµ nhËn th«ng tin trªn giao thøc truyÒn d÷ liÖu cña mét DBMS
hoÆc ¸nh x¹ tíi c¸c native Database API, kh«ng trùc tiÕp truy xuÊt d÷ liÖu. DBMS
Server nhËn c¸c yªu cÇu SQL tõ Client, thùc hiÖn chóng vµ göi kÕt qu¶ trë l¹i
Client.

Application
ODBC Driver Manager
Two-Tier Driver Two-Tier Driver
(Using Messaging or (Mapping to Native API)
RPCs)

Native Database API


Client
Native Database Runtime
Library

Data Protocol

Network Library or RPC Runtime System

Network Transport
Carrying Data Protocol
§µo Chung Thµnh – WEB Group
Tæng quan vÒ ODBC/JDBC 7

DBMS
Server

Cho vÝ dô, Two-Tier driver truy xuÊt CSDL trªn Microsoft SQL Server sÏ
trùc tiÕp truyÒn vµ nhËn th«ng tin trªn giao thøc truyÒn d÷ liÖu, Two-Tier driver
truy xuÊt CSDL trªn Oracle sÏ ¸nh x¹ tíi Oracle's Native API ®ã lµ OCI (Oracle Call
Interface).

§µo Chung Thµnh – WEB Group


Tæng quan vÒ ODBC/JDBC 8

Mét sù biÕn ®æi kh¸c cña m« h×nh nµy:

Application
ODBC Driver Manager
Middleware Vendor's ODBC Client
Client
Middleware Vendor's Network Library or
RPC Runtime System

Middleware Vendor's Server Application


DBMS Vendor's Runtime Library Serve
DBMS

3. M« h×nh Three-Tier

Client trong m« h×nh Three-Tier thay v× kÕt nèi trùc tiÕp tíi DBMS, nã ®îc
kÕt nèi qua mét Gateway Server.

Application
Client ODBC Driver Manager
Three-Tier (Gateway) Driver
Network Library or RPC Runtime System

DBMS - independent protocol

Server (Gateway)
ODBC Driver Manager
Gateway
Server One-Tier or Two-Tier Driver
Other Components

DBMS proprietary

Database DBMS
Server
§µo Chung Thµnh – WEB Group
Tæng quan vÒ ODBC/JDBC 9

Trong thùc tÕ, Gateway Server sÏ kÕt nèi tíi nhiÒu DBMS. Trong hÖ thèng
triÓn khai c¸c øng dông x©y dùng trªn ODBC ®Ó truy xuÊt nhiÒu nguån d÷ liÖu,
m« h×nh Three-Tier ®· ®a hÇu hÕt nh÷ng sù phøc t¹p trªn Client lªn Server. Nã trî
gióp rÊt nhiÒu trong viÖc ®¬n gi¶n ho¸ sù cµi ®Æt, qu¶n lý c¸c driver trªn Client.

B. JDBC - Java Database Connectivity

I - JDBC lµ g×?

T¬ng tù nh ODBC th× JDBC còng lµ mét Database API chuÈn. JDBC API
®Þnh nghÜa c¸c líp Java ®Ó ®a ra c¸c kÕt nèi CSDL, c¸c c©u lÖnh SQL, c¸c tËp
hîp kÕt qu¶, c¸c siªu d÷ liÖu,... Nã cho phÐp mét ngêi lËp tr×nh Java ®a ra c¸c c©u
lÖnh SQL vµ xö lý c¸c kÕt qu¶ ®îc tr¶ vÒ. JDBC lµ primary API cho viÖc truy
xuÊt d÷ liÖu trong Java.
JDBC API ®îc thùc hiÖn qua mét Driver Manager mµ nã thÓ cung cÊp nhiÒu
driver kÕt nèi tíi c¸c kiÓu CSDL kh¸c nhau. C¸c JDBC driver hoÆc cã thÓ ®îc viÕt
hoµn toµn b»ng Java (pure java) ®Ó cho chóng cã thÓ ®îc download nh mét phÇn
cña applet, hoÆc chóng cã thÓ ®îc thùc thi sö dông c¸c native method ®Ó nèi víi c¸c
th viÖn truy xuÊt CSDL ®· cã (Database Access Libraries).

II - KiÕn tróc cña jdbc

Còng nh ODBC th× JDBC ®îc thiÕt kÕ cho m« h×nh kiÕn tróc Client/Server
víi c¸c øng dông Java truy xuÊt CSDL. C¸c thµnh phÇn vµ chøc n¨ng chóng trong
kiÕn tróc cña JDBC còng t¬ng tù nh trong ODBC.

 Java Applications: C¸c øng dông truy nhËp CSDL viÕt b»ng Java (Java
applet/Java stand-alone application).
 JDBC Driver Manager.
 JDBC Drivers.
 Data Source.

Java Application
JDBC Driver Manager
JDBC Drivers

Data Source
§µo Chung Thµnh – WEB Group
Tæng quan vÒ ODBC/JDBC 10

III - C¸c m« h×nh ho¹t ®éng cña JDBC

1. M« h×nh Two-Tier:

Trong m« h×nh Two-Tier, mét Java applet/application qua c¸c driver trùc tiÕp
gäi tíi CSDL. M« h×nh yªu cÇu mét JDBC driver cã thÓ giao tiÕp víi mét DBMS
®Æc biÖt ®îc truy xuÊt. Qua ®ã c¸c c©u lÖnh SQL cña ngêi sö dông ®îc chuyÓn
tíi DBMS, vµ kÕt qu¶ cña ®îc göi trë l¹i cho ngêi sö dông. DBMS ®îc ®Æt trªn mét
Database Server.
- Native-API party-Java driver: KiÓu driver nµy chuyÓn c¸c yªu cÇu JDBC
thµnh c¸c yªu cÇu t¬ng øng trªn c¸c native API cho DBMS t¬ng øng. Nã lµ mét
bridge driver nªn yªu cÇu ph¶i cã mét vµi m· ®îc n¹p trªn Client.
- JDBC-ODBC bridge driver: KiÓu driver nµy truy xuÊt DBMS qua c¸c
ODBC driver. Yªu cÇu m· ODBC ph¶i ®îc n¹p trªn Client. KiÓu driver hÇu nh chØ
dïng trªn c¸c m¹ng tæ hîp - n¬i mµ viÖc cµi ®Æt client kh«ng ph¶i lµ vÊn ®Ò
chuyªn m«n hoÆc cho application server viÕt b»ng Java trong kiÕn tróc three-tier.
- Native-protocol pure Java driver: KiÓu driver nµy chuyÓn c¸c yªu cÇu
JDBC trªn giao thøc ®îc sö dông trùc tiÕp bëi DBMS. Nã cho phÐp mét yªu cÇu
trùc tiÕp tõ Client tíi DBMS Server, ®©y lµ gi¶i ph¸p thÝch hîp cho truy xuÊt
Intranet.

Java applet/application
JDBC Driver Manager
Native-API JDBC-ODBC Native-
party-Java bridge driver protocol pure

Client ODBC Driver


Client
Native API

DBMS Proprietary Protocol


Server

DBMS

§µo Chung Thµnh – WEB Group


Tæng quan vÒ ODBC/JDBC 11

2. M« h×nh Three-Tier:

Trong m« h×nh Three-Tier, c¸c yªu cÇu ®îc JDBC-Net driver göi tíi mét
middle-tier qua mét giao thøc ®éc lËp víi DBMS, sau ®ã qua mét giao thøc ®Æc
biÖt middle-tier göi c¸c c©u lÖnh SQL tíi DBMS. DBMS xö lý c¸c c©u lÖnh nµy
råi göi kÕt qu¶ trë l¹i cho middle-tier, middle-tier göi kÕt qu¶ nµy tíi øng dông.

Java applet/application

DBMS-independent protocol

Application Server
JDBC

DBMS proprietary protocol

DBMS

Pure Java driver nh JDBC-Net pure Java driver vµ Native-protocol pure Java
driver sÏ thêng ®îc sö dông ®Ó truy xuÊt c¸c CSDL, nã khai th¸c ®îc lîi thÕ cña
Java vµ tèc ®é truy xuÊt sÏ nhanh h¬n c¸c bridge driver. Cßn c¸c kiÓu bridge driver
nh JDBC-ODBC bridge driver vµ Native-API partly Java driver chØ lµ c¸c gi¶i ph¸p
t¹m thêi ®îc sö dông trong nh÷ng trêng hîp mµ ë ®ã kh«ng thÓ sö dông c¸c pure
Java driver.

Tµi liÖu tham kh¶o:


- Kyle Geiger - INSIDE ODBC.
- Vµ mét sè th«ng tin trªn Internet.

§µo Chung Thµnh – WEB Group

You might also like