PDF:

Nâng cao tính thấu đáo nghiệp vụ và khả năng mở rộng
của dữ liệu XML với các đặc tính pureXML của DB2 phiên
bản mới 9.7
Matthias Nicola ([email protected])
Chuyên gia về hiệu năng CSDL
IBM Silicon Valley Laboratory
06 11 2009
Cynthia M. Saracco
Kiến trúc giải pháp cao cấp
EMC
Các tính năng mới về thiết kế, quản trị và về phát triển cơ sở dữ liệu cho pureXML đã có sẵn tại
cơ sở dữ liệu DB2® phiên bản 9.7 của IBM cho các hệ điều hành Linux®, UNIX® và Windows®,
(được công bố ngày 22 tháng Tư 2009). Bạn hãy tìm hiểu thêm về cách các công nghệ này
có thể giúp các công ty tích hợp dữ liệu XML một cách hiệu quả hơn vào các môi trường kinh
doanh thông minh như thế nào và làm sao các công ty có thể đối phó với khối lượng dữ liệu
XML ngày càng tăng lên. Bài viết này tóm tắt các khả năng mới của pureXML, giải thích cách
chúng có thể được sử dụng và thảo luận về một kịch bản ứng dụng mẫu.
Giới thiệu
Đối với nhiều tổ chức đang cố gắng để tạo một môi trường CNTT linh hoạt và đáng tin cậy, một môi
trường cung cấp một cái nhìn thấu đáo hơn đối với các hoạt động kinh doanh trọng yếu, thì các hệ
thống quản lý thông tin cốt lõi đang chịu áp lực nhiều hơn để thích ứng với nhu cầu kinh doanh luôn
thay đổi. Để giúp các công ty đối phó với các thách thức, IBM đã nâng cao các đặc tính của DB2
9.7 của mình cho pureXML trong nhiều hướng quan trọng.
Các đặc tính mới trong DB2 9.7 cho phép quản trị viên sử dụng các tuỳ chọn mới cho việc thiết kế
cơ sở dữ liệu dành cho dữ liệu XML, bao gồm việc phân đoạn dựa vào băm (phân đoạn cơ sở dữ
liệu), phân đoạn theo dải (phân đoạn bảng) và phân cụm nhiều chiều. Các tùy chọn này có thể giúp
các công ty chứa đựng khối lượng dữ liệu lớn, khai thác môi trường xử lý song song, đơn giản hóa
việc bổ sung hoặc loại bỏ các dữ liệu nhạy thời gian, nâng cao tốc độ thực hiện của nhiều kiểu truy
vấn. Được sử dụng riêng rẽ hoặc kết hợp với nhau, các tùy chọn thiết kế này của DB2 cho phép các
tổ chức kết hợp dữ liệu XML vào kho dữ liệu quan hệ của họ; tạo kho lưu trữ dữ liệu vận hành cho
các thông điệp, tài liệu và cấp dữ liệu XML; và cải thiện khả năng mở rộng tải công việc xử lý giao
dịch XML.
© Copyright IBM Corporation 2009
Nâng cao tính thấu đáo nghiệp vụ và khả năng mở rộng của dữ
liệu XML với các đặc tính pureXML của DB2 phiên bản mới 9.7
Nhẫn hiệu đăng ký
Trang 1 của 19
developerWorks®
ibm.com/developerWorks/vn/
Các tùy chọn thiết kế cơ sở dữ liệu mới này chỉ là một phần của những cải tiến về pureXML
trong DB2 9.7. Bài viết này giới thiệu cho bạn những tùy chọn đó và các khả năng mới khác của
pureXML, giải thích khi nào thì chúng có ích nhất và cung cấp các mẹo để giúp bạn bắt đầu. Bài
viết này bàn về các vấn đề sau:
•
•
•
•
•
•
•
•
Một tổng quan ngắn về DB2 pureXML cho những ai chưa quen với công nghệ này.
Các ca sử dụng mẫu và kịch bản ứng dụng cho DB2 pureXML.
Phân đoạn cơ sở dữ liệu dựa vào băm, mang lại khả năng mở rộng đáng kể.
Phân đoạn dựa theo dải, giúp các công ty cuộn vào và cuộn ra (roll in và roll out) dữ liệu theo
thời gian (một yêu cầu phổ biến trong kho dữ liệu).
Phân cụm nhiều chiều, phương thức này thường cải thiện hiệu suất của các truy vấn phân tích.
Nén dữ liệu XML và các chỉ mục, cải thiện hiệu quả lưu trữ và hiệu năng chạy thi hành cho
những tải công việc nhất định.
Các hàm do người dùng định nghĩa chúng tiêu thụ, xử lý và trả lại dữ liệu XML. Những hàm
như vậy khuyến khích tái sử dụng mã và đơn giản hóa việc phát triển và bảo trì các truy vấn.
Các thủ tục lưu sẵn mới, các hàm do hệ thống cung cấp, nâng cao hiệu năng và các đặc tính
năng khác, đơn giản hóa việc phát triển ứng dụng và quản trị của DB2 pureXML.
Nhìn lại quá trình phát triển của DB2 pureXML
Từ năm 2006, DB2 phiên bản 9 đã cung cấp cho các công ty một giao diện lập trình ứng dụng phổ
biến và nền tảng quản lý cơ sở dữ liệu cho dữ liệu được mô hình hóa trong các bảng và trong các
phân cấp XML. Kiến trúc quản lý cơ sở dữ liệu lai này, như được minh họa trong hình 1, cho phép
các công ty mở rộng môi trường cơ sở dữ liệu quan hệ truyền thống của mình để quản lý trực tiếp
các thông điệp và các tài liệu XML mà không cần phải chia nhỏ hoặc ánh xạ dữ liệu này vào các
cột riêng lẻ của các bảng khác nhau (do vậy sẽ chuyển đổi XML thành các kiểu dữ liệu SQL truyền
thống). Thay vào đó, dữ liệu XML có thể được lưu giữ nguyên vẹn ở định dạng phân cấp nguyên
sinh của nó cùng với các dữ liệu quan hệ. Các ứng dụng có thể lấy ra những phần có liên quan của
dữ liệu XML một cách dễ dàng và hiệu quả. Ứng dụng cũng có thể dễ dàng tích hợp dữ liệu XML và
dữ liệu quan hệ.
Nâng cao tính thấu đáo nghiệp vụ và khả năng mở rộng của dữ
liệu XML với các đặc tính pureXML của DB2 phiên bản mới 9.7
Trang 2 của 19
ibm.com/developerWorks/vn/
developerWorks®
Hình 1. Kiến trúc DB2 phiên bản 9 với hỗ trợ được xây dựng sẵn cho các dữ liệu
quan hệ và XML
Để sử dụng khả năng pureXML của DB2, các quản trị viên tạo một bảng với một hoặc nhiều cột
kiểu XML. Dịch vụ lập chỉ mục XML, tối ưu hóa truy vấn, quản lý lưu trữ, và các dịch vụ khác của
DB2 giúp đảm bảo hiệu quả và hiệu suất thời gian chạy thi hành mạnh.
Liệt kê 1 cho thấy làm việc với dữ liệu XML trong DB2 đơn giản như thế nào. Các mã trong liệt kê 1
làm các việc sau:
1. Tạo ra một bảng với các cột quan hệ và các cột XML
2. Lập chỉ mục cho một phần cụ thể của cột XML
3. Chèn dữ liệu vào bảng
4. Đưa ra các truy vấn (bằng các câu lệnh SQL, SQL/XML và Xquery đơn giản)
5. Cập nhập giá trị của một phần tử XML được lưu giữ trong một tài liệu XML
Liệt kê 1. Làm việc với DB2 pureXML
-- Create a table with an integer and an XML column
CREATE TABLE customer (cid INTEGER, info XML);
-- Create an XML index for customer zip code data
CREATE INDEX idx1 ON customer(info) GENERATE KEYS USING
XMLPATTERN '/customerinfo/addr/zip' AS SQL VARCHAR(5);
-- Populate the table with data using a simple INSERT statement
INSERT INTO customer (cid, info) VALUES (?,?);
-- Retrieve relational data and full XML documents
-- for customers using simple SQL
SELECT cid, info
FROM customer
WHERE cid > 1234;
-- Retrieve names of customers in a specific zip code
-- who have an ID of > 1234 using SQL/XML
SELECT XMLQUERY('$INFO/customer/name')
FROM customer
WHERE cid > 1234 and
Nâng cao tính thấu đáo nghiệp vụ và khả năng mở rộng của dữ
liệu XML với các đặc tính pureXML của DB2 phiên bản mới 9.7
Trang 3 của 19
developerWorks®
ibm.com/developerWorks/vn/
XMLEXISTS('$INFO/customer/addr[zip = 95123]');
-- Retrieve an XML element that lists the names of customers
-- in a given zip code using XQuery
xquery for $i in db2-fn:xmlcolumn("CUSTOMER.INFO")/customer
where $i/addr/zip = 95123
return <myresult>{$i/name}</myresult> ;
-- Update XML element value related to zip code
UPDATE customer
SET INFO = XMLQUERY('copy $new := $INFO
modify do replace value of $new/customer/addr/zip
with 95141
return $new')
WHERE ...;
Khám phá các trường hợp sử dụng mẫu
Kiến trúc hướng dịch vụ (SOA), các ứng dụng lấy Web làm trọng tâm, và các dự án tích hợp dựa
trên tiêu chuẩn đặc thù công nghiệp thường dựa vào dữ liệu XML để xác định các dữ liệu kinh
doanh quan trọng được biểu diễn và được trao đổi như thế nào. Hơn nữa, việc kiểm định và tự tuân
thủ thường yêu cầu là các hồ sơ đầy đủ của các giao dịch kinh doanh vẫn có thể truy cập được cho
một khoảng thời gian nào đó. Việc sử dụng XML ngày càng tăng lên khiến nhiều công ty phải đánh
giá xem liệu cơ sở dữ liệu của họ có thể được điều chỉnh để đối phó với những cấu trúc phức tạp,
hay thay đổi, là tính chất cố hữu của các thông điệp và tài liệu XML. Việc quản lý dữ liệu XML đang
tác động đến cả môi trường hướng giao dịch lẫn các ứng dụng phân tích.
Tích hợp các dữ liệu vận hành
Bản chất linh hoạt, tự miêu tả của XML làm cho nó rất phù hợp để trình bày các tạo tác nghiệp vụ
khác nhau. Các tạo tác này thường được lưu trữ trong hệ quản lý cơ sở dữ liệu quan hệ hiện có
hoặc hệ thống tệp tin, hoặc các tạo tác được tạo ra một cách động bởi các dịch vụ Web, nguồn cấp
dữ liệu thời gian thực, hoặc phần mềm khác . Việc xử lý và phân tích thông tin từ các nguồn khác
nhau này là một thách thức rõ ràng. Các công ty có thể được lợi do việc duy trì một kho chứa dữ
liệu dựa trên XML cùng chia sẻ. Bản chất biến đổi của cấu trúc XML đáp ứng được một phạm vi rộng
các nhu cầu nghiệp vụ. Kho lưu trữ dữ liệu vận hành (Operational Data Storage-ODS) được xây
dựng trên XML có thể giảm chi phí phát triển ứng dụng và có thể cung cấp một cơ sở hạ tầng lanh
lẹn để thích ứng với nhu cầu quản lý dữ liệu đang tiến triển.
Hình 2 minh họa một kiến trúc mẫu, trong đó công nghệ pureXML của DB2 được sử dụng như một
kho lưu trữ dữ liệu vận hành để tích hợp dữ liệu từ nhiều nguồn đại diện cho nhiều ứng dụng kinh
doanh. Các nguồn dữ liệu và các ứng dụng mới hơn có thể thậm chí không cần bộ tiếp hợp XML,
bởi vì chúng có thể sử dụng XML làm định dạng trao đổi dữ liệu nguyên sinh của chúng.
Nâng cao tính thấu đáo nghiệp vụ và khả năng mở rộng của dữ
liệu XML với các đặc tính pureXML của DB2 phiên bản mới 9.7
Trang 4 của 19
ibm.com/developerWorks/vn/
developerWorks®
Hình 2. DB2 pureXML hoạt động như một kho dữ liệu vận hành tích hợp
Mở rộng kho dữ liệu
Kể từ khi được chấp nhận vào những năm 1990, kho dữ liệu đóng một vai trò ngày càng quan trọng
trong việc giúp đỡ các công ty phân tích các xu hướng và cải thiện chiến lược kinh doanh của họ.
Trong khi việc quản lý cơ sở dữ liệu quan hệ vẫn là sự lựa chọn công nghệ thích hợp cho các kho
dữ liệu, thì việc bổ sung khả năng quản lý dữ liệu XML có thể mang lại tính linh hoạt cao hơn, cho
phép các công ty hỗ trợ báo cáo kinh doanh đang tiến triển và các yêu cầu phân tích mà không
phải thay đổi đáng kể lược đồ cơ sở dữ liệu hoặc viết lại mã ứng dụng hiện có.
Xin lấy ví dụ, ta hãy xem xét một kho dữ liệu theo dõi các thông tin bán hàng. Khi sử dụng một
thiết kế cơ sở dữ liệu theo lược đồ hình sao, một bảng sự việc có thể chứa các dữ liệu bán hàng
theo sản phẩm, theo vùng địa lý và theo khoảng thời gian. Dữ liệu trong bảng sự việc này thường sẽ
được nối với dữ liệu trong các bảng chiều (dimension tables) để có được những chi tiết cụ thể về
các sản phẩm, các vùng khác nhau, vv. Thật không may, việc phát triển một thiết kế cơ sở dữ liệu
chi tiết cho một kho dữ liệu như vậy có thể gặp nhiều thách thức.
Ta hãy xem xét những thách thức liên quan đến việc thiết kế một bảng chiều dữ liệu thích hợp nếu
ta có một dải sản phẩm đa dạng cần phải trình bày. Các loại sản phẩm khác nhau có các thuộc tính
khác nhau, như vậy làm cho rất khó xác định trước thuộc tính nào của sản phẩm nào cần được
cung cấp cho các nhà phân tích và điều hành kinh doanh. Rất có thể các nhà phân tích sẽ muốn
khoan sâu xuống hoặc cắt lát và băm nhỏ (slice-and-dice) các dữ liệu về việc bán sản phẩm theo
các cách mà ta không dự kiến được, chẳng hạn họ muốn xem xét việc bán áo len của phụ nữ theo
kích thước, màu sắc, loại chất liệu, đường viền cổ áo, chiều dài tay áo, vv. Với một thiết kế chỉ theo
mô hình quan hệ, thì mỗi thuộc tính có thể quan tâm đến của mỗi sản phẩm sẽ cần phải được lưu
trữ tại cột riêng của nó, dẫn đến một bảng chiều dữ liệu cồng kềnh. Bởi vì các thuộc tính sẽ khác
Nâng cao tính thấu đáo nghiệp vụ và khả năng mở rộng của dữ
liệu XML với các đặc tính pureXML của DB2 phiên bản mới 9.7
Trang 5 của 19
developerWorks®
ibm.com/developerWorks/vn/
nhau từ sản phẩm này đến sản phẩm khác, một bảng như vậy sẽ có nhiều hàng và các cột thì thưa
dữ liệu, rất kém hiệu quả. Và, vì các sản phẩm mới và các thuộc tính sản phẩm mới sẽ được đưa
thêm vào theo thời gian, nên lược đồ cơ sở dữ liệu (và bất kỳ ứng dụng nào phụ thuộc vào lược đồ
đó) sẽ cần phải được thay đổi, làm như vậy khá tốn kém. Việc thêm một cột vào bảng trong kho dữ
liệu của công ty cũng có thể gặp phải quy trình xem xét và phê duyệt lâu tại nhiều tổ chức CNTT.
Một cách ít gây phiền toái để phục vụ cho nhu cầu kinh doanh hay thay đổi như vậy là cách sử
dụng một hoặc nhiều cột XML trong lược đồ kho dữ liệu. Các thuộc tính thường sử dụng có thể
vẫn thu thập trong các cột quan hệ, trong khi các chi tiết bổ sung có thể được duy trì trong một cột
XML sẵn sàng để chứa các cấu trúc hay thay đổi và được truy cập một cách dễ dàng để truy vấn và
báo cáo. Trong ví dụ trên, một cột XML có thể được sử dụng trong bảng chiều dữ liệu có chứa dữ
liệu về sản phẩm. Thuộc tính mới của sản phẩm cần phải được theo dõi chỉ cần đơn giản đưa vào làm
các phần tử mới trong các tài liệu XML được kết hợp với sản phẩm đích. Ta không cần phải thay đổi
lược đồ của cơ sở dữ liệu.
Hình 3 mô tả cách mà kho dữ liệu có thể được mở rộng bằng XML.
Hình 3. Kho dữ liệu quan hệ được mở rộng bằng khả năng quản lý dữ liệu XML.
Bảng sự kiện và tất cả các bảng chiều dữ liệu có thể bao gồm các cột XML, tuy
nhiên ví dụ này chỉ cho ta thấy một bảng cho một loại dữ liệu với một cột XML.
Trong hình 3, một kho lưu trữ dữ liệu vận hành cấp thông tin mới theo định kỳ cho kho dữ liệu.
Một số thông tin này có thể là XML, trong khi các thông tin khác có thể là thông tin quan hệ. Các
cột XML có thể được bổ xung vào bảng sự kiện hoặc bảng chiều dữ liệu khi cần thiết, mặc dù hình
Nâng cao tính thấu đáo nghiệp vụ và khả năng mở rộng của dữ
liệu XML với các đặc tính pureXML của DB2 phiên bản mới 9.7
Trang 6 của 19
ibm.com/developerWorks/vn/
developerWorks®
3 minh hoạ dữ liệu XML tại chỉ một bảng chiều dữ liệu (bảng để theo dõi các chi tiết của các sản
phẩm khác nhau).
Hỗ trợ các ứng dụng lấy XML làm tâm điểm
Trong khi công nghệ DB2 pureXML có thể mở rộng các cơ sở dữ liệu phân tích và hỗ trợ ra quyết
định, thì nó cũng rất phù hợp để giúp các công ty quản lý khối lượng tăng lên của các thông điệp và
tài liệu XML mà nhiều kiến trúc hướng dịch vụ tạo ra cho các ứng dụng xử lý giao dịch. Việc sử dụng
ngày càng tăng của các biểu mẫu điện tử và dịch vụ Web là hai yếu tố đóng góp vào việc tăng khối
lượng dữ liệu XML.
DB2 giúp các công ty đối phó với việc tăng khối lượng của dữ liệu XML bằng cách loại bỏ việc phải
chia nhỏ XML vào các cột của các bảng khác nhau. Việc lưu trữ XML trong định dạng phân cấp
nguyên sinh của nó và làm cho XML có thể ngay lập tức được truy cập thông qua các biểu thức
XPath, XQuery và SQL/XML theo tiêu chuẩn công nghiệp sẽ giảm chi phí hành chính và đơn giản
hoá việc phát triển ứng dụng.
Sử dụng phân đoạn (cơ sở dữ liệu) dựa trên băm để có khả năng mở rộng
tối đa
Vì khối lượng dữ liệu tăng lên, nên việc phân tán nội dung của một cơ sở dữ liệu trên nhiều bộ xử
lý và thiết bị lưu trữ có thể giúp các công ty đạt được khả năng mở rộng tuyến tính. DB2 phiên bản
9.7 mở rộng tính năng phân đoạn cơ sở dữ liệu của DB2 (DPF) để hỗ trợ cả XML và dữ liệu quan
hệ. Trước đây, DPF chỉ hỗ trợ dữ liệu quan hệ.
Hình 4. Kiến trúc DB2 mẫu với phân đoạn dựa trên băm, cho phép xử lý song
song các truy vấn và các hoạt động cơ sở dữ liệu khác
Như hình 4 cho thấy, DPF là một tùy chọn thiết kế cơ sở dữ liệu vật lý, sử dụng nhiều phân đoạn cơ
sở dữ liệu riêng biệt trong một môi trường đa xử lý. Nhiều phân đoạn cơ sở dữ liệu có thể được tạo
ra trong chỉ một máy SMP (đa xử lý đối xứng) hoặc có thể được phân tán trên các máy riêng biệt
trong một môi trường không chia sẻ gì.
Nâng cao tính thấu đáo nghiệp vụ và khả năng mở rộng của dữ
liệu XML với các đặc tính pureXML của DB2 phiên bản mới 9.7
Trang 7 của 19
developerWorks®
ibm.com/developerWorks/vn/
DPF có thể hữu ích cho tải công việc nặng về đọc, bao gồm cả những công việc phổ biến cho các
môi trường kho dữ liệu. Với DPF, mỗi hàng của một bảng đã cho được đặt trong một phân đoạn cơ
sở dữ liệu cụ thể dựa vào giá trị băm của khóa phân phối của bảng đó, khóa này được định nghĩa
khi tạo bảng. Khi dữ liệu được đọc ra hoặc được viết vào cơ sở dữ liệu, thì DB2 tự động hướng công
việc thích hợp tới các phân đoạn có liên quan. Kết quả là, các nguồn tài nguyên tính toán kết hợp
với nhiều phân đoạn có thể hoạt động song song để đáp ứng các yêu cầu của người dùng ban đầu.
Khả năng mở rộng tuyến tính đạt được bằng cách bổ sung thêm phân đoạn mới khi khối lượng dữ
liệu tăng lên. Trình Cố vấn thiết kế của DB2, một công cụ quản trị được xây dựng sẵn, có thể đưa ra
lời khuyên cho quản trị viên về thiết kế phân đoạn của họ.
Để đơn giản hóa việc quản trị dữ liệu XML và cung cấp khả năng mở rộng tối đa, DB2 phiên bản
9.7 cho phép dữ liệu XML được phân tán trên các phân đoạn cơ sở dữ liệu khác nhau. Việc phân
tán dữ liệu cho phép nhiều hoạt động được thực thi song song một cách tự động, bao gồm nạp,
chèn, truy vấn, cập nhật, xóa, xác nhận hợp lệ và xuất bản dữ liệu XML. Đặc biệt, các truy vấn phân
tích phức tạp và có khả năng sẽ chạy thi hành lâu có thể được chia nhỏ và được thực thi song song,
điều này cải thiện đáng kể thời gian đáp ứng.
Cũng như với các bản phát hành trước của DB2, điều quan trọng là phải chọn một khoá phân phối,
khóa này phân phối đều các hàng trên các phân đoạn. Khoá phân phối phải bao gồm các cột quan
hệ, và nó không thể tham khảo một cột XML. Lý tưởng nhất là khóa này chứa dữ liệu với nhiều giá
trị khác biệt để tránh các phân đoạn có kích thước không đồng đều.
Việc khai thác DPF cho dữ liệu XML trong DB2 9.7 là rất tương tự như khai thác DPF cho dữ liệu
quan hệ. Cụ thể là quản trị viên phải định nghĩa các đối tượng thích hợp của cơ sở dữ liệu, chẳng
hạn như các nhóm phân đoạn, các vùng bảng, các pool đệm, vv. Các bảng phải được tạo ra bằng
mệnh đề DISTRIBUTE BY HASH trong câu lệnh CREATE TABLE.
Liệt kê 2 tạo ra một bảng SALES với các cột quan hệ cho ORDERID, PERSONID và SALESDATE,
cũng như tạo ra một cột XML để thu thập DETAILS (chi tiết) về đơn đặt hàng. Bạn lưu ý rằng các
giá trị của cột ORDERID sẽ quyết định việc phân đoạn các hàng như thế nào đối với bảng này.
Liệt kê 2. Tạo một bảng phân đoạn dựa trên băm, bao gồm một cột XML
CREATE TABLE sales (
orderid
INT NOT NULL,
personid
INT,
salesdate
DATE,
details
XML)
DISTRIBUTE BY HASH (orderid)
Việc tìm kiếm toàn văn bản của dữ liệu của các bảng phân đoạn dựa trên băm bằng cách sử dụng
công cụ tìm kiếm Net Search Extender (NSE) bây giờ đã có sẵn để sử dụng.
Sử dụng phân đoạn theo dải để cuộn vào và cuộn ra dữ liệu theo dòng
thời gian
Một yêu cầu thường xuyên đối với kho dữ liệu và môi trường kinh doanh thông minh là duy trì một
lịch sử cuốn chiếu của dữ liệu chọn lựa trong một chu kỳ thời gian đã cho. Ví dụ, một công ty muốn
duy trì lịch sử cuốn chiếu bán hàng trong thời kỳ 5 năm để các nhà phân tích kinh doanh có thể
Nâng cao tính thấu đáo nghiệp vụ và khả năng mở rộng của dữ
liệu XML với các đặc tính pureXML của DB2 phiên bản mới 9.7
Trang 8 của 19
ibm.com/developerWorks/vn/
developerWorks®
truy cập thông tin về mua hàng và đánh giá xu hướng kinh doanh mới xuất hiện. Trong kịch bản
như vậy, dữ liệu cũ có thể cần phải được thanh lọc hoặc được lưu trữ trên cơ sở theo tháng hoặc
theo quý (cuộn ra), và các dữ liệu mới có thể cần phải được nạp theo các khung thời gian tương tự
(cuộn vào).
Phân đoạn theo dải đáp ứng yêu cầu quản trị này, và DB2 9.7 mở rộng hỗ trợ trước đó cho công
nghệ này để bao gồm cả các dữ liệu XML. Phân đoạn theo dải — đôi khi được gọi là phân đoạn
bảng — là phân đoạn một bảng dựa trên dải các giá trị được chứa trong một hoặc nhiều cột. Thông
thường thì khóa phân đoạn dựa trên thời gian, dẫn đến một thiết kế hướng dữ liệu của một tuần,
tháng hoặc quý đã cho, được lưu trữ trong một phân đoạn nhất định. Bởi vì mỗi phân đoạn được
coi như là một đối tượng cơ sở dữ liệu riêng biệt, nên các quản trị viên có thể dễ dàng cuộn vào
(gắn thêm) dữ liệu mới hoặc cuộn ra (tháo bỏ) dữ liệu cũ. Ngoài ra, nhiều truy vấn có được hiệu
năng thời gian chạy thi hành ưu việt vì DB2 tự động tránh truy xuất dữ liệu trong các phân đoạn
không liên quan đến các yêu cầu của người sử dụng.
Hình 5 minh hoạ một môi trường DB2 mẫu, phân đoạn dữ liệu trong bảng Sales (bán hàng) theo
quý.
Hình 5. Trong môi trường phân đoạn theo dải, DB2 chỉ nhằm vào các phân đoạn
cần thiết để đáp ứng yêu cầu của người sử dụng
Việc quản lý một bảng phân đoạn theo dải bao gồm một hoặc nhiều cột XML không khác nhiều
so với việc quản lý bảng phân đoạn theo dải chỉ với các cột quan hệ. Đặc biệt là các câu lệnh SQL
trước đây được hỗ trợ để tạo và thay đổi các bảng để phân đoạn theo dải cũng như gắn thêm và
tháo bỏ các phân đoạn vẫn áp dụng được. Thêm nữa, các khóa phân đoạn vẫn còn phải dựa vào dữ
liệu quan hệ.
Liệt kê 3 tạo ra bảng phân đoạn theo dải với các dữ liệu quan hệ và dữ liệu XML, cuộn ra (tháo bỏ)
một phân đoạn chứa dữ liệu cũ ra, và cuộn vào (gắn thêm) một phân đoạn chứa dữ liệu mới nhập.
Liệt kê 3. Sử dụng phân đoạn theo dải với pureXML của DB2
-- Create a range-partitioned table
Nâng cao tính thấu đáo nghiệp vụ và khả năng mở rộng của dữ
liệu XML với các đặc tính pureXML của DB2 phiên bản mới 9.7
Trang 9 của 19
developerWorks®
ibm.com/developerWorks/vn/
CREATE TABLE salespart (
orderid
INT,
orderdate
DATE,
ordermonth INT NOT NULL GENERATED ALWAYS AS (month(orderdate)),
orderyear
INT NOT NULL GENERATED ALWAYS AS (year(orderdate)),
customerid INT,
salesrepid INT,
details
XML)
PARTITION BY RANGE (orderyear, ordermonth)
(PART q109 STARTING(2009, 1) ENDING (2009, 3) INCLUSIVE,
PART q209 ENDING (2009, 6) INCLUSIVE,
PART q309 ENDING (2009, 9) INCLUSIVE,
PART q409 ENDING (2009, 12) INCLUSIVE);
-- Insert or load data for 1Q – 4Q 2009 sales into the table
. . .
-- Create another table to contain new sales data to be attached
CREATE TABLE currentsales (
orderid
INT,
orderdate
DATE,
ordermonth INT NOT NULL GENERATED ALWAYS AS (month(orderdate)),
orderyear
INT NOT NULL GENERATED ALWAYS AS (year(orderdate)),
customerid INT,
salesrepid INT,
details
XML) ;
-- Insert or load new sales data for 1Q 2010 into the "currentsales" table
. . .
-- Attach a new partition for the 1Q 2010 sales data.
-- Perform an integrity check for index maintenance, range checking, etc.
ALTER TABLE salespart ATTACH PARTITION q110
STARTING (2010, 1) ENDING (2010, 3) INCLUSIVE
FROM TABLE currentsales ;
SET INTEGRITY FOR salespart IMMEDIATE CHECKED;
-- Detach the partition containing old sales data from 1Q 2009
ALTER TABLE salespart DETACH PARTITION q109 INTO OLDSALES;
Việc tìm kiếm toàn văn bản của dữ liệu của bảng phân đoạn theo dải bằng cách sử dụng công cụ tìm
kiếm Net Search Extender (NSE) bây giờ đã có sẵn để sử dụng.
Sử dụng phân cụm nhiều chiều để thực hiện truy vấn
Việc phân cụm nhiều chiều cho các bảng chứa dữ liệu XML là một tùy chọn mới cho việc thiết kế cơ
sở dữ liệu. Các bản phát hành trước chỉ hỗ trợ khả năng này cho các bảng không có cột XML. Việc
phân cụm nhiều chiều có thể đặc biệt hữu ích cho các ứng dụng phân tích, thường đưa ra các truy
vấn bao trùm dữ liệu được chứa trong nhiều cột.
Ta lấy ví dụ, một ứng dụng phân tích có thể yêu cầu các thông tin bán hàng được chứa trong một
bảng sự việc lớn phải được lấy ra theo sản phẩm, theo vùng địa lý và theo ngày (ba chiều). Để hỗ trợ
truy vấn như vậy, quản trị viên có thể sử dụng phân cụm nhiều chiều để chỉ dẫn cho DB2 tổ chức
các hàng về mặt vật lý trong bảng SALES theo các chiều đó. Vì các hàng liên quan đến bán hàng
cho cùng một sản phẩm trong cùng một vùng địa lý và cùng một khoảng thời gian sẽ cùng nằm
trong một hoặc nhiều khối dữ liệu, nên thiết kế này sẽ giúp giảm việc vào/ra dữ liệu và cải thiện hiệu
suất thời gian chạy thi hành của các truy vấn đa chiều. Ngoài ra, việc phân cụm nhiều chiều cũng có
thể cải thiện hiệu năng của việc sắp xếp lại, chèn và xóa dữ liệu.
Nâng cao tính thấu đáo nghiệp vụ và khả năng mở rộng của dữ
liệu XML với các đặc tính pureXML của DB2 phiên bản mới 9.7
Trang 10 của 19
ibm.com/developerWorks/vn/
developerWorks®
Với DB2 phiên bản 9.7, thì các bảng có chứa các cột XML có thể tham gia vào phân cụm nhiều
chiều, miễn là các chiều dùng để phân cụm được định nghĩa bởi các cột quan hệ. Tại các phiên bản
trước, các quản trị viên sử dụng mệnh đề ORGANIZE BY DIMENSION (…) của câu lệnh CREATE TABLE
để chỉ rõ việc phân cụm nhiều chiều. Liệt kê 4 tạo ra một bảng có phân cụm nhiều chiều các dữ liệu
về bán hàng theo sản phẩm, vùng địa lý và thời gian.
Liệt kê 4. Tạo một bảng cho dữ liệu quan hệ và dữ liệu XML, sử dụng phân cụm
nhiều chiều
CREATE TABLE salesMDC (
id
INT,
product
VARCHAR(25),
region
VARCHAR(25),
time
DATE,
details
XML)
ORGANIZE BY (product, region, time)
Khám phá việc nén dữ liệu XML và chỉ mục để đạt hiệu quả lưu trữ và
hiệu năng
Việc nén dữ liệu XML và các chỉ mục XML có thể cải thiện hiệu quả lưu trữ và hiệu năng chạy thi
hành của các truy vấn, bị giới hạn bởi số lần vào/ra dữ liệu. DB2 phiên bản 9.7 cung cấp các tùy
chọn mới trong cả hai lĩnh vực.
Nén dữ liệu XML có thể được thực hiện theo hai cách:
• Các tài liệu XML nhỏ, chiếm ít hơn 32KB không gian lưu trữ có thể được nằm nội tuyến
(inlined) ngay trong bảng cùng với bất kỳ dữ liệu quan hệ nào có mặt trong cùng hàng đó, và
toàn bộ hàng có thể được nén. Khả năng xử lý dữ liệu nằm nội tuyến này, được đưa vào DB2
phiên bản 9.5, vẫn là một tùy chọn có ích.
• Các tài liệu XML có dung lượng lớn hơn, cư trú trong một khu vực dữ liệu tách biệt với dữ liệu
quan hệ, cũng có thể được nén. Theo mặc định, DB2 lưu dữ liệu XML tại một nơi riêng biệt
được gọi là Vùng dữ liệu XML (XML Data Area - XDA) để xử lý các tài liệu có dung lượng lên
đến 2GB. Khả năng nén dữ liệu XML lưu trữ trong XDA được đưa thêm vào trong phiên bản
mới của DB2.
Trong DB2 phiên bản 9.7, khả năng nén dữ liệu XML được kích hoạt đơn giản chỉ cần thông qua
mệnh đề COMPRESS YES của câu lệnh CREATE TABLE câu lệnh này nén cả hai loại cột quan hệ và cột
XML có trong bảng. Để đạt được kết quả nén tốt nhất, DB2 sử dụng hai bộ từ điển nén riêng biệt,
một cho các cột quan hệ và một cho vùng dữ liệu XML của bảng. Cả hai từ điển này được tự động
tạo ra sau khi bảng đã có các dữ liệu lên đến một vài megabyte. Ngoài ra, bạn có thể sửa đổi một
bảng để bật cho phép nén, sau đó bạn có thể tổ chức lại nó để nén dữ liệu.
Các kiểm thử đầu tiên được tiến hành tại IBM cho thấy việc nén dữ liệu XML được lưu giữ tại vùng
dữ liệu XML thường cho kết quả là tiết kiệm được 60-80 phần trăm không gian đĩa, như tại hình 6.
Nâng cao tính thấu đáo nghiệp vụ và khả năng mở rộng của dữ
liệu XML với các đặc tính pureXML của DB2 phiên bản mới 9.7
Trang 11 của 19
developerWorks®
ibm.com/developerWorks/vn/
Hình 6. Nén dữ liệu XML lưu trữ trong XDA có thể tiết kiệm được 60-80 phần trăm
không gian đĩa
Hình 6 cho thấy kết quả của IBM, thử nghiệm sáu bộ dữ liệu khác nhau được cung cấp bởi khách
hàng hoặc có sẵn trong khu vực công cộng. Những bộ dữ liệu này bao gồm các tài liệu có các kích
cỡ khác nhau từ 2KB đến 100MB.
Mức độ mà dữ liệu XML có thể được nén phụ thuộc vào cấu trúc và độ phức tạp của một tài liệu
đã cho cũng như các yếu tố khác, do đó, trải nghiệm của bạn có thể khác với kết quả thử nghiệm
đã hiển thị. Bạn có thể truy vấn khung nhìn quản trị SYSIBMADM.ADMINTABCOMPRESSINFO để
xác định mức độ mà một bảng đã được nén. Liệt kê 5 cho thấy khi truy vấn khung nhìn này sẽ tạo
ra các thông tin về tỷ lệ phần trăm của không gian đĩa tiết kiệm được khi nén dữ liệu quan hệ và dữ
liệu XML, một cách tương ứng, như thế nào.
Liệt kê 5. Khám phá việc nén dữ liệu quan hệ và dữ liệu XML
SELECT tabname, object_type, pages_saved_percent
FROM sysibmadm.admintabcompressinfo
WHERE tabname = 'SALES';
TABNAME
-------SALES
SALES
OBJECT_TYPE PAGES_SAVED_PERCENT
----------- ------------------DATA
69
XML
73
2 record(s) selected.
Việc nén dữ liệu làm giảm nhu cầu về không gian đĩa, điều này thường dẫn đến giảm số lần vào/ra
(I/O) đĩa và tăng tỷ lệ đọc bộ nhớ đệm (vì các trang được nén cho phép lưu trữ sẵn nhiều dữ liệu
hơn). Trong nhiều trường hợp, hiệu suất đạt được do giảm I/O và việc sử dụng bộ nhớ tốt hơn là cao
hơn so với các chu trình CPU cần dùng thêm để nén và giải nén dữ liệu.
Công nghệ mới trong DB2 9.7 cũng cho phép nén chỉ mục quan hệ và chỉ mục XML. Đúng vậy, các
chỉ mục được tạo ra trên các bảng nén chính chúng cũng được tự nén theo mặc định. Hoặc bạn có
thể sử dụng mệnh đề COMPRESS [YES|NO] của câu lệnh CREATE INDEX để lựa chọn một chỉ mục có
được nén hay không một cách độc lập với việc nén một bảng. Tương tự với việc nén dữ liệu, các chỉ
mục được nén giảm số lần vào/ra vật lý và tăng tỷ lệ đọc bộ nhớ đệm, điều này thường dẫn đến có
Nâng cao tính thấu đáo nghiệp vụ và khả năng mở rộng của dữ
liệu XML với các đặc tính pureXML của DB2 phiên bản mới 9.7
Trang 12 của 19
ibm.com/developerWorks/vn/
developerWorks®
lợi ròng về hiệu năng. Một hàm bảng mới (SYSPROC.ADMIN_GET_INDEX_COMPRESS_INFO) cho phép
quản trị viên xác định việc tiết kiệm trang cho chỉ mục được nén và ước lượng tỷ lệ tiềm năng tiết
kiệm được nếu các chỉ mục không nén được thay đổi để nén chúng lại.
Hiểu biết các hàm do người sử dụng định nghĩa để tăng tính linh hoạt
của ứng dụng
Trong một thời gian DB2 đã cho phép các nhà phát triển ứng dụng tạo các hàm do người dùng
định nghĩa, các hàm này có thể được gọi ra từ các truy vấn hoặc các câu lệnh SQL khác. Việc tạo
ra các hàm như thế khuyến khích việc tái sử dụng mã và đơn giản hoá sự phát triển các truy vấn
bằng cách kết hợp mã cho các nhu cầu chung (nhiều khả năng là rất phức tạp) vào chỉ một mô đun
để nhiều nhà phát triển có thể truy cập được. Thay vì mã hóa thủ công các hoạt động ấy vào các
truy vấn khác nhau, các nhà phát triển có thể chỉ cần gọi hàm từ truy vấn cần đến hàm đó.
DB2 phiên bản 9.7 hỗ trợ các loại dữ liệu XML với hàm do người dùng định nghĩa. Các thông số
đầu vào và đầu ra có thể là kiểu XML, và các hàm do người dùng định nghĩa được viết bằng SQL
có thể bao gồm các biến XML và các câu lệnh SQL/XML.
Viết các hàm do người dùng định nghĩa làm việc với XML không khác với việc viết các hàm do
người dùng định nghĩa làm việc với các loại dữ liệu quan hệ. Các hàm có thể được mã hoá để trả
lại một giá trị duy nhất (đối với các các hàm vô hướng) hay nhiều giá trị (đối với các hàm bảng).
Các hàm bảng có thể đặc biệt hữu ích nếu bạn cần phải trích ra và trả lại các phần tử từ một tài liệu
XML, chẳng hạn một chuỗi gồm số điện thoại hoặc địa chỉ email của một khách hàng đã cho.
Hai ví dụ ngắn trên minh họa việc tạo và gọi ra các hàm do người dùng định nghĩa làm việc với dữ
liệu XML đơn giản như thế nào. Liệt kê 6 tạo ra một hàm vô hướng trích ra một phần tử XML đã
cho từ một tài liệu đầu vào và cho thấy cách mà hàm này có thể được gọi ra trong một truy vấn
SQL đơn giản để trả lại tên của một khách hàng đã chọn. (Ký tự "#" được sử dụng ở đây là kết thúc
câu lệnh.)
Liệt kê 6. Tạo và gọi ra một hàm vô hướng do người dùng định nghĩa làm việc với
dữ liệu XML
--- Create the user-defined scalar function called "getname"
CREATE FUNCTION getname(doc XML)
RETURNS VARCHAR(25)
BEGIN ATOMIC
RETURN XMLCAST(XMLQUERY('$d/customerinfo/name'
PASSING doc AS "d")
AS VARCHAR(25));
END #
-- Invoke the "getname" scalar function and inspect the result
SELECT getname(info) AS name
FROM customer
WHERE cid = 1002 #
NAME
------------------------Jim Noodle
1 record(s) selected.
Nâng cao tính thấu đáo nghiệp vụ và khả năng mở rộng của dữ
liệu XML với các đặc tính pureXML của DB2 phiên bản mới 9.7
Trang 13 của 19
developerWorks®
ibm.com/developerWorks/vn/
Việc tạo một hàm bảng trả lại nhiều giá trị không khó khăn hơn. Liệt kê 7 tạo ra một hàm bảng trả
lại các thông tin về các số điện thoại cho mỗi khách hàng được chứa trong tài liệu XML đã được
cung cấp. Hàm này có thể dễ dàng được gọi ra từ một truy vấn SQL đơn giản.
Liệt kê 7. Tạo và gọi ra một hàm bảng do người sử dụng định nghĩa làm việc với dữ
liệu XML
-- Create the user-defined table function called "getname"
CREATE FUNCTION getphone(doc XML)
RETURNS TABLE(type VARCHAR(10), number VARCHAR(20))
BEGIN ATOMIC
RETURN
SELECT type, number
FROM XMLTABLE('$d/customerinfo/phone' PASSING doc AS "d"
COLUMNS
type
VARCHAR(10) PATH '@type',
number VARCHAR(20) PATH '.') ;
END #
--- Invoke the "getphone" table function and inspect the result
SELECT cid, p.type, p.number
FROM customer, TABLE(getphone(info)) p
WHERE cid = 1004 #
CID
---------------1004
1004
TYPE
---------work
home
NUMBER
-------------------905-555-4789
416-555-3376
2 record(s) selected.
Tất nhiên, DB2 tiếp tục hỗ trợ việc sử dụng kiểu dữ liệu XML trong các thủ tục được lưu sẵn, đây là
một khả năng đã được cung cấp lần đầu tiên tại bản phát hành trước đó.
Khám phá thêm các cải tiến về quản trị, phát triển ứng dụng và hiệu
năng
Các công nghệ pureXML khác trong DB2 9.7 cung cấp nhiều hỗ trợ hơn cho việc quản lý cơ sở dữ
liệu, việc đơn giản hoá phát triển ứng dụng và cải thiện hiệu năng khi chạy thi hành. Phần này của
bài viết giới thiệu cho bạn những tính năng bổ sung đó.
Phân tích XML nội tuyến
Hai hàm mới được hệ thống cung cấp cho phép quản trị viên phân tích nội tuyến tài liệu XML nhỏ.
Một hàm là SYSPROC.ADMIN_IS_INLINED, cho phép quản trị viên xác định xem DB2 đã có khả năng
nhập vào nội tuyến các tài liệu XML hay không dựa vào độ dài nội tuyến tối đa được xác định khi
tạo bảng (hoặc sửa đổi bảng). Hàm kia là SYSPROC.ADMIN_EST_INLINE_LENGTH, cho phép quản trị
viên ước tính chiều dài nội tuyến tối thiểu, cần phải được xác định để cho phép DB2 lưu trữ một tài
liệu XML đã cho trên cùng một trang với dữ liệu quan hệ trong một hàng. Các đặc tính này có thể
giúp các quản trị viên tinh chỉnh thiết kế của cơ sở dữ liệu vật lý của họ.
Liệt kê 8 cho thấy cách sử dụng các hàm mới này của DB2 như thế nào.
Nâng cao tính thấu đáo nghiệp vụ và khả năng mở rộng của dữ
liệu XML với các đặc tính pureXML của DB2 phiên bản mới 9.7
Trang 14 của 19
ibm.com/developerWorks/vn/
developerWorks®
Liệt kê 8. Phân tích dữ liệu XML nội tuyến với các hàm mới của DB2
-- Create the customer table with a maximum inline
-- length of 1000 bytes for XML data
CREATE TABLE customer(id int, xmlcol XML INLINE LENGTH 1000);
--- Insert or LOAD some data into the table
INSERT INTO customer VALUES (…);
. . .
-- Query the table using two new DB2 functions
-- for analyzing XML inlining
SELECT id, ADMIN_IS_INLINED(info) AS inlined,
ADMIN_EST_INLINE_LENGTH(info) AS inline_length
FROM customer;
------
Inspect the result set.
"1" in the second column indicates that the XML was inlined.
"0" in the second column indicates that the XML was not inlined.
"-1" in the third column indicates that the XML is too big
to be inlined with the current page size.
ID
INLINED INLINE_LENGTH
------- -------- ------------1000
1
770
1001
0
2345
1002
1
796
1003
0
1489
1004
0
1910
1005
0
-1
-- Inlined. Uses approx 770 bytes
-- Not inlined. Inline size of at least 1489 needed
-- Too large to be inlined for the given page size
Liệt kê 8 mô tả cách tạo một bảng với một cột XML nội tuyến, ở đây các tài liệu XML được lưu trữ
ngay trong hàng quan hệ nếu chúng không chiếm hơn 1000 byte, trái lại chúng sẽ được lưu trữ
ngoại tuyến tại vùng dữ liệu XML (XDA). Sau khi chèn số dữ liệu vào bảng, ta gọi ra hai hàm mới để
xác định (a) tài liệu XML trong một hàng có phải là nội tuyến hay không và (b) chiều dài ước tính
của tài liệu XML trong hàng hiện tại mà sẽ cho phép tài liệu được nội tuyến.
Tạo và sắp xếp lại các chỉ mục XML trực tuyến
Trong các phiên bản trước của DB2, việc tạo ra hoặc sắp xếp lại một chỉ mục trên dữ liệu XML
không cho phép các thao tác chèn, cập nhật, hoặc xóa, làm thay đổi các dữ liệu trong bảng, trong
khi chỉ mục đang được xây dựng. Các cải tiến mới trong DB2 loại bỏ hạn chế này, cho phép sự linh
hoạt hơn và tránh làm chậm trễ hoặc làm dừng ứng dụng khi cần phải tạo ra hoặc sắp xếp lại một
chỉ mục XML. Kết quả là, DB2 làm tăng tính sẵn sàng để sử dụng của dữ liệu cho ứng dụng.
Với DB2 9.7, việc tạo ra chỉ mục XML cho phép các hoạt động viết đồng thời theo mặc định, giống
như việc tạo ra các chỉ mục quan hệ. Khi sắp xếp lại các chỉ mục XML, quản trị viên cơ sở dữ liệu có
thể sử dụng mệnh đề ALLOW WRITE ACCESS trong câu lệnh REORG INDEXES để cho phép các thao tác
viết đồng thời trên bảng.
Phân rã nhiều tài liệu XML
Các phiên bản mới của DB2 mở rộng các tiện ích được xây dựng sẵn để phân rã (hoặc chia nhỏ)
dữ liệu làm việc với nhiều tài liệu XML. Các bản phát hành DB2 trước cho phép một tài liệu XML
đầu vào cho mỗi hoạt động phân rã. Trong bản phát hành mới của DB2, một thủ tục được lưu sẵn
Nâng cao tính thấu đáo nghiệp vụ và khả năng mở rộng của dữ
liệu XML với các đặc tính pureXML của DB2 phiên bản mới 9.7
Trang 15 của 19
developerWorks®
ibm.com/developerWorks/vn/
mới do hệ thống cung cấp là (XDB_DECOMP_XML_FROM_QUERY) lấy một bảng DB2 hiện có làm đầu vào,
cho phép các quản trị viên phân rã dữ liệu được chứa trong một cột cho trước. Đối với các thiết kế
cơ sở dữ liệu có yêu cầu chia nhỏ một số hoặc toàn bộ nội dung của dữ liệu XML, thì việc gọi thủ
tục được lưu sẵn này có thể đặc biệt hữu ích sau khi nạp một số lượng lớn dữ liệu XML hay BLOB.
Cũng như các phiên bản trước, các phương tiện phân tách của DB2 dựa trên một lược đồ XML có
chú giải để ánh xạ các thuộc tính XML và phần tử XML tới những cột cụ thể của bảng quan hệ.
Lấy ra các chẩn đoán về hiệu lực của lược đồ XML
Thủ tục được lưu sẵn do hệ thống cung cấp, XSR_GET_PARSING_DIAGNOSTICS, cung cấp cho các lập
trình viên các thông tin chẩn đoán chi tiết về bất kỳ lỗi nào được phát hiện khi DB2 phân tích một
tài liệu XML hoặc xác nhận hợp lệ một tài liệu XML dựa vào một lược đồ XML. Khả năng này, lần
đầu tiên được đưa vào DB2 phiên bản 9.5, Fix Pack 3, có thể giúp các lập trình viên xác định các
khu vực có vấn đề và sửa chữa tài liệu XML khi cần thiết.
Nếu một tài liệu XML được tạo ra không đúng hoặc không hợp lệ đối với một lược đồ XML đã cho,
thì bạn hãy gọi thủ tục XSR_GET_PARSING_DIAGNOSTICS với một tài liệu, và theo tùy chọn, bạn sử
dụng lược đồ XML làm đầu vào. Thủ tục tạo ra thông tin chi tiết về lỗi, bao gồm:
• Số dòng và cột của vị trí lỗi trong tài liệu XML dạng văn bản
• Một XPath trỏ đến vị trí lỗi trong tài liệu
• Các thông báo lỗi gốc, mã lý do và bất kỳ mã thông báo của lỗi ứng dụng nào
Sử dụng bảng tạm thời toàn cục
Hỗ trợ mới để đưa các cột XML vào các bảng tạm thời toàn cục đã khai báo xứng đáng để ta nói
về một chút về nó, bởi vì nó có thể giúp các lập trình viên cải thiện hiệu suất trong khi chạy thi hành
của các ứng dụng của họ. Bảng tạm thời toàn cục được khai báo cho phép lập trình viên lấy ra dữ
liệu mà họ sẽ sử dụng thường xuyên trong các ứng dụng của mình, ghi nhớ sẵn (cache) chúng trong
một bảng tạm thời và thao tác các dữ liệu nhiều lần lặp đi lặp lại trong các lần ứng dụng của họ.
Việc khóa lại và đăng nhập được giảm thiểu, và nội dung của bảng được xóa khi lần làm việc chấm
dứt.
Cải thiện truy cập của SQL vào dữ liệu XML
Công nghệ tối ưu hóa truy vấn trong DB2 9.7 mang lại hiệu quả tăng lên cho việc xử lý các truy vấn
đối với các khung nhìn quan hệ của dữ liệu XML. DB2 tự động sử dụng công nghệ này khi thích
hợp, do đó, các lập trình viên không cần phải làm gì mà vẫn có được các lợi ích về hiệu năng thời
gian chạy thi hành tiềm năng.
DB2 9.7 khuyến khích việc sử dụng các chỉ mục XML để xử lý truy vấn đối với khung nhìn quan hệ
của các dữ liệu XML. Để hiểu được điều này làm việc như thế nào, ta hãy thực hiện một ví dụ nhỏ.
Liệt kê 9 tạo ra một bảng của dữ liệu về nhân viên với một cột XML. Liệt kê cũng tạo ra một chỉ
mục XML theo số hiệu văn phòng của nhân viên, các mục này có thể xuất hiện là các phần tử XML
trong hồ sơ của nhân viên. Cuối cùng, nó tạo ra một khung nhìn trích ra và hiển thị ID của nhân
viên, tên, họ và số văn phòng, như là các cột quan hệ.
Nâng cao tính thấu đáo nghiệp vụ và khả năng mở rộng của dữ
liệu XML với các đặc tính pureXML của DB2 phiên bản mới 9.7
Trang 16 của 19
ibm.com/developerWorks/vn/
developerWorks®
Liệt kê 9. Tạo một bảng, chỉ mục XML và khung nhìn quan hệ
-- Create a table with an XML column.
CREATE TABLE emp(doc XML);
-- Create an XML index on the table.
CREATE INDEX officeIdx ON emp(doc) GENERATE KEYS USING
XMLPATTERN '/dept/employee/office' AS SQL VARCHAR(20);
-- Create a relational view of the XML data managed by the table.
CREATE VIEW emp_rel_view(id, first_name ,last_name ,office) AS
SELECT X.* FROM emp,
XMLTABLE ('$d/dept/employee' passing doc as "d"
COLUMNS
empID
INTEGER
PATH '@id',
firstname VARCHAR(5) PATH 'name/first',
lastname
VARCHAR(5) PATH 'name/last',
office
INTEGER
PATH 'office') AS X;
Bây giờ ta hãy xem xét các lệnh SQL trong liệt kê 10 truy vấn khung nhìn để chọn ID và tên của tất
cả các nhân viên thuộc văn phòng R344.
Liệt kê 10. Truy vấn một khung nhìn với các tiêu chí lọc (một vị từ truy vấn)
SELECT id, first_name
FROM emp_rel_view
WHERE office = 'R344';
Vị từ trong mệnh đề WHERE ràng buộc cột quan hệ office , mà khung nhìn sẽ ánh xạ với đường dẫn /
dept/employee/office ở cột XML. Công nghệ tối ưu mới trong DB2 phiên bản 9.7 cho phép DB2
sử dụng một cách tự động chỉ mục officeIdx của XML được định nghĩa tại cột XML nằm ở dưới
để xử lý truy vấn này. Việc sử dụng chỉ mục XML thích hợp sẽ cải thiện hiệu suất thời gian chạy thi
hành.
Các ứng dụng không hiểu dữ liệu XML một cách trực tiếp, chẳng hạn như rất nhiều công cụ báo
cáo kinh doanh, có thể có lợi từ các views đó và từ công nghệ của DB2 9.7, công nghệ này đôi khi
được gọi là kỹ thuật đẩy xuống được xác nhận (predicate pushdown). Tính năng tối ưu hóa này
cho phép các ứng dụng truy vấn dữ liệu XML một cách hiệu quả thông qua một giao diện quan hệ
truyền thống với các truy vấn SQL.
Kết luận
Với DB2 9.7, IBM tiếp tục mở rộng công nghệ DB2 pureXML theo những hướng đi quan trọng. Các
khả năng này bao gồm các tuỳ chọn thiết kế mới của cơ sở dữ liệu, cung cấp khả năng mở rộng và
cải tiến hiệu suất cho cả hai loại ứng dụng: phân tích và hướng giao dịch. Khả năng hỗ trợ nén mới
cho dữ liệu XML và các chỉ mục làm giảm các yêu cầu về không gian đĩa và có thể cải thiện hiệu
suất thời gian chạy thi hành của các hoạt động vào/ra ( I/O-bound operations). Hỗ trợ cho XML tại
các hàm do người dùng định nghĩa và các bảng chung tạm thời được khai báo cung cấp những
thuận lợi cho việc phát triển ứng dụng mới. Cuối cùng, các hàm mới do hệ thống cung cấp các thủ
tục được lưu trữ đơn giản hóa việc thiết kế cơ sở dữ liệu và các nỗ lực bảo trì.
Lời cảm ơn
Xin cám ơn Henrik Loeser và Susan Malaika đã đóng góp cho bài viết này.
Nâng cao tính thấu đáo nghiệp vụ và khả năng mở rộng của dữ
liệu XML với các đặc tính pureXML của DB2 phiên bản mới 9.7
Trang 17 của 19
developerWorks®
ibm.com/developerWorks/vn/
Tài nguyên
Học tập
• Tham khảo cuốn sách đỏ (Redbook®) của IBM về DB2 9 pureXML: Tổng quan và bắt đầu
nhanh của các tác giả Cynthia M. Saracco, Don Chamberlin, và Rav Ahuja để xem phần giới
thiệu cơ bản về DB2 pureXML.
• Đọc bài báo của IBM Các cách làm thực tế tốt nhất - Quản lý dữ liệu XML của các tác giả
Matthias Nicola và Susanne Englert để giúp thực hiện cơ sở dữ liệu pureXML và các ứng
dụng một cách hiệu quả.
• Đọc sách DB2 pureXML Cookbook (IBM Press) của các tác giả Matthias Nicola và Pav
Kumar Chatterjee để có các hướng dẫn toàn diện về công nghệ pureXML DB2 cho tất cả các
nền tảng được hỗ trợ.
• Xem các đặc tính phân đoạn của DB2: Tổng quan về kho dữ liệu của Paul McInerney để đọc
bài giới thiệu về phân đoạn dựa vào băm, phân đoạn theo dải, phân cụm nhiều chiều của DB2.
• Xem trang DB2 pureXML wiki để có tập hợp các liên kết đển các phần trình diễn, tải miễn phí,
tài liệu kỹ thuật và nhiều hơn nữa.
• Tìm hiểu thêm về quản lý thông tin tại vùng Quản lý thông tin của developerWorks. Tìm tài liệu
hướng dẫn kỹ thuật, các bài viết “làm thế nào”, đào tạo, tải về, thông tin sản phẩm và nhiều
hơn nữa.
• Theo dõi sát các sự kiện kỹ thuật và phát tin trên Web của developerWorks.
Lấy sản phẩm và công nghệ
• Nghe bản tin dài 11 phút Cindy Saracco nói về pureXML và thế hệ tiếp theo của DB2 để biết
thêm thông tin về DB2 9.7.
• Tải miễn phí các gói phần mềm bắt đầu nhanh DB2 pureXML cho các định dạng XML đặc thù
công nghiệp, chẳng hạn như FIXML, FpML, ACORD, CDISC, UNIFI và các định dạng khác.
• Tìm hiểu về công nghệ sắp tới của DB2 thông qua các chương trình truy cập sớm DB2.
• Xây dựng dự án phát triển kế tiếp của bạn với phần mềm dùng thử của IBM, có sẵn để tải trực
tiếp từ developerWorks.
Thảo luận
• Xem blog của cơ sở dữ liệu XML nguyên sinh.
• Xem trang developerWorks blogs và dành tâm trí cho cộng đồng developerWorks.
Nâng cao tính thấu đáo nghiệp vụ và khả năng mở rộng của dữ
liệu XML với các đặc tính pureXML của DB2 phiên bản mới 9.7
Trang 18 của 19
ibm.com/developerWorks/vn/
developerWorks®
Đôi nét về các tác giả
Matthias Nicola
Matthias Nicola người lãnh đạo kỹ thuật về hiệu năng cơ sở dữ liệu XML tại Silicon
Valley Lab của IBM. Công việc của ông tập trung vào tất cả các lĩnh vực về hiệu năng
XML trong DB2, bao gồm XQuery, SQL/XML và tất cả các tính năng XML nguyên sơ
trong DB2. Matthias Nicola cộng tác chặt chẽ với các đội phát triển XML DB2 cũng
như với các khách hàng và các đối tác kinh doanh, là những người đang sử dụng
XML, hỗ trợ họ trong việc thiết kế, triển khai thực hiện và tối ưu hóa các giải pháp
XML. Trước khi gia nhập IBM, Matthias làm việc với hiệu năng kho dữ liệu cho Informix
Software. Ông cũng đã có bốn năm làm việc trong các dự án nghiên cứu và các dự án
công nghiệp trên cơ sở dữ liệu phân tán và nhân bản. Ông nhận bằng tiến sĩ khoa học
máy tính vào năm 1999 ở Đại học Kỹ thuật Aachen, Đức.
Cynthia M. Saracco
Cynthia M. Saracco là kiến trúc sư giải pháp cao cấp tại Phòng thí nghiệm ở Thung
lũng Silicon của IBM, bà chuyên về các công nghệ mới xuất hiện và các chủ đề quản
lý cơ sở dữ liệu. Bà có 23 năm kinh nghiệm về công nghiệp phần mềm, đã viết 3 cuốn
sách và hơn 60 tài liệu kỹ thuật và có 7 bằng sáng chế.
© Copyright IBM Corporation 2009
(www.ibm.com/legal/copytrade.shtml)
Nhẫn hiệu đăng ký
(www.ibm.com/developerworks/vn/ibm/trademarks/)
Nâng cao tính thấu đáo nghiệp vụ và khả năng mở rộng của dữ
liệu XML với các đặc tính pureXML của DB2 phiên bản mới 9.7
Trang 19 của 19