Tải bản đầy đủ (.pdf) (6 trang)

Tài liệu so sánh các phương pháp tiếp cận cơ sở dữ liệu XML docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (209.31 KB, 6 trang )



So sánh các phng pháp tip cn c s d liu
XML
 
Mc : Trung bình
Adriaan de Jonge, K s phn mm, Freelance
17 07 2009
Nhu cu s dng XML ngày càng tng òi hi các h thng mà lu tr d liu bán cu trúc
mà không cn phi ép nó vào các cu trúc d liu không phù hp. Các yêu cu này u c
áp ng bi c c s d liu XML nguyên gc và c s d liu quan h h tr XML. Câu
hi t ra là: Ti sao bn thích mt c s d liu XML nguyên gc hn mt c s d liu c
in vi h tr XML hoc các cách khác? Bài vit này so sánh các phng pháp tip cn cho
mt s các gii pháp khác nhau, bao gm eXist, Mark Logic, và IBM® DB2® Express-C. S
khác bit ca các kiu c s d liu c so sánh gia nhng thun li và khó khn ca
chúng.
Trong nhng nm u tiên ca c s d liu XML, s khác bit gia cái c gi là c s d liu XML
nguyên gc (native XML database-NXD) và các h thng qun lý c s d liu quan h có h tr XML
(relational database management systems - RDBMS) là rt ln. Các NXD c ti u hóa  lu tr các
tài liu XML. Các bn RDBMS c ch! thêm mt s gia v" vào các i tng nh" phân ln (binary large
object - BLOB)  cha XML.
Ngày nay, các NXD v#n là NXD nhng c ci tin rt
nhiu. Cùng th$i im, các nhà cung cp RDBMS ã có
th$i gian ui k"p khi chúng có th lu tr các tài liu
XML. Các phn XML không còn c lu tr trong các
BLOBs. Thay vì nh vy, chúng c lu tr trong các
cu trúc cây (tree-like structure), c ti u hóa  cha
các tài liu có cu trúc cây, bn cht t nhiên ca mt tài
liu XML chu%n.
Trong th$i gian gia các cài t ban u và các gii pháp ngày nay, mt s s phát trin nn tng ã c
thêm vào s chu%n hóa ca các ngôn ng truy vn trên các tài liu XML — áng chú ý nht, XQuery 1.0,


vi h tr cho Ngôn ng &$ng d#n XML (XML Path Language - XPath) 2.0. Khái nim ca XQuery
c phát trin trong nhiu nm; kt qu cui cùng có s tng ng vi các phiên bn trc ó nhng
hoàn thin hn. Ging nh Ngôn ng Truy vn Có cu trúc (Structured Query Language - SQL), XQuery
%y mnh s c lp ca nhà cung cp và tái s dng.
Ti sao bn cn c s d liu XML?

