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

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.

Matthias Nicola, Chuyên gia về hiệu năng CSDL, IBM Silicon Valley Laboratory

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.


Cấp độ đóng góp cho developerWorks của
        tác giả

Cynthia M. Saracco, Kiến trúc giải pháp cao cấp, EMC

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ế.


Tác giả chuyên nghiệp của
        developerWorks

06 11 2009

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.

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:

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ệ.

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
DB2 9 architecture with built-in support for relational and XML data

Để 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 
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.

Hình 2. DB2 pureXML hoạt động như một kho dữ liệu vận hành tích hợp
DB2 pureXML as an integrated operational data store

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 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.
A relational data warehouse extended with XML data management capabilities. The fact table and all dimension tables can include XML columns, although this example shows only a one-dimension table with one XML column.

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 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
Sample DB2 architecture with hash-based partitioning, which allows for parallel processing of queries and other database operations

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ì.

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ể 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
In range-partitioned environments, DB2 targets only the necessary partitions to satisfy a user's request

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
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.

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.

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
Compressing XML data stored in the XDA can result in 60 to 80 percent disk space savings

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  OBJECT_TYPE PAGES_SAVED_PERCENT 
-------- ----------- ------------------- 
SALES    DATA                         69 
SALES    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ó 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.

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                TYPE       NUMBER
----------------   ---------- --------------------
            1004   work       905-555-4789
            1004   home       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.

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      -- Inlined. Uses approx 770 bytes
   1001        0          2345
   1002        1           796
   1003        0          1489      -- Not inlined. Inline size of at least 1489 needed 
   1004        0          1910
   1005        0            -1      -- 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 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ệ.

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.

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

Thảo luận

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Information Management, Nguồn mở
ArticleID=444918
ArticleTitle=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
publish-date=11062009