Đây là lần đầu tiên kể từ khi ra mắt, DB2 cho Linux®, UNIX®, và Windows® đang cung cấp một ngôn ngữ truy vấn mới, công nghệ lưu trữ mới, công nghệ lập chỉ mục mới và các tính năng khác để hỗ trợ cho dữ liệu XML và cấu trúc phân cấp vốn có của nó. Nhưng đừng lo lắng quá, vì tất cả các tính năng quản lý cơ sở dữ liệu truyền thống của DB2 vẫn còn nguyên, bao gồm cả sự hỗ trợ của nó cho SQL và các cấu trúc dữ liệu dạng bảng.
167 trang |
Chia sẻ: franklove | Lượt xem: 2192 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Hãy khởi đầu nhanh chóng với DB2 9 pureXML, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Hãy khởi đầu nhanh chóng với DB2 9 pureXML, Phần 1: XML là lõi
Cynthia M. Saracco, Kiến trúc giải pháp cao cấp, IBM
Tóm tắt: Bản phát hành DB2® 9 của IBM® mô tả một kiến trúc quan trọng là
Ideparture khác với các phiên bản trước. Đây là lần đầu tiên kể từ khi ra mắt, DB2
cho Linux®, UNIX®, và Windows® đang cung cấp một ngôn ngữ truy vấn mới,
công nghệ lưu trữ mới, công nghệ lập chỉ mục mới và các tính năng khác để hỗ trợ
cho dữ liệu XML và cấu trúc phân cấp vốn có của nó. Nhưng đừng lo lắng quá, vì
tất cả các tính năng quản lý cơ sở dữ liệu truyền thống của DB2 vẫn còn nguyên,
bao gồm cả sự hỗ trợ của nó cho SQL và các cấu trúc dữ liệu dạng bảng. Hãy
khám phá công nghệ XML của DB2 9 và tìm hiểu lý do tại sao bây giờ IBM coi
DB2 là hệ thống quản lý cơ sở dữ liệu "lai" hoặc đa-cấu trúc (DBMS).
Lưu ý: Đượ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 sản phẩm trong phiên bản 9.5 và 9.7 của DB2.
Mở đầu
Quản lý các dạng dữ liệu mới thường để lộ ra nhiều thách thức mới. Nhiều nhà
lãnh đạo công nghệ thông tin đã phát hiện ra đó chính là trường hợp khi nói về dữ
liệu theo định dạng của Ngôn ngữ đánh dấu mở rộng (XML).
Thường, các lựa chọn rõ ràng để quản lý và chia sẻ dữ liệu XML vẫn không cắt bỏ
được nó. Các hệ thống tệp đang dùng tốt cho các nhiệm vụ đơn giản, nhưng lại
không mở rộng tốt khi bạn cần đương đầu với một lượng lớn tài liệu. Không thể
quản lý nổi các vấn đề đồng quy, khôi phục, an ninh và dễ sử dụng. Các hệ thống
quản lý cơ sở dữ liệu quan hệ thương mại (DBMS) giải quyết được các vấn đề đó,
nhưng lại thất bại trong các lĩnh vực khác. Chúng cung cấp hai tùy chọn thiết kế
cơ sở dữ liệu cơ bản -- lưu trữ từng tài liệu XML nguyên vẹn như là một đối tượng
Simpo PDF Merge and Split Unregistered Version -
lớn đơn lẻ hoặc thường "băm nhỏ" nó thành nhiều cột trên nhiều bảng. Trong
nhiều tình huống, các tùy chọn này đưa vào các vấn đề hiệu năng, các thách thức
quản trị, tính phức tạp truy vấn tăng lên và các vấn đề khác. Cuối cùng, các DBMS
chỉ cho-XML đưa một môi trường mới hầu như chưa qua thử thách vào cơ sở hạ
tầng công nghệ thông tin, làm tăng các mối quan tâm về tích hợp, các kỹ năng
nhân viên và khả năng tồn tại lâu dài.
Bản phát hành phiên bản 9 của DB2 cho các nền tảng Linux, Unix và Windows
giới thiệu tùy chọn khác. Bản phát hành này hỗ trợ dữ liệu XML như là một kiểu
lớp hạng nhất. Để làm như vậy, IBM mở rộng DB2 để bao gồm:
Các kỹ thuật lưu trữ mới để quản lý hiệu quả các cấu trúc phân cấp vốn có
trong các tài liệu XML.
Công nghệ lập chỉ mục mới để tăng tốc độ các tìm kiếm trên và trong các
tài liệu XML.
Sự hỗ trợ ngôn ngữ truy vấn mới (cho XQuery), một trình xây dựng
(builder) truy vấn đồ họa mới (cho XQuery) và các kỹ thuật tối ưu hóa truy
vấn mới.
Sự hỗ trợ mới để xác nhận hợp lệ dữ liệu XML dựa vào các lược đồ do
người dùng cung cấp.
Các khả năng quản trị, bao gồm phần mở rộng cho các tiện ích cơ sở dữ
liệu quan trọng.
Tích hợp với các giao diện lập trình ứng dụng phổ biến (các API).
Sự hỗ trợ của XML trong một môi trường kho dữ liệu khi có thêm sự hỗ trợ
XML với tính năng phân vùng dữ liệu (DPF), phân vùng phạm vi và phân
cụm nhiều chiều (MDC) trong phiên bản V9.7.
Simpo PDF Merge and Split Unregistered Version -
Điều quan trọng cần lưu ý là sự hỗ trợ "nguyên gốc" của DB2 cho XML nằm
ngoài sự hỗ trợ hiện có của nó cho các công nghệ khác, bao gồm cả SQL, các cấu
trúc dữ liệu dạng bảng và các tính năng DBMS khác nhau. Kết quả là, những
người dùng có thể tạo một đối tượng cơ sở dữ liệu đơn để quản lý cả hai dữ liệu
SQL "truyền thống" lẫn các tài liệu XML. Hơn nữa, họ có thể viết một truy vấn
đơn để tìm kiếm và tích hợp cả hai dạng dữ liệu.
Bài viết này tìm hiểu các tính năng này khi chúng ta đi sâu vào nghiên cứu sự hỗ
trợ XML nguyên gốc của DB2. Mặc dù vậy, trước tiên chúng ta hãy xem xét lý do
tại sao việc quản lý dữ liệu XML đúng cách lại quan trọng.
Các lợi ích tiềm năng
Với số lượng các công ty ngày càng tăng đang chuyển sang XML để giúp họ triển
khai thực hiện các kiến trúc hướng dịch vụ (SOA), trao đổi dữ liệu giữa các hệ
thống và các ứng dụng khác nhau và thích ứng với các điều kiện nghiệp vụ thay
đổi nhanh, nhiều nhà lãnh đạo công nghệ thông tin có hiểu biết đang tìm cách chia
sẻ, tìm kiếm và quản lý có hiệu quả sự phong phú của các tài liệu và các thông báo
XML mà các công ty của họ đang tạo ra. Sự hỗ trợ XML mới của DB2 được thiết
kế để giúp cho các doanh nghiệp giảm thiểu thời gian và nỗ lực đã dùng để tiếp tục
duy trì và sử dụng dữ liệu XML của họ. Dần dần, điều này có thể làm giảm chi phí
phát triển và nâng cao tính linh hoạt nghiệp vụ.
Ví dụ, bài "Sử dụng XML nguyên gốc của DB2 với PHP" (developerWorks,
10.2005) minh họa cách hỗ trợ XML mới của DB2 làm giảm tính phức tạp của
thiết kế cơ sở dữ liệu và mã ứng dụng cần thiết để hỗ trợ trang web thương mại
điện tử. Tương tự như vậy, bài "Quản lý XML để thu được nhiều nhất" (IBM,
Simpo PDF Merge and Split Unregistered Version -
11.2005) bàn về những trải nghiệm ban đầu của khách hàng bao gồm các kịch bản
thử nghiệm so sánh cũng cho thấy những tiết kiệm nhân công tiềm năng và vòng
đời được cải thiện.
Có cái gì ở phía sau những lợi ích này? DB2 cho phép những người dùng lưu trữ
các tài liệu XML nguyên vẹn với đầy đủ kiến thức của DBMS về cấu trúc bên
trong của tài liệu. Điều này loại trừ hoặc giảm thiểu các nhiệm vụ quản trị và lập
trình liên quan đến các lựa chọn thay thế khác. Hơn nữa, nó có thể tăng tốc độ các
tìm kiếm trên và trong các tài liệu và nó cho phép các khách hàng điều chỉnh các
thay đổi dễ dàng hơn theo các yêu cầu nghiệp vụ được phản ánh trong các lược đồ
XML.
Tổng quan về kiến trúc
DB2 cho phép ứng dụng máy khách làm việc với cả hai cấu trúc dữ liệu dạng bảng
và XML thông qua ngôn ngữ truy vấn lựa chọn của chúng -- SQL (bao gồm cả
SQL với các phần mở rộng XML, thường được gọi là "SQL/XML") hoặc XQuery.
Như trong Hình 1, các thành phần mức-máy trong các truy vấn hỗ trợ DB2 được
quy định theo cả hai ngôn ngữ.
Simpo PDF Merge and Split Unregistered Version -
Hình 1. Kiến trúc của bản phát hành DB2 9 mới
Để quản lý có hiệu quả các kiểu dữ liệu SQL truyền thống và dữ liệu XML, DB2
có hai cơ chế lưu trữ riêng biệt. Chúng ta sẽ thảo luận về công nghệ lưu trữ
pureXML® ngay. Tuy nhiên, điều quan trọng cần lưu ý là cơ chế lưu trữ cơ bản
được sử dụng cho một kiểu dữ liệu cụ thể là trong suốt với ứng dụng. Nói cách
khác, ứng dụng không cần quy định rõ ràng cơ chế lưu trữ nào cần sử dụng hoặc
quản lý các khía cạnh vật lý của lưu trữ, chẳng hạn như chia nhỏ các phần của tài
liệu XML trên nhiều trang cơ sở dữ liệu. Nó chỉ đơn giản là sử dụng các lợi ích
hiệu năng thời gian chạy để lưu trữ và truy vấn dữ liệu theo một định dạng có hiệu
quả với dữ liệu đích.
Hãy nghiên cứu kỹ các tính năng XML của DB2 theo quan điểm người dùng.
Lưu trữ hợp lý
Các bộ sưu tập các tài liệu XML được lưu trữ trong các bảng DB2 có chứa một
hoặc nhiều cột theo kiểu dữ liệu XML mới. Điều này cho phép các quản trị viên sử
Simpo PDF Merge and Split Unregistered Version -
dụng các câu lệnh của ngôn ngữ định nghĩa dữ liệu (DDL) SQL quen thuộc để tạo
các đối tượng cơ sở dữ liệu nhằm tiếp tục sử dụng dữ liệu XML của họ. Tuy
nhiên, giao diện quen thuộc này che dấu thực tế là DB2 lưu trữ dữ liệu XML theo
cách khác nhau, khi sử dụng công nghệ mới để bảo tồn cấu trúc phân cấp dữ liệu
XML và hỗ trợ các tìm kiếm có hiệu quả bao trùm tất cả hoặc một phần dữ liệu
XML ban đầu.
Để dễ dàng tích hợp các dạng dữ liệu nghiệp vụ truyền thống với dữ liệu XML cho
những người dùng, các quản trị viên DB2 có thể tạo ra các bảng có chứa các cột có
cả hai kiểu dữ liệu SQL truyền thống lẫn kiểu dữ liệu XML mới. Đây là ví dụ về
một bảng như vậy:
Liệt kê 1. Tạo một bảng có một cột XML
create table items (
id int primary key
not null,
brandname varchar(30),
itemname varchar(30),
sku int,
srp decimal(7,2),
comments xml
Simpo PDF Merge and Split Unregistered Version -
)
Năm đầu tiên cột của bảng này sử dụng các kiểu dữ liệu SQL truyền thống để theo
dõi thông tin về từng mặt hàng để bán, bao gồm số mã định danh ID, tên thương
hiệu, tên mặt hàng, mã hàng trong kho (SKU) và giá bán lẻ đề xuất (SRP). Một cột
"comments" (các ý kiến) chứa dữ liệu XML có ý kiến phản hồi của khách hàng đã
chia sẻ về mặt hàng đó.
Lưu ý rằng không quy định cấu trúc bên trong của dữ liệu XML khi tạo một bảng
có một cột XML. Đây là do thiết kế. Các tài liệu XML là tự mô tả và cấu trúc bên
trong của chúng có thể thay đổi đáng kể. Yêu cầu duy nhất của DB2 để lưu trữ dữ
liệu XML là nó phải "đúng định dạng" -- có nghĩa là, nó phải tuân thủ các quy tắc
cú pháp nhất định được quy định trong "tiêu chuẩn W3C cho XML" (xem phần
"Tài nguyên"). Cách tiếp cận tự do của DB2 tạo cho người dùng sự linh hoạt đáng
kể và dễ dàng lưu trữ các bộ sưu tập của các tài liệu XML có chứa các thuộc tính
và cấu trúc bên trong khác nhau tùy theo phát triển các yêu cầu hoặc các tình
huống nghiệp vụ ở nơi còn thiếu thông tin hoặc thông tin không phù hợp.
Tuy nhiên, những người dùng muốn đảm bảo rằng dữ liệu XML tuân theo các quy
tắc cấu trúc riêng của họ có thể ra lệnh cho DB2 xác nhận hợp lệ dữ liệu của họ
trước khi lưu trữ. Điều này được thảo luận chi tiết hơn trong bài "Các lược đồ và
xác nhận hợp lệ XML." Về cơ bản làm như vậy đòi hỏi tạo ra các lược đồ XML
(đó cũng là một phần của tiêu chuẩn XML của W3C) và đăng ký các lược đồ này
với DB2. (Xem phần "Tài nguyên" để biết thêm thông tin về các lược đồ XML).
Vào lúc này, bạn có thể tự hỏi làm thế nào để những người dùng điền vào một
bảng DB2 với dữ liệu XML. Câu trả lời này là đơn giản -- để làm việc này họ sử
dụng một trong ba cơ chế DB2 quen thuộc. Các câu lệnh INSERT của SQL cũng
Simpo PDF Merge and Split Unregistered Version -
như phương tiện IMPORT của DB2 đều cung cấp dữ liệu XML bên cạnh các kiểu
dữ liệu khác. (IMPORT của DB2 ban hành các câu lệnh INSERT sau hậu trường).
Load cũng hỗ trợ các câu lệnh chèn của XML, được thêm vào trong DB2 9.5. Nếu
bạn đang tự hỏi tại sao DB2 chỉ hỗ trợ các câu lệnh chèn dữ liệu qua SQL mà
không qua XQuery, thì câu trả lời đó khá đơn giản, -- phiên bản đầu tiên của tiêu
chuẩn XQuery mới nổi tập trung vào các hoạt động đọc cơ sở dữ liệu, chứ không
ghi các hoạt động. Trong trường hợp thiếu một tiêu chuẩn được chấp nhận rõ ràng,
IBM đã chọn cung cấp cho người dùng của mình hai phương tiện quen thuộc để
tiếp tục sử dụng dữ liệu XML mới. (Xem phần "Tài nguyên" để biết thêm thông
tin về các tiêu chuẩn XQuery).
Lưu trữ vật lý
Do là một vấn đề thực tế, nên hầu hết ngững người dùng chẳng cần bận tâm đến
kiến trúc quản lý lưu trữ vật lý mới của DB2 cho dữ liệu XML. Tuy nhiên, để giúp
bạn hiểu những gì DB2 đang làm sau hậu trường, chúng ta hãy thảo luận ngắn gọn
về cách tiếp cận bên trong của nó để lưu trữ dữ liệu XML.
DB2 lưu trữ và thao tác dữ liệu XML theo một định dạng được phân tích cú pháp
phản ánh bản chất phân cấp của tài liệu XML ban đầu. Như vậy, nó sử dụng các
cây và các nút làm mô hình của mình để lưu trữ và xử lý dữ liệu XML. Nếu những
người sử dụng ra lệnh cho DB2 xác nhận hợp lệ dữ liệu XML của họ dựa vào một
lược đồ XML đã đăng ký trước khi lưu trữ, thì DB2 sẽ chú thích tất cả các nút
trong phân cấp XML với thông tin về các kiểu lược đồ.
Dựa vào định nghĩa ở trên về một bảng "items" (các mặt hàng), chúng ta hãy xem
xét lại một tài liệu XML mẫu được lưu trữ trong bảng đó. Như trong Liệt kê 2 và
Simpo PDF Merge and Split Unregistered Version -
được minh họa trong Hình 2, tài liệu XML này chứa nhiều phần tử được biểu diễn
theo một hệ thống phân cấp, bao gồm một phần tử gốc Comments và một hay
nhiều phần tử con Comment (ý kiến) liên quan đến một mặt hàng cụ thể. Một trình
nhận dạng ý kiến được kết hợp với mỗi ý kiến, thông tin về khách hàng có thể bao
gồm các phần tử con có tên và địa chỉ email của khách hàng, văn bản thông báo
hay ý kiến của khách hàng và một chỉ số về liệu khách hàng có muốn hay không
muốn trả lời không.
Liệt kê 2. Tài liệu XML mẫu
133
John Doe
johndoe@any_isp.com
Heels on shoes wear out too
quickly.
Simpo PDF Merge and Split Unregistered Version -
No
. . .
Hình 2. Biểu diễn hệ thống phân cấp của tài liệu XML trong Liệt kê 2
Simpo PDF Merge and Split Unregistered Version -
Khi lưu trữ, DB2 sẽ bảo toàn cấu trúc bên trong của tài liệu này, chuyển đổi các
tên thẻ của nó và thông tin khác thành các giá trị số nguyên. Làm như vậy sẽ giúp
bảo tồn không gian đĩa và cũng cải thiện hiệu năng của các truy vấn sử dụng các
biểu thức chuyển hướng. Ví dụ, DB2 có thể chuyển đổi thẻ "Comments" (Các ý
kiến) trong Hình 2 tới giá trị "0" khi lưu trữ. Tuy nhiên, người dùng không nhận
biết được về cách biểu diễn bên trong này.
Cuối cùng, DB2 sẽ tự động chia nhỏ các phần của một tài liệu — đó là, các nút
của cây tài liệu — trên nhiều trang cơ sở dữ liệu khi cần thiết. Thật vậy, DB2 có
thể chia nhỏ một bộ sưu tập (hoặc cây con) của các nút ở mức phân cấp tài liệu bất
kỳ khi cần thiết. Trong các trường hợp như vậy, DB2 tự động tạo ra và duy trì một
chỉ mục "các vùng" để cung cấp một phương tiện hiệu quả giúp theo dõi biểu diễn
vật lý toàn bộ tài liệu. Không gian lưu trữ các tài liệu XML này được được gọi là
Vùng đối tượng dữ liệu XML (XDA).
Nếu sử dụng tùy chọn "nội tuyến" cho bảng tạo và toàn bộ tài liệu XML đủ nhỏ để
lấp đầy trang, thì nó sẽ được lưu trữ cùng với dữ liệu quan hệ và không nằm trong
vùng XDA. Tuy nhiên, nếu tài liệu quá lớn, thì DB2 sẽ tự động chia nhỏ tài liệu đó
như mô tả ở trên. Tùy chọn nội tuyến đã được đưa vào trong DB2 9.5. Cũng các
tùy chọn khác được đưa vào trong phiên bản 9.5 là khả năng tuyến bố "có nén"
trong khi tạo hoặc thay đổi bảng và không chỉ nén dữ liệu quan hệ, mà còn nội
tuyến cả dữ liệu XML nữa. Trong thực tế, DB2 đã tiến một bước xa hơn trong
phiên bản 9.7 — việc thiết lập nén trên một bảng trong phiên bản 9.7 cũng nén các
tài liệu XML trong vùng XDA.
Lập chỉ mục
Simpo PDF Merge and Split Unregistered Version -
Cùng với sự hỗ trợ quản lý lưu trữ phân cấp mới cho XML, DB2 mô tả công nghệ
lập chỉ mục mới để tăng tốc các tìm kiếm liên quan đến dữ liệu XML. Giống như
các bản sao quan hệ của chúng, các chỉ mục XML mới này được tạo ra bằng một
câu lệnh DDL của SQL quen thuộc: CREATE INDEX. Tuy nhiên, ngoài việc quy
định cột đích để lập chỉ mục, những người dùng cũng quy định một "xmlpattern" -
- về cơ bản, là một biểu thức XPATH không có các biến vị ngữ -- để nhận biết tập
hợp con của tài liệu XML quan tâm.
Ví dụ, việc sử dụng định nghĩa bảng "items" nói trên và tài liệu XML mẫu tương
ứng được hiển thị trong Liệt kê 2, một quản trị viên có thể đưa ra câu lệnh sau
(xem Liệt kê 3) để lập chỉ mục tất cả các trình định danh ý kiến (các giá trị
"CommentID") có chứa trong cột "comments". Nhớ lại rằng phần tử CommentID
trong tài liệu mẫu của chúng ta là một phần tử con của phần tử Comment, mà
chính phần tử Comment lại là một phần tử con của phần tử Comments gốc.
Liệt kê 3. Tạo một chỉ mục cho một cột XML
create index myindex on items(comments)
generate key
using xmlpattern
'/Comments/Comment/CommentID' as sql
double
Simpo PDF Merge and Split Unregistered Version -
Có một vài chi tiết đáng chú ý. Đường dẫn quy định trong mệnh đề "xmlpattern"
là trường hợp cụ thể. Như vậy, "/Comments/Comment/CommentID" sẽ không lập
chỉ mục các giá trị phần tử XML giống như "/comments/comment/commentid."
Hơn nữa, vì DB2 không đòi hỏi một lược đồ XML đơn cho một cột XML cụ thể,
nên DB2 có thể không biết kết hợp kiểu dữ liệu nào với mẫu đã quy định. Những
người dùng phải quy định rõ ràng kiểu dữ liệu bằng cách sử dụng một trong các
kiểu SQL được hỗ trợ (VARCHAR, VARCHAR HASHED, DOUBLE, DATE và
TIMESTAMP).
Cuối cùng, mặc dù một câu lệnh SQL DDL được sử dụng để tạo ra một chỉ mục
XML, một chỉ mục trên dữ liệu XML không giống như một chỉ mục trên các cột
của các kiểu dữ liệu SQL truyền thống. Trong khi các chi tiết về công nghệ lập chỉ
mục XML của DB2 vượt quá phạm vi của bài viết này, bạn có thể nhận thấy hai
sự khác biệt quan trọng:
Các chỉ mục cho dữ liệu XML thông thường chỉ bao gồm một tập hợp con
của các nội dung của tài liệu (của cột). Ngược lại, các chỉ mục cho dữ liệu
SQL truyền thống luôn bao gồm toàn bộ nội dung của cột.
Một dòng duy nhất trong một bảng có thể dẫn đến nhiều mục nhập chỉ mục
XML vì một tài liệu XML đơn có thể chứa không, một hoặc nhiều "nút"
phù hợp với xmlpattern đã quy định. Ngược lại, một chỉ mục không-XML
chứa một mục nhập cho mỗi hàng trong bảng.
Đối với các ứng dụng cụ thể, việc tìm kiếm toàn văn bản có thể rất quan trọng.
IBM đã mở rộng các khả năng tìm kiếm văn bản trước đó của DB2 để bao gồm dữ
liệu đã lưu trữ trong các cột XML. Các phần mở rộng cho câu lệnh CREATE
INDEX cho phép các quản trị viên tạo các chỉ mục toàn văn bản để giúp cải thiện
hiệu năng cho các tìm kiếm như vậy.
Simpo PDF Merge and Split Unregistered Version -
Ngôn ngữ và tối ưu hóa truy vấn
Sự hỗ trợ pureXML của DB2 bao gồm các khả năng của ngôn ngữ truy vấn mới.
Bây giờ các lập trình viên có thể tìm kiếm dữ liệu bằng SQL hay XQuery, một
ngôn ngữ truy vấn mới hỗ trợ các biểu thức dẫn hướng (hoặc dựa vào đường dẫn).
Thật vậy, các ứng dụng có thể tự do sử dụng các câu lệnh trong cả hai ngôn ngữ
truy vấn và trên thực tế một câu lệnh truy vấn đơn có thể kết hợp cả hai SQL và
XQuery.
Chúng ta không có thời gian để khám phá cả chiều rộng lẫn chiều sâu của những
khả năng này trong bài viết này, vì vậy chúng ta chỉ thảo luận về một vài điểm nổi
bật. Nếu bạn là một lập trình viên SQL chưa có kinh nghiệm về XML từ trước,
bạn sẽ cảm thấy yên lòng khi biết rằng một câu lệnh SQL đơn giản sẽ cho phép
bạn lấy ra các nội dung của dữ liệu được lưu trữ trong các cột XML. Ví dụ, hai
truy vấn quen thuộc này sẽ trả về tất cả dữ liệu trong bảng 'items' có liên quan tới
mã hàng trong kho (SKU), bao gồm các tài liệu XML có các ý kiến của khách
hàng:
Liệt kê 4. Truy vấn dữ liệu XML bằng SQL
select * from items where sku = 112233
select id, brandname, itemname, sku, srp,
Simpo PDF Merge and Split Unregistered Version -
comments from items
where sku = 112233
Bây giờ hãy xem xét một tình huống hơi khác một chút, trong đó bạn muốn chỉ lấy
ra các thông báo được chứa trong các ý kiến khách hàng của bảng "items" và bạn
muốn làm như vậy bằng XQuery. Đây có lẽ là cách đơn giản nhất để tạo câu lệnh:
Liệt kê 5. Truy vấn dữ liệu XML bằng XQuery
xquery db2-
fn:xmlcolumn('ITEMS.COMMENTS')/Comments/Comment/Message
Vì DB2 hỗ trợ hai ngôn ngữ truy vấn, nên những người dùng phải đặt tiền tố trước
các câu lênh XQuery bằng từ khóa "xquery". Hàm "db2-fn: xmlcolumn" là một
cách để chỉ rõ dữ liệu đích được truy vấn. Nó đòi hỏi một tham số quy định cột
XML của bảng mong muốn - trong trường hợp này, cột COMMENTS của bảng
ITEMS. Bạn đã giới hạn thêm dữ liệu đích của mình theo một tập hợp con cụ thể
của dữ liệu XML -- trong trường hợp này, cột COMMENTS của bảng ITEMS.
Bạn đã giới hạn thêm dữ liệu đích của mình theo một tập hợp con cụ thể của dữ
liệu XML -- cụ thể là, các giá trị của phần tử "Message" (thông báo), là một phần
tử con của phần tử "Comment", mà chính phần tử "Comment" lại là một phần tử
con của phần tử "Comments" gốc. (Xem Hình 2.)
Simpo PDF Merge and Split Unregistered Version -
Có thể tạo truy vấn tương tự bằng cách sử dụng các biểu thức FLWOR thường
được kết hợp với các câu lệnh của XQuery. Các biểu thức FLWOR -- một cách đề
cập không chính thức cho các mệnh đề for, let, where, order by và return -- cho
phép các lập trình viên truy vấn lặp lại qua các nhóm nút trong các tài liệu XML
và liên kết các biến với các kết quả trung gian. Đối vớ