Tìm kiếm PhanVien.Com Web
Download PhanVien.Com Toolbar
Danh mục thông tin

Chuyển đổi XML thành dữ liệu quan hệ

Trong hướng dẫn này chúng tôi sẽ giới thiệu cho các bạn một số
phương pháp chuyển đổi các tài liệu XML thành các hàng trong các bảng
quan hệ, công việc vẫn được biết đến như việc băm nhỏ hay phân tách các
tài liệu XML.

Chuyển đổi XML thành dữ liệu quan hệ

Phương pháp chuyển đổi các tài liệu  XML thành các hàng trong các bảng dữ liệu  quan hệ hay được biết đến như việc shred (băm nhỏ) hay decompose (phân tách) các tài liệu  XML. Một trong những lý do  chính cho việc shred là các ứng dụng SQL đang tồn tại vẫn cần truy cập  vào dữ liệu  dưới định dạng  quan hệ. Cho ví dụ, các ứng dụng kế thừa, các ứng dụng doanh nghiệp  được đóng gói hoặc phần mềm báo cáo không phải lúc nào cũng làm việc  với XML. Chính vì vậy đôi khi bạn sẽ thấy khá hữu dụng trong việc băm nhỏ (shred) tất cả hoặc một số giá trị  dữ liệu  của một tài liệu  XML được chỉ định vào các cột và các hàng nằm trong các bảng dữ liệu  quan hệ.

Hướng dẫn này chúng tôi  sẽ giới thiệu  cho các bạn về:

  • Những ưu điểm và nhược điểm của việc băm nhỏ và các phương pháp băm nhỏ khác.
  • Cách băm nhỏ dữ liệu  XML thành các bảng quan hệ bằng lệnh INSERT có chứa hàm XMLTABLE.
  • Cách sử dụng các chú thích XML Schema để bản đồ  và băm nhỏ các tài liệu  XML thành các bảng quan hệ.

Ưu điểm và nhược điểm của việc băm nhỏ

Khái niệm của việc băm nhỏ được minh chứng trong hình 1. Trong ví dụ này, các tài liệu  XML có các thông tin  về customer name, address, và phone được bản đồ  hóa thành hai bảng quan hệ. Các tài liệu  có thể chứa nhiều thành phần phone vì mối quan hệ  giữa khách hàng  và số điện thoại  của họ là mối quan hệ  1-n. Do đó, các số điện thoại  sẽ được băm nhỏ vào một bảng riêng. Mỗi một thành phần lặp, chẳng hạn như phone, sẽ dẫn đến một bảng bổ sung trong giản đồ mục tiêu quan hệ. Giả dụ các thông tin  khách hàng  có thể chứa nhiều địa chỉ email, nhiều tài khoản, danh sách các đơn đặt hàng gần đây, nhiều sản phẩm  trong mỗi đơn hàng và các mục lặp lại khác. Khi đó số các bảng được yêu cầu trong giản đồ mục tiêu quan hệ có thể tăng rất nhanh. Tuy nhiên việc băm nhỏ XML thành một số lớn các bảng có thể dẫn đến sự phức tạp của các đối tượng logic doanh nghiệp  và làm cho sự phát triển ứng dụng trở nên khó khăn hay rất dễ gây lỗi. Việc truy vấn dữ liệu  đã được băm nhỏ hoặc việc lắp ráp lại (reassembling) các tài liệu  gốc có thể cần đến nhiều mối ghép (join) phức tạp.


Hình 1: Việc băm nhỏ (shred) một tài liệu  XML

Phụ thuộc vào sự phức tạp và khả năng thay đổi, mục đích của các tài liệu  XML, việc băm nhỏ (shred) có hoặc không thể là một tùy chọn bắt buộc. Bảng 1 tóm tắt các ưu điểm và nhược điểm của việc băm nhỏ (shred) dữ liệu  XML thành các bảng quan hệ.

Là lựa chọn thích hợp khi…