Các c s d liu th$ng có th lu tr c tài liu không cu trúc và có cu trúc. C hai u yêu cu các
cu trúc d liu mà không th$ng xuyên thay i. Tuy nhiên, im yu ca các c s d liu quan h là
vic lu tr các tài liu bán cu trúc. Không nh các d liu có cu trúc, các tài liu bán cu trúc này có
th có rt nhiu bc t do trong trt t ca các thành phn trong tài liu và cách nhng thành phn ó c
lng vào nhau. Không nh các tài liu không có cu trúc, các thành phn riêng l' có th c phân loi
b(ng cách s dng các nhãn mô t.
Bn có th lu tr d liu bán cu trúc trong các cu trúc quan h không? Tt nhiên là bn có th, nhng
bn có th kt thúc b(ng mt cu trúc d liu c th mà th$ng xuyên thay i, mt cu trúc d liu tng
quát hóa mà làm mt mô t ca các nhãn hoc mt mô hình tr)u tng nh là nhng th mà các h thng
qun lý ni dung s dng, trn d liu vi nhng th mà áng ra là siêu d liu (metadata).
Mt khác, "nh dng XML phù hp vi vic mô t d liu bán cu trúc. Thêm na, bn có th duy trì mô
hình d liu mt cách d* dàng. Thêm các tên ca thành phn không làm thay i cu trúc d liu — nó
luôn gi cu trúc cây. Nó ch! liên quan n mt s thay i trong lc  XML mô t cách thc mà các
Các thut ng hay dùng

 API: Giao din lp trình ng dng
 HTTP: Giao thc truyn siêu vn
bn
 IT: Công ngh thông tin

XML: Ngôn ng ánh du m rng
Page 1 of 6So sánh các phng pháp tip cn c s d liu XML
tên ca phn t c s dng và liên kt bên trong cu trúc cây.
Vi các tài liu nh là các h s xin vic, các mô t sn ph%m, và các n hàng ca khách hàng, XML có

l+ là "nh dng phù hp. &ng th$i, XML có kh nng mô t c d liu có cu trúc và d liu không có
cu trúc.



Th thì, bn có cn các c s d liu quan h na
không?

Khi bn to mt gii pháp phn mm mi, câu tr l$i có th là "Không!". Nu bn có mt gii pháp mà
cho phép bn lu tr d liu bán cu trúc, bn c ng có th s dng nó  lu tr d liu có cu trúc và
không có cu trúc. Vic có tt c d liu ca bn trong mt gii pháp lu tr n l' vi kh nng tng kt
và to ra các truy vn mà bao trùm mi th trong mt ln thì d* hn rt nhiu so vi d liu tích hp t)
nhiu ngun lu tr khác nhau.
Tt hn, nu tr l$i "không" vi câu hi này, bn nên  phn ln d liu ca mình  dng kiu tài liu
bán cu trúc. Tuy nhiên, nu a phn d liu ca bn phù hp vi mô hình quan h có cu trúc cht ch+ và
ít ging vi kiu tài liu và qun cht vi nhau, thì vic chn mt NXD có l+ không giúp ích gì cho tr$ng
hp ca bn.
Vy thì làm th nào  xác "nh bn cht d liu ca bn? Và bn s+ phi làm gì nu khi lng d liu có
cu trúc, bán cu trúc và không cu trúc là tng ng? Trong tr$ng hp bt "nh nh vy, tin tt lành
là các c s d liu c in là la chn phù hp  cha các tài liu XML hoc các phân mnh ca các tài
liu XML vào th$i im hin ti. Các cách thc  truy cp nhng phân mnh XML này có l+ khác nhau
gia các c s d liu. Mt iu mà các bn cài t ca các c s d liu cùng có là chúng s dng bn
XQuery 1.0.



Các gii pháp

Mt s sn ph%m trên th" tr$ng cài t mt c s d liu XML mt chiu hoc mt c s d liu khác,
bao gm Xindice, Tamino, X-Hive, Oracle, và Microsoft® SQL Server. Tuy nhiên, tôi s+ không khung

