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

Hãy khởi đầu nhanh chóng với DB2 9 pureXML, Phần 2: Tạo và điền một cơ sở dữ liệu XML của DB2 pptx

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 (267.98 KB, 25 trang )

Hãy khởi đầu nhanh chóng với DB2 9 pureXML, Phần 2: Tạo và điền một cơ
sở dữ liệu XML của DB2
Cynthia M. Saracco, Kiến trúc giải pháp cao cấp, IBM
Tóm tắt: DB2® V9 cho Linux®, UNIX® và Windows® của IBM® mô tả sự hỗ
trợ mới quan trọng để lưu trữ, quản lý và truy vấn dữ liệu XML, được gọi là
pureXML®. Bài viết này giúp bạn nhanh chóng nắm vững các tính năng XML
mới này thông qua một số bài viết từng bước một giải thích cách hoàn thành các
nhiệm vụ cơ bản. Trong bài viết này, hãy tìm hiểu cách tạo các đối tượng cơ sở dữ
liệu để quản lý dữ liệu XML của bạn và cách điền dữ liệu XML vào cơ sở dữ liệu
DB2 của bạn. [11.03.2010: Được viết lần đầu vào năm 2006, bài viết này luôn
được cập nhật để theo kịp với các thay đổi trong phiên bản 9.5 và 9.7 của DB2
Người hiệu đính.]
Bạn đã có thể nghe thấy tin đồn về phiên bản V9 của DB2 hệ thống quản lý cơ
sở dữ liệu đầu tiên của IBM có hỗ trợ cả hai cấu trúc dữ liệu (dựa vào-SQL) dạng
bảng và cấu trúc dữ liệu (dựa vào-XML) phân cấp. Nếu bạn muốn tìm hiểu về sự
hỗ trợ nguyên gốc mới của DB2 cho XML và muốn có khởi đầu nhanh chóng, thì
bạn đã đến đúng nơi rồi.
Để giúp bạn nhanh chóng tăng tốc độ dựa vào các tính năng XML của DB2, bài
viết này trình bày một số nhiệm vụ phổ biến, chẳng hạn như:
 Tạo các đối tượng cơ sở dữ liệu để quản lý dữ liệu XML, bao gồm một cơ
sở dữ liệu thử nghiệm, các bảng mẫu và các khung nhìn.
 Điền dữ liệu XML vào cơ sở dữ liệu bằng các câu lệnh INSERT và
IMPORT.
 Xác nhận hợp lệ dữ liệu XML của bạn. Phát triển và đăng ký các lược đồ
XML của bạn với DB2 và sử dụng tùy chọn XMLVALIDATE khi nhập
khẩu dữ liệu.
Các bài sắp tới sẽ trình bày các chủ đề khác, như là truy vấn, cập nhật và xoá dữ
liệu XML của DB2 bằng SQL, truy vấn dữ liệu XML của DB2 bằng XQuery và
phát triển các ứng dụng Java và các thành phần web truy cập dữ liệu XML của
DB2.
Tạo các đối tượng cơ sở dữ liệu


Để bắt đầu, hãy tạo một cơ sở dữ liệu Unicode duy nhất của DB2. (Với DB2 phiên
bản V9.1, cần có một cơ sở dữ liệu Unicode cho XML. DB2 phiên bản v9.5 và
mới hơn không cần có một cơ sở dữ liệu Unicode nữa). Sau đó, bạn sẽ tạo các đối
tượng trong cơ sở dữ liệu này để quản lý cả hai dữ liệu XML và các kiểu dữ liệu
khác.
Tạo một cơ sở dữ liệu thử nghiệm
Để tạo ra một cơ sở dữ liệu thử nghiệm Unicode mới của DB2, hãy mở một cửa sổ
lệnh DB2 và đưa ra một câu lệnh quy định một bộ mã Unicode và vùng được hỗ
trợ, như trong Liệt kê 1.

Liệt kê 1. Tạo một cơ sở dữ liệu để lưu trữ dữ liệu XML
create database test using codeset UTF-8 territory us