Là lựa chọn không thích hợp khi…

  • Dữ liệu XML được chỉ định đang cung cấp cho một cơ sở dữ liệu  quan hệ đang tồn tại.
  • Dữ liệu XML của bạn phức tạp, xếp chồng và khó cho việc bản đồ  hóa thành một giản đồ quan hệ.
  • Mục đích chính của bạn là cho phép các ứng dụng quan hệ đang tồn tại có thể truy cập  vào dữ liệu  XML
  • XML Schema của bạn hay thay đổi
  • Bạn ưng thuận với giản đồ quan hệ của mình và thích sử dụng nó nếu có thể.
  • Bạn thường cần xây dựng  lại các tài liệu  được băm nhỏ hoặc một phần trong chúng.
  • Định dạng XML của bạn tương đối ổn định và ít thay đổi.
  • Sử dụng dữ liệu  XML trong một cơ sở dữ liệu  với tốc độ cao cho ứng dụng của bạn.

 

 

Bảng 1. Khi việc băm nhỏ là hay không là một lựa chọn thích hợp

Trong nhiều kịch bản ứng dụng XML, cấu trúc và cách sử dụng dữ liệuXML không thích ứng với việc băm nhỏ. Nguyên nhân  xảy ra điều này là doDB2 hỗ trợ các cột XML có thể cho phép bạn đánh chỉ số và truy vấn dữliệu mà không cần đến quá trình chuyển đổi. Đôi khi bạn sẽ thấy các yêucầu ứng dụng của mình có thể đáp ứng tốt nhất với partial shredding hoặc hybrid XML storage. Ở đây:

  • Partial shredding có nghĩa rằng chỉmột tập nhỏ các thành phần hoặc các thuộc tính từ mỗi một tài liệu  XMLđi vào được băm nhỏ thành các bảng quan hệ. Điều này khá hữu dụng nếuứng dụng quan hệ không yêu cầu tất cả giá trị  dữ liệu  từ mỗi tài liệuXML. Trong các trường hợp, nơi việc băm nhỏ toàn bộ mỗi một tài liệudiễn ra khó khăn và yêu cầu một giản đồ quan hệ phức tạp, partial shredding có thể đơn giản hóa việc bản đồ  hóa sang giản đồ quan hệ một cách đáng kể.
  • Hybrid XML storagecó nghĩa trong lúc chèn một tài liệu  XML vào một cột XML, thành phầnđược chọn hoặc các giá trị  của thuộc tính được trích rút và thành phầndự trữ được lưu trong các cột quan hệ.

Nếu bạn muốn băm nhỏ các tài liệu  XML, toàn bộ hoặcmột phần, DB2 cung cấp cho bạn một tập các tính năng phong phú để thựchiện một số hoặc tất cả những vấn đề dưới đây:

  • Thực hiện các phép biến đổi giá trị  dữ liệu  trước khi chèn vào các cột quan hệ.
  • Băm nhỏ cùng một giá trị  thuộc tính hoặc thành phần vào nhiều cột của các bảng giống hay khác nhau.
  • Băm nhỏ nhiều thành phần khác hay thuộc tính khác nhau vào cùng một cột trong một bảng.
  • Chỉđịnh các điều kiện chi phối cho các thành phần nào đó được hay khôngđược băm nhỏ. Cho ví dụ, băm nhỏ địa chỉ của một tài liệu  khách hàngchỉ khi country là Canada.
  • Hợp lệ hóa các tài liệu  XML với một XML Schema trong suốt quá trình băm nhỏ.
  • Lưu tài liệu  XML đầy đủ cùng với dữ liệu  được băm.

DB2 9 cho z/OS và DB2 9.x cho Linux, UNIX, và Windows  hỗ trợ hai phương pháp băm nhỏ:

  • Các câu lệnh INSERT của SQL sử dụng hàm XMLTABLE. Hàm này sẽ điều hướng vào một tài liệu  đầu vào và sinh ra một hoặc nhiều hàng quan hệ dùng để chèn vào bảng quan hệ.
  • Phântách với một XML Schema được chú thích. Do XML Schema định nghĩa cấutrúc của các tài liệu  XML nên các chú thích có thể được bổ sung vàogiản đồ để định nghĩa cách các thành phần và thuộc tính được bản đồ  hóathành các bảng quan hệ như thế nào.

