Sosánhcá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 sosánhcá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 sosá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áctà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áctà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áctà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áctà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áctài liu bán cu trúc. Không nh các d liu có cu trúc, cáctà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áctà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ácCá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ánhcá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áctà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, XMLcó l+ là "nh dng phù hp. &ng th$i, XMLcó 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áctài liu XML hoc các phân mnh ca cáctà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 sosá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à sosánh nó vi các tip cn ca các NXD c in. Vi sosá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 sosá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à sosánhcác tính nng ca pureXML trong DB2 Express-C và trong eXist-DB. Hoc, mt cách tng t, sosánh DB2 vi Mark Logic. Page 2 of 6So sánhcá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 sosánhcá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áctà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áctà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áctà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áctà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ánhcá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ánhcá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áctài liu XMLcó th mô t d liu có cu trúc, mt NXD cha nhiu tài liu XMLcó 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áctà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ápXML 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ánhcá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ó http://www.ibm.com/legal/copytrade.shtml 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ánhcác phng pháp tip cn c s d liu XML Systems Incorporated M và các nc khác. Microsoft, Windows, và biu trng Windows là thng hiu ca Microsoft Corporation M và các nc khác. Tên các d"ch v, sn ph%m, công ty, có th' là thng hiu hoc d"ch v ã ng ký. Tên ca công ty, sn ph%m hay d"ch v có th là nhãn hiu ng ký hoc nhãn hiu d"ch v ca ng$i khác. Page 6 of 6So sánhcác phng pháp tip cn c s d liu XML . 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. 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