Một khi bạn tạo một cơ sở dữ liệu, bạn không cần phải phát hành bất kỳ các lệnh
đặc biệt nào hoặc thực hiện bất kỳ hoạt động thêm nào để cho phép DB2 lưu trữ
dữ liệu XML theo định dạng phân cấp nguyên gốc của nó. Hệ thống DB2 của bạn
đã sẵn sàng để chạy.
Tạo các bảng mẫu
Để lưu trữ dữ liệu XML, bạn tạo ra các bảng có chứa một hoặc nhiều cột XML.
Những bảng này dùng như là các thùng chứa logic cho các bộ sưu tập các tài liệu.
Sau hậu trường, DB2 thực sự sử dụng một lược đồ lưu trữ khác cho dữ liệu XML
và không-XML. Tuy nhiên, việc sử dụng các bảng như một đối tượng logic để
quản lý tất cả các dạng của dữ liệu được hỗ trợ làm đơn giản hóa các vấn đề phát
triển ứng dụng và quản trị, đặc biệt là khi cần tích hợp các dạng dữ liệu khác nhau
trong một truy vấn duy nhất.
Bạn có thể định nghĩa các bảng DB2 để chứa chỉ các cột XML, chỉ các cột theo
các kiểu SQL truyền thống hoặc kết hợp cả hai. Bài viết này mô hình hóa cái sau.
Ví dụ trong Liệt kê 2 kết nối đến cơ sở dữ liệu thử nghiệm và tạo ra hai bảng.
Bảng đầu tiên là một bảng Items (Các mặt hàng), theo dõi thông tin về các mặt
hàng để bán và các ý kiến mà khách hàng đã đóng góp về chúng. Bảng thứ hai

theo dõi thông tin về Clients (Các khách hàng), bao gồm dữ liệu liên hệ. Lưu ý
rằng Comments và Contactinfo (Thông tin liên hệ) được dựa vào kiểu dữ liệu
XML mới của DB2, trong khi tất cả các cột khác trong các bảng được dựa vào các
kiểu dữ liệu SQL truyền thống.

Liệt kê 2. Tạo các bảng cho dữ liệu XML
connect to test;

create table items (
id int primary key not null,
brandname varchar(30),
itemname varchar(30),
sku int,
srp decimal(7,2),
comments xml
);

create table clients(
id int primary key not null,
name varchar(50),
status varchar(10),
contactinfo xml
);

Nếu bạn nhìn kỹ vào các ví dụ định nghĩa bảng này, bạn sẽ nhận thấy rằng chẳng
có quy định cấu trúc bên trong của các tài liệu XML được lưu trữ trong cột
Comments cũng như trong cột Contactinfo. Đây là tính năng DB2 quan trọng.
Những người dùng không cần định nghĩa sẵn một cấu trúc dữ liệu XML (hoặc,
chính xác hơn, một lược đồ XML) để lưu trữ dữ liệu của họ. Thật vậy, DB2 có thể
lưu trữ bất kỳ tài liệu XML đúng định dạng nào trong một cột đơn, có nghĩa là các

tài liệu XML của các lược đồ khác nhau (hoặc các tài liệu không liên kết với bất
cứ lược đồ đã đăng ký nào) có thể được lưu trữ trong cùng một cột DB2. Bài viết
này bàn về tính năng này nhiều hơn khi thảo luận cách lưu trữ dữ liệu trong DB2.
Tùy chọn để lưu trữ nội tuyến (inline) các tài liệu XML nhỏ hơn đã được giới
thiệu trong phiên bản v9.5. Nếu các tài liệu XML đủ nhỏ để khớp với kích thước
trang, thì nó có thể được lưu trữ bằng các phần tử SQL khác. Nếu nó không đủ
nhỏ để khớp với một trang, thì nó sẽ được lưu trữ riêng biệt. Cùng với từ khoá nội
tuyến, bạn cung cấp kích thước tối đa của XML được nội tuyến. Giá trị này dựa
vào vào kích thước trang và kích thước của các cột quan hệ khác. Liệt kê 3 cho
thấy đoạn mã thực hiện điều này:

