Hãy ngh- n tính toàn v/n tham chi u và qu n lý giao tác... 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 Redbo
Trang 1
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ô
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
Trang 2tê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
Trang 3C 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
Trang 4m 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
Trang 5IBM, 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
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
Trang 6Systems Incorporated M và các n c khác Microsoft, Windows, và bi u tr ng Windows là th ng hi u
c a Microsoft Corporation M và các n c khác Tên các d"ch v , s n ph%m, công ty, có th' là th ng hi u
ho c d"ch v ã ng ký Tên c a công ty, s n ph%m hay d"ch v có th là nhãn hi u ng ký ho c nhãn hi u d"ch v c a ng $i khác