So sánh các phng pháp tip cn c s d liu
XML
Mc : Trung bình
Adriaan de Jonge, K s phn mm, Freelance
17 07 2009
Nhu cu s dng XML ngày càng tng òi hi các h thng mà lu tr d liu bán cu trúc
mà không cn phi ép nó vào các cu trúc d liu không phù hp. Các yêu cu này u c
áp ng bi c c s d liu XML nguyên gc và c s d liu quan h h tr XML. Câu
hi t ra là: Ti sao bn thích mt c s d liu XML nguyên gc hn mt c s d liu c
in vi h tr XML hoc các cách khác? Bài vit này so sánh các phng pháp tip cn cho
mt s các gii pháp khác nhau, bao gm eXist, Mark Logic, và IBM® DB2® Express-C. S
khác bit ca các kiu c s d liu c so sánh gia nhng thun li và khó khn ca
chúng.
Trong nhng nm u tiên ca c s d liu XML, s khác bit gia cái c gi là c s d liu XML
nguyên gc (native XML database-NXD) và các h thng qun lý c s d liu quan h có h tr XML
(relational database management systems - RDBMS) là rt ln. Các NXD c ti u hóa lu tr các
tài liu XML. Các bn RDBMS c ch! thêm mt s gia v" vào các i tng nh" phân ln (binary large
object - BLOB) cha XML.
Ngày nay, các NXD v#n là NXD nhng c ci tin rt
nhiu. Cùng th$i im, các nhà cung cp RDBMS ã có
th$i gian ui k"p khi chúng có th lu tr các tài liu
XML. Các phn XML không còn c lu tr trong các
BLOBs. Thay vì nh vy, chúng c lu tr trong các
cu trúc cây (tree-like structure), c ti u hóa cha
các tài liu có cu trúc cây, bn cht t nhiên ca mt tài
liu XML chu%n.
Trong th$i gian gia các cài t ban u và các gii pháp ngày nay, mt s s phát trin nn tng ã c
thêm vào s chu%n hóa ca các ngôn ng truy vn trên các tài liu XML — áng chú ý nht, XQuery 1.0,
vi h tr cho Ngôn ng &$ng d#n XML (XML Path Language - XPath) 2.0. Khái nim ca XQuery
c phát trin trong nhiu nm; kt qu cui cùng có s tng ng vi các phiên bn trc ó nhng
hoàn thin hn. Ging nh Ngôn ng Truy vn Có cu trúc (Structured Query Language - SQL), XQuery
%y mnh s c lp ca nhà cung cp và tái s dng.
Ti sao bn cn c s d liu XML?
Các c s d liu th$ng có th lu tr c tài liu không cu trúc và có cu trúc. C hai u yêu cu các
cu trúc d liu mà không th$ng xuyên thay i. Tuy nhiên, im yu ca các c s d liu quan h là
vic lu tr các tài liu bán cu trúc. Không nh các d liu có cu trúc, các tài liu bán cu trúc này có
th có rt nhiu bc t do trong trt t ca các thành phn trong tài liu và cách nhng thành phn ó c
lng vào nhau. Không nh các tài liu không có cu trúc, các thành phn riêng l' có th c phân loi
b(ng cách s dng các nhãn mô t.
Bn có th lu tr d liu bán cu trúc trong các cu trúc quan h không? Tt nhiên là bn có th, nhng
bn có th kt thúc b(ng mt cu trúc d liu c th mà th$ng xuyên thay i, mt cu trúc d liu tng
quát hóa mà làm mt mô t ca các nhãn hoc mt mô hình tr)u tng nh là nhng th mà các h thng
qun lý ni dung s dng, trn d liu vi nhng th mà áng ra là siêu d liu (metadata).
Mt khác, "nh dng XML phù hp vi vic mô t d liu bán cu trúc. Thêm na, bn có th duy trì mô
hình d liu mt cách d* dàng. Thêm các tên ca thành phn không làm thay i cu trúc d liu — nó
luôn gi cu trúc cây. Nó ch! liên quan n mt s thay i trong lc XML mô t cách thc mà các
Các thut ng hay dùng
API: Giao din lp trình ng dng
HTTP: Giao thc truyn siêu vn
bn
IT: Công ngh thông tin
XML: Ngôn ng ánh du m rng
Page 1 of 6So sánh các phng pháp tip cn c s d liu XML
tên ca phn t c s dng và liên kt bên trong cu trúc cây.
Vi các tài liu nh là các h s xin vic, các mô t sn ph%m, và các n hàng ca khách hàng, XML có
l+ là "nh dng phù hp. &ng th$i, XML có kh nng mô t c d liu có cu trúc và d liu không có
cu trúc.
Th thì, bn có cn các c s d liu quan h na
không?
Khi bn to mt gii pháp phn mm mi, câu tr l$i có th là "Không!". Nu bn có mt gii pháp mà
cho phép bn lu tr d liu bán cu trúc, bn c ng có th s dng nó lu tr d liu có cu trúc và
không có cu trúc. Vic có tt c d liu ca bn trong mt gii pháp lu tr n l' vi kh nng tng kt
và to ra các truy vn mà bao trùm mi th trong mt ln thì d* hn rt nhiu so vi d liu tích hp t)
nhiu ngun lu tr khác nhau.
Tt hn, nu tr l$i "không" vi câu hi này, bn nên phn ln d liu ca mình dng kiu tài liu
bán cu trúc. Tuy nhiên, nu a phn d liu ca bn phù hp vi mô hình quan h có cu trúc cht ch+ và
ít ging vi kiu tài liu và qun cht vi nhau, thì vic chn mt NXD có l+ không giúp ích gì cho tr$ng
hp ca bn.
Vy thì làm th nào xác "nh bn cht d liu ca bn? Và bn s+ phi làm gì nu khi lng d liu có
cu trúc, bán cu trúc và không cu trúc là tng ng? Trong tr$ng hp bt "nh nh vy, tin tt lành
là các c s d liu c in là la chn phù hp cha các tài liu XML hoc các phân mnh ca các tài
liu XML vào th$i im hin ti. Các cách thc truy cp nhng phân mnh XML này có l+ khác nhau
gia các c s d liu. Mt iu mà các bn cài t ca các c s d liu cùng có là chúng s dng bn
XQuery 1.0.
Các gii pháp
Mt s sn ph%m trên th" tr$ng cài t mt c s d liu XML mt chiu hoc mt c s d liu khác,
bao gm Xindice, Tamino, X-Hive, Oracle, và Microsoft® SQL Server. Tuy nhiên, tôi s+ không khung
làm vic lun v nhng sn ph%m này trong bài vit này. Mt bn so sánh sn ph%m dài và y là không
kh thi, và nó có th không áng tin khi mà bài vit này c công b trên trang ca mt nhà cung cp mt
gii pháp c s d liu XML. Các tác gi c lp c ng không gii quyt hoàn toàn các câu hi mt cách
khách quan.
Nhng gì tôi có th làm là tho lun v IBM DB2 Express-C vi các tính nng pureXML và so sánh nó
vi các tip cn ca các NXD c in. Vi so sánh này, tôi ã chn mt d án mã m tên là eXist-DB. C
eXist-DB và DB2 Express-C u mi*n phí và cung cp rt nhiu chc nng thân thin vi ng$i dùng.
Nu bn mun lu tr lng d liu cc ln, tôi khuyên bn mua mt phiên bn thng mi ca DB2.
&u tiên, DB2 có l+ nghe nh là mt cái gì ó rt nng n, nhng bn có th cài t DB2 Express-C trên
mt máy bàn hoc máy xách tay th nghim kh nng pureXML d* dàng. Mc dù không có phiên
bn thng mi ca eXist, Mark Logic là la chn thay th xng áng cho eXist khi mà các yêu cu hiu
sut và tính m rng vt quá kh nng ca eXist. Bn có th dùng th Mark Logic b(ng cách s dng
giy phép dùng th 30 ngày hoc mt phiên bn cng ng mà b" gii hn lu tr mc 100MB.
Tôi có th tng tng thy nhu cu v so sánh sn ph%m gia các sn ph%m tng t nh là DB2 và
Orcale. Bn có th tìm thy mt s tranh lun trc ây trên mng v hai sn ph%m này. Mt tho lun c
bn hn là so sánh các tính nng ca pureXML trong DB2 Express-C và trong eXist-DB. Hoc, mt cách
tng t, so sánh DB2 vi Mark Logic.
Page 2 of 6So sánh các phng pháp tip cn c s d liu XML
C s d liu XML nguyên gc
Ging nh hu ht các tên phân loi sn ph%m, thut ng c s d liu XML nguyên gc gây hiu nhm
ôi chút. Nó làm cho bn th,c m,c kiu nh: C s d liu là gì? XML nguyên gc là gì? DB2 có phi là
NXD không?
Theo Wikipedia, "mt c s d liu máy tính là mt tp hp có cu trúc các bn ghi hoc d liu c lu
tr trong mt h thng máy tính." XML nguyên gc là cách dùng ca các công ngh liên quan n XML
mà không pha tp vi các công ngh phi XML. Tc là kh nng s dng XQuery và XPath không có mt
chút SQL nào. IBM d oán trc câu hi có phi DB2 là XML nguyên gc không b(ng cách gi các c
tính ca nó là pureXML. Tôi s+ quay tr li "nh ngh-a ó trong phn sau.
Khi so sánh các NXD vi RDBMS có h tr XML, tôi ngh- r(ng mt NXD in hình c ng có th c
phân loi nh là mt kho cha tài liu. Thut ng kho cha tài liu c s dng bi các sn ph%m nh
Alfresco và Magnolia. Các sn ph%m này c xp lp trên c các c s d liu hin có, và chúng thiu c
s h tng c cung cp bi eXist và Mark Logic — áng chú ý nht là kh nng chy các XQuery mt
cách có hiu qu. Chúng tp trung vào các chc nng bc cao nh là lung làm vic (workflow) và giao
din ng$i dùng thân thin. Các NXD dành nhng th ó cho các ng$i dùng các sn ph%m ca mình.
Chúng ch! cung cp các hàm API cha tài liu bc thp, nh là Web-based Distributed Authoring and
Versioning (WebDAV) hoc các kt ni RESTful tùy bin.
Nh vy mt NXD in hình lu tr các tài liu XML mt cách hiu qu. Nó cung cp công ngh XQuery
và mt lp mng các chc nng kho d liu.
Các NXD d$ng nh nh,m ti tài nguyên theo nh hng, ngh-a là các m%u ni dung riêng c lu tr
trong kho cha có th c xác "nh b(ng cách s dng các "nh danh tài nguyên ng b (Uniform
Resource Identifier - URI). S dng HTTP hoc WebDAV, các URI tng t cho phép truy cp ti d liu
cái mà làm cho tính kt ni tr thành không vn .
Coi d liu nh là các tài nguyên n l' c ng có các yu im ca nó. S chia tách tài liu làm cho vic
to quan h gia các d liu mà b" chia nh kh,p các a liu tr nên khó khn. Nu mt tài liu cha các
d liu c quyn mà các tài liu khác tham chiu n, thì vic duy trì tính tích hp tham chiu càng khó
khn hn. Các nhà sn xut c s d liu XML ln cung cp các la chn t các ràng buc trên các d
liu trong các a tài liu. Tuy nhiên, iu này cha c tiêu chu%n hóa nh các công ngh XML khác.
pureXML
IBM la chn tránh thut ng c s d liu XML nguyên gc (native) nhng v#n mun truyn ti bn
cht nguyên gc ca XML ca gii pháp ca h. DB2 Express-C là mt in hình cho NXD, nhng nó li
chia s' mt s c tính. T) mt góc , DB2 d$ng nh ging mt RDBMS vi các ct XML. Nu bn
mun s dng các tính nng, )ng nhm l#n s tinh vi ca các ct XML vi s thiu kh nng XML.
Tên pureXML c chính thng hóa theo hai cách:
D liu XML c lu tr trong "nh dng cây nguyên bn, tách bit khi d liu quan h.
Bn c phép truy cp tt c d liu — c quan h và XML — thông qua mt giao din XML n
nht.
XQuery 1.0 không b" gii hn bi vic truy vn các tài liu XML. IBM cung cp các hàm XQuery mà cho
phép bn truy vn d liu quan h và trn và i sánh các kt qu vi XML t) các ct XML. Kt ca ca
d liu kt hp có th c tr li trong "nh dng XML.
DB2 là nn tng c s d liu nguyên bn. Nó không cung cp mt lp mng các chc nng cha tài liu
mà rt nhiu NXD khác cung cp. &iu ó không có ngh-a là bn không th s dng DB2 thc hin
cha tài liu — cho dù mng hay dày. Hin nay, hu ht các kho cha tài liu nh là Alfresco c cài
t
trên các RDBMS không h tr XML hn là các NXD. S dng DB2 nh là c s cho nhng kho cha này
ít nht c ng cho kt qu tng t, nhng, hn th na, vi li ích c thêm vào ca các mô hình d liu
Page 3 of 6So sánh các phng pháp tip cn c s d liu XML
mm d'o hn s dng kh nng lu tr XML.
Nó có th là th$i im trc khi các sn ph%m nh là Alfresco có c các tính nng ch.ng hn nh là
pureXML. Lý do là nhng sn ph%m ó không mun b" trói buc vào mt sn ph%m c s d liu riêng
bit nào. Bt chp XQuery 1.0, cách mà ngôn ng XQuery c s dng trong các sn ph%m c s d liu
v#n thiu s tiêu chu%n hóa. Vi nhng sn ph%m này, cách an toàn là ch$ i các kh nng mi ca các
c s d liu XML, ch$ i ng dng ng nht hn ca XQuery và các giao thc kt ni, và bây gi$, t
gii hn bn thân chúng n các tiêu chu%n vi các cài t ng nht ging nh WebDAV hoc các b kt
ni c s d liu quan h.
Bn có th s dng các kh nng ca DB2 âu?
Câu tr l$i tng i n gin. &a s các gii pháp IT trên th gii ã nghiên cu chi tit các c s d liu
quan h. Thm chí khi các c s d liu quan h thiu tính mm d'o c yêu cu cho mt gii pháp,
chúng v#n phát trin hn và phù hp hn cho các nhu cu ln so vi các thay th khác.
Các công ty mun trin khai bc tip theo và áp dng các công ngh XML không mun b i các kt qu
ã c phát trin trong nhiu nm và thay th chúng vi mt NXD. Và, mc dù h có l+ s dng NXD
thêm vào c s d liu quan h ca h, iu này có th to ra các thách thc mi trong vic tích hp các
d liu b" chia nh kh,p các a ngun. Hãy ngh- n tính toàn v/n tham chiu và qun lý giao tác. Mc dù
là không th gii quyt c, nhng mt gii pháp tích hp n l' mà quan tâm n nhng iu này v#n
có nhiu u im.
S kt hp ca d liu quan h và d liu XML trong pureXML giúp cung cp s chuyn v" suôn s', hoc
gn nh th, s chuyn v" t)ng phn sang công ngh XML.
Kt lun
Mc dù các tài liu XML có th mô t d liu có cu trúc, mt NXD cha nhiu tài liu XML có l+ không
phi là gii pháp ti u mô t các quan h gia d liu có cu trúc b" chia nh thành nhiu tài liu và
duy trì tính toàn v/n tham chiu. Nu nó ã có th qun lý nhng mi quan h ó (có l+ s dng
XPointer), thì vic s dng v#n cha c chu%n hóa.
L$i khuyên tt nht là s dng úng công c cho úng công vic. Tuy nhiên, s song hành ca mt NXD
vi mt RDBMS to ra thách thc cho bo toàn d liu. Các c tính ca pureXML ca DB2 kt hp
nhng cái tt nht ca hai bên và cho phép lu tr c d liu có cu trúc và d liu bán cu trúc. &i vi
lu tr d liu không có cu trúc, c NXD và RDBMS u thích hp.
Nu bn thc s tìm kim mt kho cha tài liu hn là mt c s d liu, bn nên hi mt câu hi khác.
Các yêu cu ca bn tp trung vào kh nng mt trc (front-end) ca kho cha tài liu hay chúng tp
trung vào mt sau (back-end)? Nu bn mun nhiu chc nng cho ng$i dùng cui nh là mt giao din
qun tr", dòng làm vic, và trc quan hóa, thì rt nhiu sn ph%m trên th" tr$ng, nh là Alfresco, cung cp
kiu h tr này. Nu bn quan tâm n các c ch truy vn mnh m+, nh là XQuery và tìm kim vn bn
y , và lu tr hiu qu các tài liu bán cu trúc, thì các NXD nh là eXist hoc Mark Logic có l+ là
la chn ca bn.
Th gii ca các gii pháp c s d liu b" chi phi bi mt s ít các nhà cung cp ln. IBM là mt trong
s ó. Các NXD v#n là mt th" tr$ng nh. Các câu hi th$ng là liu nhng ng$i chi nh bé có th
sng sót qua s cnh tranh hay không, hay liu h s+ b" mua bi các tp oàn ln hn (nh là X-Hive b"
mua bi EMC), hoc liu h s+ mt th" phn cho các gii pháp lai. Mt iu rõ ràng, các nhà cung cp
RDBMS, s+ không b(ng lòng t) b th" phn cho NXD, cung cp các gii pháp XML tích hp tiêu
chu%n xut xng nhng c tích hp tt ca chính mình áp ng nhu cu ca các khách hàng.
Page 4 of 6So sánh các phng pháp tip cn c s d liu XML
IBM, IBM logo, ibm.com, DB2, developerWorks, Lotus, Rational, Tivoli, và WebSphere là thng hiu ca
tp oàn International Business Machines Corporation M và các nc khác. Nhng thng hiu này và các
thut ng thng hiu ca IBM c xác lp khi chúng xut hin ln u tiên vi các ký hiu tng ng (®
hoc ™), xác "nh ã c ng ký M hay lut thng hiu chung s hu bi IBM ti th$i im thông tin
c phát hành. Nhng thng hiu ó c ng có th c ng ký hoc là thng hiu ca lut chung các
nc khác. Danh sách hin ti ca các thng hiu ca IBM có
Biu trng Adobe, the Adobe logo, PostScript, và PostScript là các thng hiu ã c ng ký ca Adobe
Tài nguyên
Hc tp
XQuery 1.0: Tìm hiu v tiêu chu%n truy vn XML mnh m+ c s dng trong tt c các c s d
liu XML.
Th vin k thut XML: Truy cp developerWorks XML Zone xem các bài vit, các th thut,
các hng d#n, các tiêu chu%n và IBM Redbooks.
Web qung bá và các s kin k thut ca developerWorks: Cp nht thông tin công ngh vi các
phn này.
developerWorks podcasts: Nghe các tho lun và phng vn dành cho các nhà phát trin phn mm.
Kho sách công ngh: Tìm các sách v công ngh ây.
Ly sn phm và công ngh
DB2 pureXML: Tìm hiu v các kh nng ca nn tng DB2 y bao gm các kh nng
pureXML.
DB2 Express-C vi pureXML: Dùng th công ngh pureXML b(ng cách s dng phiên bn cng
ng mi*n phí.
eXist-DB: Ti NXD mã m mà t)ng bc tham gia cnh tranh vi MySQL.
Mark Logic: Khi các yêu cu ca bn v hiu sut và tính kh m vt quá kh nng ca eXist,
Mark Logic là la chn phù hp.
Tho lun
Di*n àn tho lun XML: Tham gia vào các tho lun liên quan n XML.
developerWorks blogs: Xem xét nhng blogs này và tham gia vào cng ng developerWorks.
ôi nét v tác gi
Adriaan de Jonge là chuyên gia phát trin phn mm hin ang làm vic cho chính ph Hà Lan, x lý mt
vài d án vi các vai trò khác nhau. Adriaan ã vit các bài vit liên quan n XML cho developerWorks
ca IBM và Amazon
Page 5 of 6So sánh các phng pháp tip cn c s d liu XML