Liệt kê 3. Tạo các bảng cho dữ liệu XML bằng tùy chọn nội tuyến
connect to test;

create table items (
id int primary key not null,
brandname varchar(30),
itemname varchar(30),
sku int,
srp decimal(7,2),
comments xml inline length 10240
);

Tạo các khung nhìn
Theo tùy chọn, bạn có thể tạo ra các khung nhìn trên các bảng đang chứa dữ liệu
XML, cũng giống như bạn có thể tạo các khung nhìn trên các bảng chỉ đang chứa
các kiểu dữ liệu SQL truyền thống. Ví dụ trong Liệt kê 4 tạo một khung nhìn của
các khách hàng có một trạng thái Gold (Vàng):

Liệt kê 4. Tạo một khung nhìn chứa dữ liệu XML

create view goldview as
select id, name, contactinfo
from clients where status='Gold';

Lưu ý về các chỉ mục
Cuối cùng, lưu ý rằng bạn có thể tạo ra các chỉ mục chuyên dụng trên các cột
XML của bạn để tăng tốc các tìm kiếm dữ liệu của bạn. Vì đây là một bài viết giới
thiệu và dữ liệu ví dụ nhỏ, nên bài viết này sẽ không trình bày chủ đề đó. Tuy
nhiên, trong các môi trường sản xuất, việc định nghĩa các chỉ mục thích hợp có thể
rất quan trọng để đạt được hiệu năng tối ưu. Xem phần Tài nguyên để có trợ giúp
về cách tìm hiểu thêm về công nghệ lập chỉ mục mới của DB2.


Lưu trữ dữ liệu XML
Với các bảng đã tạo ra, bây giờ bạn có thể điền dữ liệu vào chúng. Ban hành trực
tiếp các câu lệnh SQL INSERT hoặc bằng cách gọi phương tiện IMPORT của
DB2, ban hành câu lệnh INSERT sau hậu trường. Với phiên bản v9.5 của DB2,
phương tiện LOAD cũng hỗ trợ dữ liệu XML.
Sử dụng các câu lệnh INSERT
Với INSERT, bạn cung cấp trực tiếp cho DB2 dữ liệu XML thô. Có lẽ đó là cách
làm dễ nhất khi bạn đã viết một ứng dụng và đã lưu trữ dữ liệu XML trong một
biến. Nhưng nếu bạn chỉ mới bắt đầu với DB2 và không cần viết một ứng dụng,
bạn có thể ban hành các câu lệnh INSERT tương tác. (Tôi thấy sử dụng Trình soạn
thảo lệnh (DB2 Command Editor) của DB2 là rất thuận tiện, mặc dù bạn cũng có
thể sử dụng bộ vi xử lý dòng lệnh, nếu bạn muốn).
Để sử dụng DB2 Command Editor, hãy khởi động DB2 Control Center (Trung
tâm điều khiển của DB2). Từ trình đơn thả xuống Tools (Các công cụ) ở trên đỉnh,
chọn Command Editor. Một cửa sổ riêng biệt xuất hiện, như trong Hình 1.

Hình 1. DB2 Command Editor


Gõ các câu lệnh sau vào ô bên trên:

Liệt kê 5. Chèn dữ liệu XML tương tác
connect to test;

insert into clients values (77, 'John Smith', 'Gold',
'<addr>111 Main St., Dallas, TX, 00112</addr>')

