Professional Documents
Culture Documents
Tong Quan Ve ODBCJDBC
Tong Quan Ve ODBCJDBC
http://www.jdbc-tutorial.com/
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.
I - ODBC lµ g× ?
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.
ODBC
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.
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
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:
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.
User User
Interface Interface
Client
Application Application
Data Network/Communications
Data Protocol
DBMS
Data Source
Serve
Data
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.
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)
ISAM/Desktop Database
Engines
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)
Data Protocol
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).
Application
ODBC Driver Manager
Middleware Vendor's ODBC Client
Client
Middleware Vendor's Network Library or
RPC Runtime System
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
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.
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).
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
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
DBMS
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
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.