Bảng 2 và bảng 3 sẽ giới thiệu  về những ưu điểm và nhược điểm của phương pháp XMLTABLE và phương pháp giản đồ được chú thích.

Ưu điểm của phương pháp XMLTABLE

Nhược điểm của phương pháp XMLTABLE

  • Cho phép bạn băm nhỏ dữ liệu  thậm chí không có XML Schema.
  • Mỗi một bảng mục tiêu mà bạn muốn băm nhỏ vào, bạn phải cần đến một câu lệnh INSERT
  • Không yêu cầu bạn hiểu ngôn ngữ  XML Schema hoặc hiểu các chú thích của giản đồi cho việc phân tách.
  • Bạn có thể phải kết hợp nhiều câu lệnh INSERT trong một thủ tục được lưu.
  • Thường dễ sử dụng hơn các giản đồ có chú thích vì được dựa trên SQL và Xpath.
  • Bạncó thể sử dụng các hàm và các biểu thức quen thuộc của XPath, XQuery,hoặc SQL để trích rút và điều chỉnh các giá trị  dữ liệu.
  • Thường yêu cầu đến ít khối lượng công việc  trong quá trình phát triển XML Schema.
  • Quátrình băm nhỏ có thể cần đến dữ liệu  từ nhiều nguồn quan hệ và XML nếucần, chẳng hạn như các giá trị  từ các chuỗi DB2 hoặc dữ liệu  tra cứu từcác bảng quan hệ khác.
  • Có thể cung cấp hiệu suất  tốt hơn phương pháp phân tách giản đồ chú thích.
  • Không có hỗ trợ giao diện  người dùng  cho việc thực thi các câu lệnh INSERT và các hàm XMLTABLE cần thiết. Bạn cần phải biết về XPath và SQL/XML.

Bảng 2. Phương pháp XMLTABLE

Ưu điểm của phương pháp Nhược điểm của phương pháp
  • Việc bản đồ  hóa từ XML vào các bảng quan hệ có thể được định nghĩa bằng một GUI trong IBM  Data Studio Developer.
  • Không cho phép bạn băm nhỏ khi không có XML Schema.
  • Nếubạn băm nhỏ dữ liệu  XML phức tạp vào một số lượng  lớn các bảng, cần ítnỗ lực trong việc viết mã hơn so với phương pháp XMLTABLE
  • Bạn có thể phải tự copy  các chú thích khi bắt đầu sử dụng một phiên bản  mới của XML Schema.
  • Mặc dù có giao diện  hỗ trợ người dùng  nhưng bạn vẫn cần biết ngôn ngữ  XML Schema.
  • Việc chú thích một XML Schema có thể sẽ phức tạp nếu một giản đồ bản thân  nó là phức tạp.

Bảng 3: Phương pháp phân tách giản đồ chú thích

Băm nhỏ với hàm XMLTABLE

Hàm XMLTABLE là một hàm SQL sử dụng các biểu thức XQuery để tạo các hàng quan hệ từ một tài liệu  đầu vào XML. Trong phần này chúng tôi  sẽ miêu tả cho các bạn cách sử dụng hàm XMLTABLE trong câu lệnh để thực hiện việc băm nhỏ. Chúng ta sử dụng kịch bản băm nhỏ trong hình 1 làm ví dụ.

Bước đầu tiên chúng ta cần thực hiện là tạo một bảngquan hệ mục tiêu, nếu chưa có. Với kịch bản trong hình 1, các bảng mụctiêu được định nghĩa như bên dưới:

CREATE TABLE address(cid INTEGER, name VARCHAR(30),                     street VARCHAR(40), city VARCHAR(30))CREATE TABLE phones(cid INTEGER, phonetype VARCHAR(10),                    phonenum VARCHAR(20))