Nhấn vào mũi tên màu xanh lá cây ở bên trái để thực hiện lệnh.
Trong trường hợp này, tài liệu đầu vào khá đơn giản. Nếu tài liệu lớn hay phức
tạp, thì việc nhập dữ liệu XML vào câu lệnh INSERT như đã hiển thị là không
thực tế. Trong hầu hết các trường hợp, bạn muốn viết một ứng dụng để chèn dữ
liệu bằng một biến lưu trữ trên máy chủ hoặc một dấu tham số. Bạn sẽ thấy một ví
dụ mã hóa Java ngắn đi kèm theo bài viết này. Tuy nhiên, hướng dẫn giới thiệu
này không trình bày các chủ đề phát triển ứng dụng một cách chi tiết. Thay vào đó,
chúng ta sẽ bàn về tùy chọn khác để điền dữ liệu vào các cột XML của DB2 — khi
sử dụng phương tiện IMPORT.
Sử dụng phương tiện IMPORT của DB2
Nếu bạn đã có dữ liệu XML của mình trong các tệp, phương tiện IMPORT của
DB2 cung cấp một cách đơn giản để bạn điền dữ liệu này vào các bảng DB2 của
bạn. Bạn không cần viết một ứng dụng. Bạn chỉ cần tạo một tệp ASCII định giới
có chứa dữ liệu mà bạn muốn nạp vào bảng của mình. Đối với dữ liệu XML được
lưu trữ trong các tệp, có một tham số xác định các tên tệp thích hợp.
Bạn có thể tạo tệp ASCII định giới bằng cách sử dụng trình soạn thảo văn bản theo
lựa chọn của bạn. (Theo quy ước, các tệp như vậy thường là kiểu .del). Mỗi dòng
trong tệp của bạn biểu diễn một hàng dữ liệu được nhập khẩu vào bảng của bạn.
Nếu dòng của bạn có chứa một XML Data Specifier (XDS-Trình định rõ dữ liệu
XML), thì IMPORT sẽ đọc dữ liệu được chứa trong tệp XML tham chiếu và nhập
khẩu dữ liệu đó vào DB2. Ví dụ, dòng đầu tiên trong Liệt kê 6 có thông tin về Ella

Kimpton, bao gồm mã định danh ID, tên và trạng thái khách hàng của cô ta.
Thông tin liên hệ của cô ta có trong tệp Client3227.xml.

Liệt kê 6. Tệp clients.del
3227,Ella Kimpton,Gold,<XDS FIL='Client3227.xml' />
8877,Chris Bontempo,Gold,<XDS FIL='Client8877.xml' />
9077,Lisa Hansen,Silver,*lt;XDS FIL='Client9077.xml' />
9177,Rita Gomez,Standard,<XDS FIL='Client9177.xml' />
5681,Paula Lipenski,Standard,<XDS FIL='Client5681.xml' />
4309,Tina Wang,Standard,<XDS FIL='Client4309.xml' />

Nội dung của tệp Client3227.xml được hiển thị trong Liệt kê 7. Tệp này chứa các
phần tử XML với địa chỉ, số điện thoại, số fax và email của Ella Kimpton.

Liệt kê 7. Tệp Client3227.xml
<?xml version="1.0"?>
<Client
xmlns:xsi="
xsi:noNamespaceSchemaLocation="http://bogus">
<Address>
<street>5401 Julio Ave</street>
<city>San Jose</city>
<state>CA</state>
<zip>95116</zip>
</Address>
<phone>
<work>4084630000</work>
<home>4081111111</home>
<cell>4082222222</cell>
</phone>

<fax>4087776666</fax>
<email></email>
</Client>

Có lẽ bạn muốn tìm hiểu về việc nhập khẩu dữ liệu khi bạn không có các tệp XML
cho tất cả các hàng mà bạn muốn chèn. Thật dễ dàng để làm điều đó. Hãy bỏ qua
thông tin XDS khỏi tệp đầu vào của bạn. Ví dụ, tệp items.del trong Liệt kê 8 bỏ
qua tên của một tệp XML với Mặt hàng 3641 (bộ Áo đầm gây ấn tượng). Kết quả
là, cột XML ứng với hàng này sẽ không chứa bất kỳ dữ liệu nào.

Tệp items.del
3926,NatureTrail,Walking boot, 38112233,64.26,<XDS FIL='Comment3926.xml'
/>
4023,NatureTrail,Back pack,552238,34.99,<XDS FIL='Comment4023.xml' />
3641,Dress to Impress,Syutm7811421,149.99,
4272,Classy,Cocktail dress,981140,156.99,<XDS FIL='Comment4272.xml' />