làm vic lun v nhng sn ph%m này trong bài vit này. Mt bn so sánh sn ph%m dài và y  là không
kh thi, và nó có th không áng tin khi mà bài vit này c công b trên trang ca mt nhà cung cp mt
gii pháp c s d liu XML. Các tác gi c lp c ng không gii quyt hoàn toàn các câu hi mt cách
khách quan.
Nhng gì tôi có th làm là tho lun v IBM DB2 Express-C vi các tính nng pureXML và so sánh nó
vi các tip cn ca các NXD c in. Vi so sánh này, tôi ã chn mt d án mã m tên là eXist-DB. C
eXist-DB và DB2 Express-C u mi*n phí và cung cp rt nhiu chc nng thân thin vi ng$i dùng.
Nu bn mun lu tr lng d liu cc ln, tôi khuyên bn mua mt phiên bn thng mi ca DB2.
&u tiên, DB2 có l+ nghe nh là mt cái gì ó rt nng n, nhng bn có th cài t DB2 Express-C trên
mt máy  bàn hoc máy xách tay  th nghim kh nng pureXML d* dàng. Mc dù không có phiên
bn thng mi ca eXist, Mark Logic là la chn thay th xng áng cho eXist khi mà các yêu cu hiu
sut và tính m rng vt quá kh nng ca eXist. Bn có th dùng th Mark Logic b(ng cách s dng
giy phép dùng th 30 ngày hoc mt phiên bn cng ng mà b" gii hn lu tr  mc 100MB.
Tôi có th tng tng thy nhu cu v so sánh sn ph%m gia các sn ph%m tng t nh là DB2 và
Orcale. Bn có th tìm thy mt s tranh lun trc ây trên mng v hai sn ph%m này. Mt tho lun c
bn hn là so sánh các tính nng ca pureXML trong DB2 Express-C và trong eXist-DB. Hoc, mt cách
tng t, so sánh DB2 vi Mark Logic.


Page 2 of 6So sánh các phng pháp tip cn c s d liu XML

C s d liu XML nguyên gc

Ging nh hu ht các tên phân loi sn ph%m, thut ng c s d liu XML nguyên gc gây hiu nhm
ôi chút. Nó làm cho bn th,c m,c kiu nh: C s d liu là gì? XML nguyên gc là gì? DB2 có phi là
NXD không?
Theo Wikipedia, "mt c s d liu máy tính là mt tp hp có cu trúc các bn ghi hoc d liu c lu
tr trong mt h thng máy tính." XML nguyên gc là cách dùng ca các công ngh liên quan n XML
mà không pha tp vi các công ngh phi XML. Tc là kh nng s dng XQuery và XPath không có mt
chút SQL nào. IBM d oán trc câu hi có phi DB2 là XML nguyên gc không b(ng cách gi các c

tính ca nó là pureXML. Tôi s+ quay tr li "nh ngh-a ó trong phn sau.
Khi so sánh các NXD vi RDBMS có h tr XML, tôi ngh- r(ng mt NXD in hình c ng có th c
phân loi nh là mt kho cha tài liu. Thut ng kho cha tài liu c s dng bi các sn ph%m nh
Alfresco và Magnolia. Các sn ph%m này c xp lp trên c các c s d liu hin có, và chúng thiu c
s h tng c cung cp bi eXist và Mark Logic — áng chú ý nht là kh nng chy các XQuery mt
cách có hiu qu. Chúng tp trung vào các chc nng bc cao nh là lung làm vic (workflow) và giao
din ng$i dùng thân thin. Các NXD dành nhng th ó cho các ng$i dùng các sn ph%m ca mình.
Chúng ch! cung cp các hàm API cha tài liu bc thp, nh là Web-based Distributed Authoring and
Versioning (WebDAV) hoc các kt ni RESTful tùy bin.
Nh vy mt NXD in hình lu tr các tài liu XML mt cách hiu qu. Nó cung cp công ngh XQuery
và mt lp mng các chc nng kho d liu.
Các NXD d$ng nh nh,m ti tài nguyên theo nh hng, ngh-a là các m%u ni dung riêng c lu tr
trong kho cha có th c xác "nh b(ng cách s dng các "nh danh tài nguyên ng b (Uniform
Resource Identifier - URI). S dng HTTP hoc WebDAV, các URI tng t cho phép truy cp ti d liu
cái mà làm cho tính kt ni tr thành không vn .
Coi d liu nh là các tài nguyên n l' c ng có các yu im ca nó. S chia tách tài liu làm cho vic
to quan h gia các d liu mà b" chia nh kh,p các a liu tr nên khó khn. Nu mt tài liu cha các
d liu c quyn mà các tài liu khác tham chiu n, thì vic duy trì tính tích hp tham chiu càng khó
khn hn. Các nhà sn xut c s d liu XML ln cung cp các la chn  t các ràng buc trên các d
liu trong các a tài liu. Tuy nhiên, iu này cha c tiêu chu%n hóa nh các công ngh XML khác.



pureXML

IBM la chn  tránh thut ng c s d liu XML nguyên gc (native) nhng v#n mun truyn ti bn
cht nguyên gc ca XML ca gii pháp ca h. DB2 Express-C là mt in hình cho NXD, nhng nó li
chia s' mt s c tính. T) mt góc , DB2 d$ng nh ging mt RDBMS vi các ct XML. Nu bn
mun s dng các tính nng, )ng nhm l#n s tinh vi ca các ct XML vi s thiu kh nng XML.
Tên pureXML c chính thng hóa theo hai cách:


D liu XML c lu tr trong "nh dng cây nguyên bn, tách bit khi d liu quan h.
 Bn c phép truy cp tt c d liu — c quan h và XML — thông qua mt giao din XML n
nht.
XQuery 1.0 không b" gii hn bi vic truy vn các tài liu XML. IBM cung cp các hàm XQuery mà cho
phép bn truy vn d liu quan h và trn và i sánh các kt qu vi XML t) các ct XML. Kt ca ca
d liu kt hp có th c tr li trong "nh dng XML.
DB2 là nn tng c s d liu nguyên bn. Nó không cung cp mt lp mng các chc nng cha tài liu
mà rt nhiu NXD khác cung cp. &iu ó không có ngh-a là bn không th s dng DB2  thc hin
cha tài liu — cho dù mng hay dày. Hin nay, hu ht các kho cha tài liu nh là Alfresco c cài 
t
trên các RDBMS không h tr XML hn là các NXD. S dng DB2 nh là c s cho nhng kho cha này
ít nht c ng cho kt qu tng t, nhng, hn th na, vi li ích c thêm vào ca các mô hình d liu
Page 3 of 6So sánh các phng pháp tip cn c s d liu XML
mm d'o hn s dng kh nng lu tr XML.
Nó có th là th$i im trc khi các sn ph%m nh là Alfresco có c các tính nng ch.ng hn nh là
pureXML. Lý do là nhng sn ph%m ó không mun b" trói buc vào mt sn ph%m c s d liu riêng
bit nào. Bt chp XQuery 1.0, cách mà ngôn ng XQuery c s dng trong các sn ph%m c s d liu
v#n thiu s tiêu chu%n hóa. Vi nhng sn ph%m này, cách an toàn là ch$ i các kh nng mi ca các
c s d liu XML, ch$ i ng dng ng nht hn ca XQuery và các giao thc kt ni, và bây gi$, t
gii hn bn thân chúng n các tiêu chu%n vi các cài t ng nht ging nh WebDAV hoc các b kt
ni c s d liu quan h.



Bn có th s dng các kh nng ca DB2  âu?

Câu tr l$i tng i n gin. &a s các gii pháp IT trên th gii ã nghiên cu chi tit các c s d liu
quan h. Thm chí khi các c s d liu quan h thiu tính mm d'o c yêu cu cho mt gii pháp,
chúng v#n phát trin hn và phù hp hn cho các nhu cu ln so vi các thay th khác.

Các công ty mun trin khai bc tip theo và áp dng các công ngh XML không mun b i các kt qu
ã c phát trin trong nhiu nm và thay th chúng vi mt NXD. Và, mc dù h có l+ s dng NXD
thêm vào c s d liu quan h ca h, iu này có th to ra các thách thc mi trong vic tích hp các
d liu b" chia nh kh,p các a ngun. Hãy ngh- n tính toàn v/n tham chiu và qun lý giao tác. Mc dù
là không th gii quyt c, nhng mt gii pháp tích hp n l' mà quan tâm n nhng iu này v#n
có nhiu u im.
S kt hp ca d liu quan h và d liu XML trong pureXML giúp cung cp s chuyn v" suôn s', hoc
gn nh th, s chuyn v" t)ng phn sang công ngh XML.



Kt lun

Mc dù các tài liu XML có th mô t d liu có cu trúc, mt NXD cha nhiu tài liu XML có l+ không
phi là gii pháp ti u  mô t các quan h gia d liu có cu trúc b" chia nh thành nhiu tài liu và
duy trì tính toàn v/n tham chiu. Nu nó ã có th qun lý nhng mi quan h ó (có l+ s dng
XPointer), thì vic s dng v#n cha c chu%n hóa.
L$i khuyên tt nht là s dng úng công c cho úng công vic. Tuy nhiên, s song hành ca mt NXD
vi mt RDBMS to ra thách thc cho bo toàn d liu. Các c tính ca pureXML ca DB2 kt hp
nhng cái tt nht ca hai bên và cho phép lu tr c d liu có cu trúc và d liu bán cu trúc. &i vi
lu tr d liu không có cu trúc, c NXD và RDBMS u thích hp.
Nu bn thc s tìm kim mt kho cha tài liu hn là mt c s d liu, bn nên hi mt câu hi khác.
Các yêu cu ca bn tp trung vào kh nng mt trc (front-end) ca kho cha tài liu hay chúng tp
trung vào mt sau (back-end)? Nu bn mun nhiu chc nng cho ng$i dùng cui nh là mt giao din
qun tr", dòng làm vic, và trc quan hóa, thì rt nhiu sn ph%m trên th" tr$ng, nh là Alfresco, cung cp
kiu h tr này. Nu bn quan tâm n các c ch truy vn mnh m+, nh là XQuery và tìm kim vn bn
y , và lu tr hiu qu các tài liu bán cu trúc, thì các NXD nh là eXist hoc Mark Logic có l+ là
la chn ca bn.
Th gii ca các gii pháp c s d liu b" chi phi bi mt s ít các nhà cung cp ln. IBM là mt trong
s ó. Các NXD v#n là mt th" tr$ng nh. Các câu hi th$ng là liu nhng ng$i chi nh bé có th

sng sót qua s cnh tranh hay không, hay liu h s+ b" mua bi các tp oàn ln hn (nh là X-Hive b"
mua bi EMC), hoc liu h s+ mt th" phn cho các gii pháp lai. Mt iu rõ ràng, các nhà cung cp
RDBMS, s+ không b(ng lòng t) b th" phn cho NXD, cung cp các gii pháp XML tích hp  tiêu
chu%n xut xng nhng c tích hp tt ca chính mình  áp ng nhu cu ca các khách hàng.