Dựa vào định nghĩa của các bảng mục tiêu bạn có thể xây dựng  các câu lệnh INSERT để băm nhỏ các tài liệu  XML gửi vào. Các câu lệnh INSERT phải có dạng INSERT INTO ... SELECT ... FROM ... XMLTABLE, như thể hiện trong hình 2. Mỗi một hàm XMLTABLE đều gồm có một bộ marker tham số ("?"), thông qua đó một ứng dụng có thể chuyển qua (pass) tài liệu  XML được băm nhỏ. Các rule SQL yêu cầu bộ marker tham số phải biến đổi thành kiểu dữ liệu  thích hợp. Mệnh đề SELECT sẽ chọn các cột được tạo ra bởi hàm XMLTABLE nhằm chèn vào các bảng address và phones một cách tương ứng.

INSERT INTO address(cid, name, street, city)   SELECT x.custid, x.custname, x.str, x.place   FROM XMLTABLE('$i/customerinfo' PASSING CAST(? AS XML) AS "i"         COLUMNS           custid    INTEGER     PATH '@Cid',           custname  VARCHAR(30) PATH 'name',           str       VARCHAR(40) PATH 'addr/street',           place     VARCHAR(30) PATH 'addr/city' ) AS x ;   INSERT INTO phones(cid, phonetype, phonenum)   SELECT x.custid, x.ptype, x.number   FROM XMLTABLE('$i/customerinfo/phone'                  PASSING CAST(? AS XML) AS "i"         COLUMNS           custid    INTEGER     PATH '../@Cid',           number    VARCHAR(15) PATH '.',           ptype     VARCHAR(10) PATH './@type') AS x ;

Hình 2: Chèn thành phần XML và các giá trị  của thuộc tính vào các cột quan hệ

Để cư trú hai bảng mục tiêu như được minh chứng trong hình 1, cả hai câu lệnh INSERT đềuphải được thực thi với cùng một tài liệu  XML đầu vào. Một phương phápđược thực hiện ở đây là ứng dụng phát cả hai câu lệnh trong một giaodịch (transaction) và đóng kết tài liệu  XML giống nhau vào cácbộ marker tham số cho cả hai câu lệnh. Phương pháp này làm việc  tốt tuynhiên có thể được tối ưu, vì tài liệu  XML giống nhau được gửi từ máykhách đến máy chủ  và được phân tách tại máy chủ  DB2 hai lần, mỗi lầncho một câu lệnh INSERT. Quá trình này có thể tránh bằng cách kết hợp cả hai câu lệnh INSERT trong một thủ tục lưu trữ. Ứng dụng chỉ tạo một cuộc gọi thủ tục lưu trữ  và pass tài liệu đầu vào một lần, và không quan tâm  đến số lượng  của các câu lệnh trong thủ tục lưu trữ.

Cách khác, các câu lệnh INSERT trong hình 2 có thể đọc một tập các tài liệu  đầu vào từ cột XML. Giả dụ các tài liệu  được load vào cột XML info trong bảng customer. Sau đó bạn cần thay đổi một dòng trong mỗi câu lệnh INSERT trong hình 2 để đọc tài liệu  đầu vào từ bảng customer:

FROM customer, XMLTABLE('$i/customerinfo' PASSING info AS "i"

Việc load các tài liệu  đầu vào vào bảng có thể khá thuận lợi nếu bạn phải băm nhỏ nhiều tài liệu. Tiện ích LOAD sẽhoàn trả song song  quá trình phân tách cú pháp XML, làm giảm được thờigian chuyển các tài liệu  vào cơ sở dữ liệu. Khi các tài liệu  được lưutrong một cột XML dưới định dạng  đã được phân tách, hàm XMLTABLE có thể băm nhỏ các tài liệu  mà không cần phân tách XML.

Câu lệnh INSERT có thể được làm phong phúhơn các hàm Xquery, SQL hoặc join để thích ứng quá trình băm nhỏ vớicác yêu cầu cụ thể. Hình 3 cung cấp cho các bạn một ví dụ. Mệnh đề SELECT gồm có hàm RTRIM có nhiệm vụ remove các chỗ trống phía sau khỏi cột x.ptype. Biểu thức tạo hàng của hàm XMLTABLE cóchứa thuộc tính dùng để ngăn chặn các số điện thoại  gia đình  bị băm nhỏvào bảng mục tiêu. Biểu thức tạo cột cho các số điện thoại  sử dụng hàm XQuery normalize-space,dùng để tách phần không gian trắng ở đầu và đuôi và thay thế mỗi mộtchuỗi bên trong của các ký tự trắng bằng một ký tự trống. Câu lệnh cũngthực hiện một hành động  join cho bảng tra cứu areacodes để số điện thoại  được chèn vào bảng phones chỉ khi mã vùng của nó được liệt trong bảng areacodes.

INSERT INTO phones(cid, phonetype, phonenum)   SELECT x.custid, RTRIM(x.ptype), x.number   FROM areacodes a,        XMLTABLE('$i/customerinfo/phone[@type != "home"]'                  PASSING CAST(? AS XML) AS "i"         COLUMNS           custid    INTEGER     PATH '../@Cid',           number    VARCHAR(15) PATH 'normalize-space(.)',           ptype     VARCHAR(10) PATH './@type') AS x   WHERE SUBSTR(x.number,1,3) = a.code;

Hình 3: Sử dụng các hàm và join để điều chỉnh quá trình băm

Hybrid XML Storage

Trong nhiều tình huống, sự phức tạp của cấu trúc tàiliệu XML có thể làm cho việc băm nhỏ trở nên khó khăn, không hiệu quảvà gây phiền phức. Bên cạnh sự bất lợi về mặt hiệu suất  của việc bămnhỏ, việc phân tán các giá trị  của tài liệu  XML trong một số lượng  lớncác bảng có thể làm cho chuyên gia  phát triển ứng dụng khó khăn trongviệc hiểu và truy vấn dữ liệu. Để cải thiện hiệu suất  chèn XML và giảmsố lượng bảng trong cơ sở dữ liệu, bạn có thể lưu các tài liệu  XML dướidạng Hybrid XML Storage. Phương pháp này sẽ trích rútcác giá trị  hoặc các thuộc tính của các thành phần XML được chọn và lưuchúng vào các cột quan hệ bên cạnh tài liệu  XML.

Ví dụ trong phần trước đã sử dụng hai bảng, address và phones, là các bảng mục tiêu cho việc băm nhỏ các tài liệu  khách hàng. Tuy nhiên bạn có thể chỉ sử dụng một bảng có chứa các giá trị  cid, name, và city của khách hàng  trong các cột quan hệ và tài liệu  XML đầy đủ với các thành phần lặp phone, còn các thông tin  khác trong một cột XML. Nếu vậy bạn có thể định nghĩa bảng như dưới đây:

CREATE TABLE hybrid(cid INTEGER NOT NULL PRIMARY KEY,                    name VARCHAR(30), city VARCHAR(25), info XML)

Hình 4 thể hiện câu lệnh INSERT để cư trú bảng này. Hàm XMLTABLE sử dụng tài liệu  XML như một dữ liệu  đầu vào thông qua một bộ marker tham số. Định nghĩa cột trong hàm XMLTABLE sẽ sinh 4 cột tương xứng với định nghĩa của bảng mục tiêu hybrid. Biểu thức tạo hàng trong hàm XMLTABLE $i sẽ tạo một tài liệu  đầu vào đầy đủ. Biểu thức này là đầu vào cho các biểu thức tạo cột trong mệnh đề COLUMNS của hàm XMLTABLE. Cá biệt, biểu thức cột '.' sẽ trả về tài liệu  đầu vào đầy đủ và tạo cột XML doc nhằm chèn vào cột info trong bảng mục tiêu.

INSERT INTO hybrid(cid, name, city, info)   SELECT x.custid, x.custname, x.city, x.doc   FROM XMLTABLE('$i' PASSING CAST(? AS XML) AS "i"         COLUMNS           custid   INTEGER     PATH 'customerinfo/@Cid',           custname VARCHAR(30) PATH 'customerinfo/name',           city     VARCHAR(25) PATH 'customerinfo/addr/city',           doc      XML         PATH '.' ) AS x;

Hình 4: Lưu một tài liệu  XML theo kiểu hybrid

Hiện tại bạn sẽ không thể định nghĩa các ràng buộc (constraint)trong BD2 để thực thi tính toàn vẹn giữa các cột và các giá trị  quan hệtrong một tài liệu  XML ở cùng một hàng. Mặc dù vậy bạn lại có thể địnhnghĩa các bẫy sự kiện (trigger) INSERT và UPDATE trên bảng để cư trú các cột quan hệ một cách tự động bất cứ khi nào một tài liệu  được chèn hoặc được cập nhật.

Việc test các câu lệnh INSERT trong DB2Command Line Processor (CLP) sẽ rất hữu dụng. Với mục đích này, bạn cóthể thay thế bộ marker tham số bằng một tài liệu  XML thông thường nhưthể hiện trong hình 5. Tài liệu  thường này là một chuỗi được phân biệtbằng dấu ngoặc đơn và được chuyển đổi thành kiểu dữ liệu  XML với hàm XMLPARSE.Một cách khác nữa là bạn có thể đọc tài liệu  đầu vào từ hệ thống  filebằng một trong các UDP, các UDP này được minh chứng trong hình 6.

INSERT INTO hybrid(cid, name, city, info)   SELECT x.custid, x.custname, x.city, x.doc   FROM XMLTABLE('$i' PASSING     XMLPARSE(document      '<customerinfo Cid="1001">         <name>Kathy Smith</name>         <addr country="Canada">           <street>25 EastCreek</street>           <city>Markham</city>           <prov-state>Ontario</prov-state>           <pcode-zip>N9C 3T6</pcode-zip>         </addr>         <phone type="work">905-555-7258</phone>       </customerinfo>') AS "i"         COLUMNS           custid   INTEGER     PATH 'customerinfo/@Cid',           custname VARCHAR(30) PATH 'customerinfo/name',           city     VARCHAR(25) PATH 'customerinfo/addr/city',           doc      XML         PATH '.' ) AS x;

Hình 5: Hybrid chèn câu lệnh bằng một tài liệu  XML thường

INSERT INTO hybrid(cid, name, city, info)   SELECT x.custid, x.custname, x.city, x.doc   FROM XMLTABLE('$i' PASSING     XMLPARSE(document       blobFromFile('/xml/mydata/cust0037.xml')) AS "i"         COLUMNS           custid   INTEGER     PATH 'customerinfo/@Cid',           custname VARCHAR(30) PATH 'customerinfo/name',           city     VARCHAR(25) PATH 'customerinfo/addr/city',           doc      XML         PATH '.' ) AS x;

Hình 6: Hybrid chèn câu lệnh bằng một "FromFile" UDF

Logic chèn trong hình 4 và 5 và hình 6 hoàn toàngiống nhau. Chỉ có một sự khác biệt  là cách tài liệu  đầu vào được cungcấp như thế nào: thông qua bộ marker tham số, như chuỗi thông thườngđược phân biệt bằng dấu ngoặc đơn hoặc thông qua một UDP đọc tài liệutừ hệ thống  file.

Các khung nhìn (View) quan hệ trên dữ liệu  XML

Bạn có thể tạo các khung nhìn quan hệ trên dữ liệu  XML bằng cách sử dụng các biểu thức XMLTABLE.Điều này cho phép bạn cung cấp các ứng dụng có khung nhìn quan hệ hoặchybrid đối với dữ liệu  XML mà không cần phải lưu dữ liệu  dưới định dạngquan hệ hoặc hybrid. Cách thức này rất hữu dụng nếu bạn muốn tránh sựphức tạp trong quá trình chuyển đổi một số lượng  lớn dữ liệu  XML thànhđịnh dạng quan hệ. Cấu trúc cơ bản SELECT ... FROM ... XMLTABLE được sử dụng trong câu lệnh INSERT ở phần trước cũng có thể được sử dụng trong các câu lệnh CREATE VIEW.

Lấy một ví dụ, giả dụ bạn muốn tạo một khung nhìn quan hệ cho các thành phần của các tài liệu  XML trong bảng customer để trưng bày ra các giá trị  định danh, tên, đường phố và thành phố  (identifier, name, street, và city) của khách hàng. Hình 7 thể hiện định nghĩa khung nhìn tương ứng cộng với một truy vấn SQL cho khung nhìn.

CREATE VIEW custview(id, name, street, city) AS   SELECT x.custid, x.custname, x.str, x.place   FROM customer,        XMLTABLE('$i/customerinfo' PASSING info AS "i"         COLUMNS           custid    INTEGER     PATH '@Cid',           custname  VARCHAR(30) PATH 'name',           str       VARCHAR(40) PATH 'addr/street',           place     VARCHAR(30) PATH 'addr/city' ) AS x;   SELECT id, name FROM custview WHERE city = 'Aurora';   ID          NAME ----------- ------------------------------        1003 Robert  Shoemaker     1 record(s) selected.

Hình 7: Việc tạo một khung nhìn cho dữ liệu  XML

Truy vấn trên khung nhìn trong hình 7 gồm một thuộc tính SQL cho cột city trong khung nhìn. Các giá trị  trong cột city đếntừ một thành phần XML trong cột XML ở dưới. Bạn có thể tăng tốc chotruy vấn này bằng cách tạo một XML index trên /customerinfo/addr/citycho cột info của bảng customer. DB2 9 cho z/OS và DB2 9.7 cho Linux, UNIX, và Windows  có thể chuyển đổi thuộc tính quan hệ city = 'Aurora' thành thuộc tính XML trong cột XML ở dưới để có thể sử dụng XML index.Tuy nhiên điều này không thể thực hiện trong DB2 9.1 và DB2 9.5 choLinux, UNIX, và Windows. Trong các phần trước của BD2, nhóm cột XMLtrong định nghĩa khung nhìn và ghi điều kiện tìm kiếm  như một thuộctính XML, xem trong truy vấn dưới đây. Nếu không sẽ không thể sử dụng XML index.

SELECT id, nameFROM custviewWHERE XMLEXISTS('$INFO/customerinfo/addr[city = "Aurora"]')

(Còn nữa)

Tìm bài viết khác
Theo QUANTRIMANG.COM
Updated: 21/08/2009 | Views: 29 | Comments: 0

Comments - Chuyển đổi XML thành dữ liệu quan hệ

Hiện tại chưa có bình luận nào về bài viết Chuyển đổi XML thành dữ liệu quan hệ!

Bạn có ý kiến gì về bài viết Chuyển đổi XML thành dữ liệu quan hệ này? Hãy gởi suy nghĩ, bình luận, đánh giá, lời khuyên ... của bạn về bài viết Chuyển đổi XML thành dữ liệu quan hệ bạn tại đây.

Other articles

Similar Articles Chuyển đổi XML thành dữ liệu quan hệ

Older than Chuyển đổi XML thành dữ liệu quan hệ in Cơ Sở Dữ Liệu

Newer than Chuyển đổi XML thành dữ liệu quan hệ in Cơ Sở Dữ Liệu

Recently Published - Cơ Sở Dữ Liệu
Day ao thuat
Latest Comments in Cơ Sở Dữ Liệu
By TuấnBQ. Bài viết này rất hay, và em cũng hy vọng sẽ có các bài tiếp theo về .....
Most Comments in Cơ Sở Dữ Liệu
Monthly Most Views - Cơ Sở Dữ Liệu
  English Tiếng Việt 
Bạn đang xem bài viết Chuyển đổi XML thành dữ liệu quan hệ được gởi trong chủ đề Cơ Sở Dữ Liệu - Công Nghệ Thông Tin. Bài viết Chuyển đổi XML thành dữ liệu quan hệ này được lưu trên Server thành hai bản: Chuyển đổi XML thành dữ liệu quan hệ có dấuChuyển đổi XML thành dữ liệu quan hệ không dấu. Bạn có thể gởi ý kiến bình luận, đóng góp về bài viết Chuyển đổi XML thành dữ liệu quan hệ này tại phần gởi bình luận ở cuối nội dung bài viết. Lưu ý nội dung của bài viết Chuyển đổi XML thành dữ liệu quan hệ này có thể không còn phù hợp với thời điểm hiện tại. Nếu phát hiện điều này, xin bạn báo cho BQT biết để gỡ bỏ nó.
Home Page | Privacy | Contact | Friend Links | Search | Sitemap | Up
Copyright © 2008 PhanVien.Com . All rights reserved.