Với các tệp XML và các tệp ASCII định giới có sẵn của mình, bây giờ bạn đã sẵn
sàng sử dụng phương tiện IMPORT của DB2. Câu lệnh trong Liệt kê 9 nhập khẩu
các nội dung được quy định trong tệp clients.del vào thư mục C:/XMLFILES
trong bảng clients.

Liệt kê 9. Nhập khẩu dữ liệu vào bảng clients
import from clients.del of del xml from C:/XMLFILES insert into user1.clients;

Tệp clients.del được chỉ ra trong Liệt kê 6 chứa dữ liệu cho sáu hàng, bao gồm các
tham chiếu đến sáu tệp XML. Việc thực hiện thành công một lệnh IMPORT dẫn
đến kết quả tương tự như Liệt kê 10.

Liệt kê 10. Kết quả mẫu của lệnh IMPORT của DB2

import from clients.del of del xml from C:/XMLFiles insert into saracco.clients
SQL3109N The utility is beginning to load data from file "clients.del".

SQL3110N The utility has completed processing. "6" rows were read from the
input file.

SQL3221W Begin COMMIT WORK. Input Record Count = "6".

SQL3222W COMMIT of any database changes was successful.

SQL3149N "6" rows were processed from the input file. "6" rows were
successfully inserted into the table. "0" rows were rejected.

Number of rows read = 6
Number of rows skipped = 0
Number of rows inserted = 6
Number of rows updated = 0
Number of rows rejected = 0
Number of rows committed = 6

Các nhà cung cấp phần mềm độc lập (ISV) cung cấp các công cụ giúp bạn chuyển
đổi các định dạng Microsoft® Word, Acrobat PDF và tài liệu khác thành XML để
nhập khẩu vào DB2. Xem phần Tài nguyên để biết thêm thông tin về các ISV.


Xác nhận hợp lệ dữ liệu XML của bạn
Các ví dụ INSERT và IMPORT vừa được bàn thảo có thể viết bất kỳ dữ liệu XML
đúng định dạng nào vào các bảng của bạn. Chúng không xác nhận hợp lệ dữ liệu
đó. Nói cách khác, chúng không kiểm tra xem dữ liệu có tuân theo một lược đồ
XML cụ thể không và do đó cũng không kiểm tra xem có tuân theo một cấu trúc

cụ thể không. Tuy nhiên, có khả năng chỉ thị cho DB2 làm điều đó. Dưới đây là
một cách tiếp cận:
Bước 1: Tạo một lược đồ XML
Để xác nhận hợp lệ dữ liệu XML, bạn cần định nghĩa một lược đồ XML, quy định
các phần tử XML có thể chấp nhận được, thứ tự của chúng và các kiểu dữ liệu và
v.v Các lược đồ XML là một tiêu chuẩn công nghiệp của W3C và được viết bằng
XML. Dù nó nằm ngoài phạm vi của bài viết này nên để giải thích các tính năng
của các lược đồ XML, hãy xem các hướng dẫn khác nhau có sẵn (trong phần Tài
nguyên).
Có nhiều cách để phát triển các lược đồ XML, trải rộng từ cách sử dụng trình soạn
thảo văn bản yêu thích của bạn để tạo thủ công lược đồ của bạn đến việc sử dụng
các công cụ để thiết kế đồ họa hoặc tạo một lược đồ. Các nhà cung cấp phần mềm
độc lập cung cấp các công cụ XML như vậy và IBM cũng mang đến sự hỗ trợ tạo
lược đồ XML thông qua các môi trường phát triển có tích hợp Java™.
Ví dụ, với IBM Rational® Application Developer (Nhà phát triển ứng dụng
Rational của IBM) hay IBM Rational Software Architect (Kiến trúc sư phần mềm
của IBM), bạn có thể nhập khẩu một tệp xml vào một dự án Web. Tệp xml được
dùng trong ví dụ này được lấy từ bảng khách hàng trong cơ sở dữ liệu mẫu của
DB2. Nhấn chuột phải vào dự án và chọn Generate > XML Schema. Việc này
tạo ra một lược đồ XML hợp lệ cho tệp đầu vào riêng của bạn, như trong Hình 2
(ảnh rộng hơn). Sau đó bạn có thể sửa đổi tệp (nếu cần) và đăng ký nó với DB2.