Page 4 of 6So sánh các phng pháp tip cn c s d liu XML
IBM, IBM logo, ibm.com, DB2, developerWorks, Lotus, Rational, Tivoli, và WebSphere là thng hiu ca
tp oàn International Business Machines Corporation  M và các nc khác. Nhng thng hiu này và các
thut ng thng hiu ca IBM c xác lp khi chúng xut hin ln u tiên vi các ký hiu tng ng (®
hoc ™), xác "nh ã c ng ký  M hay lut thng hiu chung s hu bi IBM ti th$i im thông tin
c phát hành. Nhng thng hiu ó c ng có th c ng ký hoc là thng hiu ca lut chung  các
nc khác. Danh sách hin ti ca các thng hiu ca IBM có 

Biu trng Adobe, the Adobe logo, PostScript, và PostScript là các thng hiu ã c ng ký ca Adobe
Tài nguyên

Hc tp

 XQuery 1.0: Tìm hiu v tiêu chu%n truy vn XML mnh m+ c s dng trong tt c các c s d
liu XML.

 Th vin k thut XML: Truy cp developerWorks XML Zone  xem các bài vit, các th thut,
các hng d#n, các tiêu chu%n và IBM Redbooks.


Web qung bá và các s kin k thut ca developerWorks: Cp nht thông tin công ngh vi các
phn này.

 developerWorks podcasts: Nghe các tho lun và phng vn dành cho các nhà phát trin phn mm.


 Kho sách công ngh: Tìm các sách v công ngh  ây.


Ly sn phm và công ngh

 DB2 pureXML: Tìm hiu v các kh nng ca nn tng DB2 y  bao gm các kh nng
pureXML.

 DB2 Express-C vi pureXML: Dùng th công ngh pureXML b(ng cách s dng phiên bn cng
ng mi*n phí.

 eXist-DB: Ti NXD mã m mà t)ng bc tham gia cnh tranh vi MySQL.


Mark Logic: Khi các yêu cu ca bn v hiu sut và tính kh m vt quá kh nng ca eXist,
Mark Logic là la chn phù hp.


Tho lun

 Di*n àn tho lun XML: Tham gia vào các tho lun liên quan n XML.

 developerWorks blogs: Xem xét nhng blogs này và tham gia vào cng ng developerWorks.


ôi nét v tác gi









Adriaan de Jonge là chuyên gia phát trin phn mm hin ang làm vic cho chính ph Hà Lan, x lý mt
vài d án vi các vai trò khác nhau. Adriaan ã vit các bài vit liên quan n XML cho developerWorks
ca IBM và Amazon
Page 5 of 6So sánh các phng pháp tip cn c s d liu XML

×