Hình 2. Sử dụng phần IBM Rational Software Architect để tạo ra một lược
đồ XML từ một tệp XML

Giả sử bạn cần tạo lược đồ XML khá linh hoạt của mình sao cho bạn có thể thu
thập các kiểu thông tin liên hệ với các khách hàng khác nhau. Ví dụ, một số khách
hàng có thể cung cấp cho bạn nhiều số điện thoại hoặc nhiều địa chỉ email, trong
khi những người khác lại không thể. Lược đồ XML được hiển thị trong Liệt kê
Liệt kê 11, được bắt nguồn từ các lược đồ do IBM Rational Software Architect đã

tạo ra, có tính đến sự linh hoạt này. Nó bao gồm các đặc tả bổ sung về số lượng
các sự kiện tối thiểu và tối đa (minOccurs và maxOccurs) dành cho một phần tử cụ
thể. Trong trường hợp này, người ta không yêu cầu khách hàng cung cấp cho bạn
bất kỳ thông tin liên hệ nào mà bạn muốn thu thập. Tuy nhiên, nếu khách hàng lựa
chọn cung cấp cho bạn thông tin email, thì lược đồ này cho phép các tài liệu tuân
thủ để chứa tối đa năm địa chỉ email (có nghĩa là, năm giá trị của phần tử email).

Liệt kê 11. Lược đồ XML mẫu cho thông tin liên hệ khách hàng
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmins:xsd="
<xsd:element name="address">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="street" minOccurs="0"/>
<xsd:element ref="apt" minOccurs="0"/>
<xsd:element ref="city" minOccurs="0"/>
<xsd:element ref="state" minOccurs="0"/>
<xsd:element ref="zip" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Client">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Address" minOccurs="0" maxOccurs="5"/>
<xsd:element ref="phone" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="fax" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="email" minOccurs="0" maxOccurs="5"/>
</xsd:sequence>
</xsd:complexType>

</xsd:element>
<xsd:element name="cell type="xsd:string"/>
<xsd:element name="city type="xsd:string"/>
<xsd:element name="email" type="xsd:string"/>
<xsd:element name="fax" type="xsd:string"/>
<xsd:element name="home" type="xsd:string"/>
<xsd:element name="phone">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="work" minOccurs="0"/>
<xsd:element ref="home" minOccurs="0"/>
<xsd:element ref="cell" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
. . .
</xsd:schema>

Các lược đồ XML cũng chứa thông tin định kiểu. Lược đồ được hiển thị trong Liệt
kê 11 quy định rằng tất cả các phần tử cơ bản được coi là các chuỗi ký tự. Tuy
nhiên, hầu hết các lược đồ XML sản xuất lại sử dụng các loại dữ liệu khác, chẳng
hạn như số nguyên, số thập phân, ngày tháng và v.v Nếu bạn xác nhận hợp lệ các
tài liệu XML dựa vào một lược đồ cụ thể như là một phần của phép toán INSERT
hay IMPORT của bạn, thì DB2 tự động thêm các chú thích định kiểu cho các tài
liệu XML của bạn.
Bước 2: Đăng ký lược đồ XML
Một khi bạn đã tạo ra một lược đồ XML thích hợp, bạn cần đăng ký lược đồ đó
với DB2. IBM cung cấp nhiều cách để làm điều này. Bạn có thể khởi chạy trình
thủ thuật đồ họa từ DB2 Control Center để hướng dẫn bạn thực hiện thông qua quá
trình này, gọi các thủ tục đã lưu do hệ thống cung cấp hoặc ban hành trực tiếp các

lệnh DB2. Đối với ví dụ này, hãy sử dụng phương pháp sau, vì nó có thể giúp bạn
dễ hiểu hơn những gì DB2 đang làm sau hậu trường thay cho bạn.
Nếu lược đồ của bạn rất lớn, bạn có thể cần phải tăng kích thước vùng lưu trữ đặc
biệt (heap) cho ứng dụng của mình trước khi cố gắng đăng ký nó. Ví dụ, hãy ban
hành các câu lệnh sau:

Liệt kê 12. Tăng kích thước vùng lưu trữ đặc biệt cho ứng dụng
connect to test;
update db cfg using applheapsz 10000;

Tiếp theo, hãy đăng ký lược đồ XML của bạn. Nếu lược đồ XML của bạn không
tham chiếu các lược đồ XML khác, bạn có thể đăng ký và hoàn thành quá trình
này bằng một lệnh đơn. Nếu không, bạn cần ban hành các lệnh riêng để đăng ký
lược đồ XML chính của bạn, thêm vào các lược đồ cần thiết khác và hoàn tất quá
trình đăng ký. Khi một tài liệu lược đồ trở nên rất lớn, thông thường cần chia nhỏ
nội dung của nó thành nhiều tệp để cải thiện việc bảo trì, tính dễ đọc và sử dụng
lại. Điều này na ná như ngắt một ứng dụng hoặc thành phần phức tạp thành nhiều
mô-đun. Để biết chi tiết về chủ đề này, hãy tham khảo Nhập môn về Lược đồ
XML của W3C.
Bài viết này sử dụng một lược đồ XML độc lập, đơn giản. Bạn có thể đăng ký nó
với DB2 bằng các lệnh sau đây:

Liệt kê 13. Đăng ký một lược đồ XML
register xmlschema '' from 'C:/XMLFiles/ClientInfo.xsd' as
user1.mysample complete;

Trong ví dụ này, ClientInfo.xsd là tên của tệp lược đồ XML. Nó nằm trong thư
mục C:/XMLFiles. Lược đồ XML này sẽ được đăng ký trong kho lưu trữ bên
trong của DB2 trong user1 của lược đồ SQL và mysample của lược đồ XML.
Tham số chỉ là một trình giữ chỗ trong ví dụ này. Nó quy

định chỉ số tài nguyên thống nhất (URI) được các tài liệu cá thể XML tham chiếu.
Nhiều tài liệu XML sử dụng các vùng tên, được quy định bằng một URI. Cuối
cùng, mệnh đề complete chỉ thị cho DB2 hoàn thành quá trình đăng ký lược đồ
XML để có thể sử dụng lược đồ đó để xác nhận hợp lệ dữ liệu XML.
Lưu ý rằng quá trình đăng ký lược đồ không liên quan đến việc quy định các cột
của bảng mà các lược đồ sẽ được áp dụng cho chúng. Nói cách khác, các lược đồ
không tương đương với các ràng buộc của cột SQL. Một lược đồ cụ thể có thể xác
nhận hợp lệ dữ liệu cho một loạt các cột XML trong các bảng khác nhau. Tuy
nhiên, việc xác nhận hợp lệ không diễn ra tự động. DB2 cho phép bất kỳ tài liệu
XML đúng định dạng nào được lưu trữ trong một cột XML. Nếu bạn muốn xác
nhận hợp lệ dữ liệu của mình dựa vào một lược đồ đã đăng ký trước khi lưu trữ,
bạn cần phải ra lệnh cho DB2 làm như vậy.
Bước 3: Nhập dữ liệu XML có xác nhận hợp lệ
Với một lược đồ XML được tạo ra và được đăng ký xong trong DB2, bây giờ bạn
đã sẵn sàng có DB2 xác nhận hợp lệ dữ liệu XML khi chèn hoặc nhập khẩu nó vào
một bảng. Hãy nghĩ lại kịch bản IMPORT nói trên có xác nhận hợp lệ lược đồ.
Nếu bạn đã điền vào bảng Clients của mình, bạn có thể thấy rất tiện lợi để xóa các
nội dung của nó hoặc thả xuống và tạo lại bảng đó. Điều này chỉ cần thiết khi bạn
có kế hoạch thêm dữ liệu tương tự vào bảng đó như bạn đã làm từ trước. Hãy nhớ
rằng clients đã được định nghĩa với một khóa chính trên cột client ID, do đó, việc
cố gắng nhập khẩu các hàng trùng lặp sẽ bị lỗi.
Để xác nhận hợp lệ dữ liệu XML trong khi nhập khẩu nó vào bảng Clients, hãy sử
dụng mệnh đề XMLVALIDATE của phương tiện IMPORT của DB2. Câu lệnh
trong Liệt kê 14 chỉ thị cho DB2 sử dụng lược đồ XML đã đăng ký sẵn của bạn
(user1.mysample) làm XDS mặc định (XML Data Specifier) để xác nhận hợp lệ
tệp XML được quy định trong tệp clients.del trước khi chèn chúng vào bảng
Clients.

Liệt kê 14. Nhập dữ liệu XML có xác nhận hợp lệ
import from clients.del of del xml from C:/XMLFILES xmlvalidate using xds

default
user1.mysample insert into user1.clients;

Nếu DB2 xác định rằng một tài liệu XML không tuân theo lược đồ đã quy định,
thì toàn bộ hàng liên kết với tài liệu đó bị loại. Liệt kê 15 minh họa đầu ra ví dụ từ
một phép toán IMPORT trong đó một hàng trong sáu hàng đã bị loại vì tài liệu
XML của nó không phù hợp với lược đồ đã quy định.

Liệt kê 15. Nhập dữ liệu XML có xác nhận hợp lệ
SQL3149N "6 rows were processed from the input file. "5" rows were
successfully inserted into the table. "1" rows were rejected.

Number of rows read = 6
Number of rows skipped = 0
Number of rows inserted = 5
Number of rows updated = 0
Number of rows rejected = 1
Number or rows committed = 6


Lưu ý rằng XMLVALIDATE cũng có thể được dùng với các câu lệnh INSERT để
chỉ thị cho DB2 xác nhận hợp lệ dữ liệu XML trước khi chèn nó. Cú pháp này
tương tự như ví dụ IMPORT vừa được hiển thị trong đó bạn quy định một lược đồ
XML đã đăng ký (và đã hoàn thành) khi gọi mệnh đề XMLVALIDATE. (Xem bài
"Một ví dụ Java đơn giản" để biết thêm thông tin).


Tóm tắt
DB2 phiên bản V9 cung cấp các khả năng mới quan trọng để hỗ trợ XML, bao
gồm một kiểu dữ liệu XML và các thành phần mức-máy cơ bản, tự động lưu trữ

và xử lý dữ liệu XML theo cách hiệu quả. Để giúp bạn khởi đầu nhanh chóng với
các tính năng này, bài viết này đã mô tả cách tạo một cơ sở dữ liệu thử nghiệm và
các bảng mẫu để lưu trữ các tài liệu XML. Nó cũng xem xét cách bạn có thể điền
dữ liệu XML vào cơ sở dữ liệu của bạn. Cuối cùng, nó đã tóm tắt khả năng của
DB2 để xác nhận hợp lệ dữ liệu XML dựa vào các lược đồ XML do người dùng
cung cấp và đã đưa ra các ví dụ cho bạn thấy cách bắt đầu.
Bây giờ bạn đã học được cách lưu trữ dữ liệu XML bằng cách sử dụng các khả
năng XML nguyên gốc của DB2, bạn đã sẵn sàng truy vấn dữ liệu đó. Bạn sẽ thấy
cách thực hiện điều đó trong các bài viết tiếp theo, sẽ giới thiệu cho bạn về sự hỗ
trợ XQuery của DB2 và về các phần mở rộng XML của nó cho SQL (đôi khi gọi
là SQL/XML).
Lời cảm ơn
Cảm ơn Grant Hutchison, Matthias Nicola và Gary Robinson vì các ý kiến đóng
góp cho bài viết này.
Mục lục

 Tạo các đối tượng cơ sở dữ liệu
 Lưu trữ dữ liệu XML
 Xác nhận hợp lệ dữ liệu XML của bạn
 Tóm tắt

×