Các kỹ năng của Kiến trúc sư dữ liệu Rational, Phần 2: Tạo các truy vấn SQL/XML với Kiến trúc sư dữ liệu Rational Chuyển đổi dữ liệu từ các nguồn dữ liệu quan hệ thành định dạng XML Tor
Trang 1Các kỹ năng của Kiến trúc sư dữ liệu Rational, Phần 2: Tạo các truy vấn SQL/XML với Kiến trúc sư dữ liệu Rational
Chuyển đổi dữ liệu từ các nguồn dữ liệu quan hệ thành định dạng XML
Torsten Bittner, Kỹ sư phần mềm, IBM
Tóm tắt: Bạn có thể sử dụng ngôn ngữ truy vấn SQL/XML để chuyển đổi dữ liệu
quan hệ thành định dạng XML Vì tự tay viết các truy vấn SQL/XML rất tốn công, Kiến trúc sư dữ liệu Rational® của IBM® làm đơn giản hoá công việc này bằng cách tự động tạo ra các truy vấn SQL/XML dựa trên các ánh xạ được định nghĩa bằng đồ họa Hãy tìm hiểu sơ bộ về thành phần tạo SQL/XML của Kiến trúc sư dữ liệu Rational
Trước khi bạn bắt đầu
Hãy tìm hiểu cách làm thế nào để sử dụng Kiến trúc sư dữ liệu Rational để tạo truy vấn SQL/XML trong DB2® cho Linux®, UNIX® và Windows® Ngôn ngữ truy vấn SQL/XML trích ra dữ liệu từ các nguồn quan hệ và chuyển đổi nó thành định dạng XML
Về hướng dẫn này
Hướng dẫn này cho bạn thấy, từng bước một, làm thế nào để:
• Định nghĩa bằng đồ họa một mô hình ánh xạ giữa một mô hình cơ sở dữ liệu quan hệ là nguồn và một định nghĩa lược đồ XML là đích
• Tạo một truy vấn SQL/XML dựa trên mô hình ánh xạ này
• Thực hiện truy vấn SQL/XML và phân tích kết quả
Trang 2• Định nghĩa các phép nối giữa nhiều cột nguồn
• Thêm các chức năng chuyển đổi cho mô hình ánh xạ
Thay đổi tên sản phẩm
Ngày 16 tháng 12 năm 2008 IBM đã thông báo rằng kể từ phiên bản 7.5.1, Kiến trúc sư Dữ liệu Rational được đổi tên thành Kiến trúc sư Dữ liệu InfoSphere
(InfoSphere Data Architect) để đề cao vai trò của nó trong các công cụ nền
InfoSphere
Hướng dẫn này giả thiết bạn đã biết rõ về các cơ sở dữ liệu quan hệ, tốt nhất là DB2 ® Bạn cũng nên có một sự hiểu biết tốt về các tiêu chuẩn XML và XSD Kiến thức cơ bản về ngôn ngữ truy vấn SQL/XML là bắt buộc Kiến thức cơ bản
về Kiến trúc sư Dữ liệu Rational cũng rất có ích, nhưng không bắt buộc (Tham khảo bài viết "Sử dụng Kiến trúc sư Dữ liệu Rational để tích hợp các nguồn dữ liệu" (developerWorks, 03.2006) và một phần của loạt bài viết này, " Truy cập và
Trang 3tích hợp các siêu dữ liệu doanh nghiệp với Kiến trúc sư Dữ liệu Rational"
(developerWorks, 06.2006), để tham khảo)
Về đầu trang
Các yêu cầu về hệ thống
Để thực hiện các bước được mô tả trong hướng dẫn này, cần có Kiến trúc sư Dữ liệu Rational 6.1 và DB2 đã cài đặt Bạn có thể tải về phiên bản dùng thử của Kiến trúc sư Dữ liệu Rational 6.1 của IBM (xem Tài nguyên) và DB2 V8.2 (xem Tài nguyên)
Setup steps
1 Cài đặt DB2 V8.2
2 Cài đặt Rational Data Architect V6.1
3 Giải nén gói RDA_SQLXML.zip vào trong một thư mục (ví dụ,
C:\RDA_Tutorials) Bước này tạo ra thư mục RDA_SQLXML
4 Khởi động Kiến trúc sư Dữ liệu Rational và chỉ định thư mục nơi bạn đã giải nén gói phần mềm làm thư mục cho vùng làm việc của bạn (ví dụ, C:\RDA_Tutorials)
5 Thư mục RDA_SQLXML trong gói phần mềm là một thư mục dự án của Kiến trúc sư Dữ liệu Rational Trong Kiến trúc sư Dữ liệu Rational bạn phải nhập khẩu nó vào trong vùng làm việc của bạn Từ trình đơn File,
chọn Import
6 Chọn Existing Project trong trình thủ thuật Workspace
Trang 58 Nhấn vào Finish Kết quả là bạn thấy dự án RDA_SQLXML với một tập
hợp các mô hình dữ liệu, các lược đồ XSD và các tệp mô hình ánh xạ trong vùng làm việc của bạn
Hình 3 Trình thám hiểm dự án dữ liệu (Data Project Explorer) sau khi nhập khẩu dự án
Trang 69 Bây giờ bạn cần dữ liệu mẫu cho cơ sở dữ liệu quan hệ Các dữ liệu sẽ được sử dụng để điền dữ liệu vào cá thể tài liệu XML được tạo ra Dữ liệu này sẽ được trích ra từ cơ sở dữ liệu quan hệ và được chèn vào trong cá thể tài liệu XML trong khi thực hiện truy vấn SQL/XML Tệp kịch bản lệnh rda_sqlxml_db.sql tạo ra một cơ sở dữ liệu thư viện (LIBRARY) của DB2
và chèn vào một bộ các dữ liệu mẫu Hãy triển khai kịch bản lệnh trong cơ
sở dữ liệu DB2 của bạn Hãy khởi động cửa sổ lệnh của DB2 (trình đơn
Start > IBM DB2 > Command Line Tools > Command Window)
10 Chuyển tới thư mục mà bạn đã giải nén tệp RDA_SQLXML.zip
11 Chạy lệnh này: db2 -tvf rda_sqlxml_db.sql Điều này sẽ tạo ra cơ sở dữ liệu LIBRARY, định nghĩa khóa chính và khóa ngoài và chèn thêm các dữ liệu mẫu
Trang 7Hình 4 Tạo cơ sở dữ liệu LIBRARY
12 Kết nối tới cơ sở dữ liệu LIBRARY trong Kiến trúc sư Dữ liệu Rational
Trong Database Explorer, nhấn chuột phải vào Connection và chọn New Connection (Note: (Lưu ý: Nếu bạn không nhìn thấy Database Explorer,
hãy chắc chắn rằng bạn đang ở trong phối cảnh dữ liệu - Data Perspective, như hiển thị trong Hình 6 dưới đây)
Hình 5 Tạo kết nối cơ sở dữ liệu mới
Hình 6 Phối cảnh dữ liệu
13 Chỉ rõ các thông tin kết nối theo môi trường của bạn, tương tự như Hình 7
Trang 8Hình 7 Các giá trị thiết lập kết nối cơ sở dữ liệu
14 Nhấn vào Test Connection để kiểm tra xem tất cả các tham số được đặt đúng chưa Nếu thử nghiệm thành công, hãy nhấn Finish
Trang 9Tổng quan kịch bản và mô tả vấn đề
Kịch bản này có liên quan tới hệ thống cơ sở dữ liệu thư viện trường học mới, được giới thiệu trong hướng dẫn " Truy cập và tích hợp siêu dữ liệu doanh nghiệp với Kiến trúc sư Dữ liệu Rational" Trong hướng dẫn này, một hệ thống thư viện mới được thiết kế dựa trên hai hệ thống hiện có: thư viện của trường học và thư viện của quận Santa Clara Với mục đích kiểm toán nhà trường muốn theo dõi quá trình lịch sử của các cuốn sách được cho mượn Hội đồng thư viện đã quyết định duy trì tính độc lập với các nhà cung cấp cơ sở dữ liệu bằng cách lưu trữ dữ liệu theo dạng XML tiêu chuẩn hóa
Để trích ra dữ liệu XML từ một cơ sở dữ liệu quan hệ, bạn có thể sử dụng ngôn ngữ truy vấn SQL/XML SQL/XML là một ngôn ngữ tiêu chuẩn ANSI và ISO để truy cập và quản lý dữ liệu được lưu giữ trong cơ sở dữ liệu quan hệ Cú pháp của
nó được định nghĩa theo tiêu chuẩn SQL2003
Thông thường, cấu trúc các tài liệu XML được mô tả bằng cách sử dụng Định nghĩa lược đồ XML Một tài liệu XML tuân theo một XSD cũng gọi là một cá thể tài liệu XML
Một truy vấn SQL/XML cũng định nghĩa cấu trúc của cá thể tài liệu XML cũng như các bảng và các cột (nguồn dữ liệu) được sử dụng để điền dữ liệu vào cá thể tài liệu XML ấy Theo tinh thần đó, các SQL/XML sao đúp lại chính xác các thông tin về định dạng kết quả đầu ra của cá thể tài liệu, chứa trong các XSD (XSD đích) Vì vậy, các truy vấn SQL/XML kết hợp thông tin về cấu trúc tài liệu
và định nghĩa nguồn dữ liệu Sự kết hợp này làm cho các truy vấn SQL/XML phức tạp Nếu lược đồ cơ sở dữ liệu hay lược đồ cá thể tài liệu XML hay cả hai có chứa nhiều thực thể, việc viết bằng tay các truy vấn SQL/XML thường nặng nề và
dễ xảy ra lỗi
Trang 10Kiến trúc sư Dữ liệu Rational làm đơn giản hoá việc tạo các truy vấn SQL/XML bằng cách cung cấp cho người dùng một trình soạn thảo ánh xạ Trình soạn thảo ánh xạ thường dùng để định nghĩa bằng đồ họa các ánh xạ từ một cơ sở dữ liệu quan hệ là nguồn đến một Định nghĩa lược đồ XML là đích Các ánh xạ được diễn giải bởi một thành phần tạo truy vấn để tạo ra một truy vấn SQL/XML Áp dụng truy vấn này đối với một cơ sở dữ liệu nguồn sẽ trích ra dữ liệu quan hệ từ cơ sở
dữ liệu và tạo ra dữ liệu cho cá thể tài liệu XML theo cấu trúc được XSD đích định nghĩa
Trình soạn thảo ánh xạ cũng cho phép ánh xạ từ nguồn dữ liệu quan hệ tới đích dữ liệu quan hệ Trong kịch bản này, các thông tin ánh xạ được diễn giải để tạo ra một truy vấn SQL để chuyển đổi dữ liệu Có thể tìm thấy nhiều thông tin hơn nữa về việc tạo SQL trong hướng dẫn " Truy cập và tích hợp các siêu dữ liệu doanh
nghiệp với Kiến trúc sư dữ liệu Rational."
Trang 11Tạo một mô hình ánh xạ đơn giản
Trong phần này, hãy tạo một mô hình ánh xạ Định nghĩa lược đồ nguồn dữ liệu quan hệ và lược đồ XSD đích và tạo các ánh xạ giữa các cột nguồn và các phần tử XML đích Sau đó, sử dụng các ánh xạ này để tạo ra một truy vấn SQL/XML Tạo ra một mô hình ánh xạ mới
1 Chuyển đến phối cảnh Data
2 Trong trình duyệt Data Project, nhấn chuột phải vào thư mục Mappings trong cây và chọn New > Mapping Model
Hình 8 Mô hình ánh xạ mới (New Mapping Model)
3 Trong trình thủ thuật Mapping Editor, chỉ rõ tên tệp là Student.msl
Hình 9 Trình thủ thuật của mô hình ánh xạ mới
Trang 124 Nhấn Next Nhấn Add để chỉ rõ một mô hình nguồn Chọn mô hình cơ sở
dữ liệu của thư viện mới system.dbm làm nguồn ánh xạ
Hình 10 Chọn mô hình nguồn ánh xạ
Trang 135 Nhấn OK Nhấn Next trong trình thủ thuật soạn thảo ánh xạ Hãy đảm bảo
chắc chắn rằng lược đồ school được chọn làm lược đồ nguồn
Hình 11 Chọn lược đồ nguồn ánh xạ
Trang 146 Nhấn Next Nhấn the Browse để định rõ tài liệu XSD Student.xsd làm tài liệu đích Nhấn OK Hãy bảo đảm chắc chắn rằng lược đồ students đã được
chọn làm lược đồ đích
Hình 12 Chọn lược đồ đích ánh xạ
7 Nhấn Next và kiểm tra các giá trị thiết lập của nguồn và đích trong phần
tóm tắt mô hình ánh xạ (mapping model summary)
Hình 13 Tóm tắt mô hình ánh xạ
Trang 158 Nhấn Finish Bây giờ bạn có thể thấy trình soạn thảo ánh xạ với các lược
đồ nguồn và đích được chọn
Về đầu trang
Thêm các ánh xạ vào mô hình ánh xạ
1 Bây giờ hãy thêm một số ánh xạ Chọn phần tử cột STUDENTID trong
phần tử bảng STUDENT ở phía nguồn Ở phía đích, nhấn chuột phải vào
phần tử XML Student_ID và chọn Create Mapping từ trình đơn ngữ cảnh
Điều này tạo ra một đường ánh xạ màu xanh dương với một ô nhỏ ở giữa Đường ánh xạ này luôn luôn trỏ từ phần tử nguồn đến phần tử đích
Trang 16Hình 14 Định nghĩa một ánh xạ đơn lẻ
2 Sử dụng cùng phương pháp để tạo ra các ánh xạ từ cột NAME trong bảng STUDENT đến phần tử XML Name
Trang 17Tạo ra truy vấn SQL/XML
1 Nhấn vào nút Generate Script trên thanh công cụ
Hình 15 Tạo nút kịch bản lệnh
2 Khi bạn được hỏi lưu trữ các tài nguyên, hãy nhấn OK để lưu trữ các thay
đổi của bạn với mô hình ánh xạ Các thay đổi không lưu trữ sẽ không được xem xét trong quá trình tạo truy vấn SQL/XML
3 Trong trang đầu tiên của trình thủ thuật tạo kịch bản lệnh (Generate Script Wizard), chấp nhận tất cả các giá trị mặc định, bao gồm tên tệp Student.sql
và nhấn vào Next Trang tóm tắt hiển thị một trang xem trước truy vấn và
một danh sách các đối tượng được tạo ra để thêm vào mô hình cơ sở dữ liệu, nếu có
Trang 18Hình 16 Tóm tắt của trình thủ thuật tạo kịch bản lệnh
4 Nhấn Finish
Trang 19Thực hiện truy vấn SQL/XML đã tạo ra
1 Mở truy vấn Student.sql đã tạo ra bằng trình soạn thảo SQL
Hình 17 Mở kịch bản lệnh SQL/XML bằng trình soạn thảo SQL
2 Nhấn chuột phải vào trong cửa sổ văn bản của trình soạn thảo SQL và chọn
Run SQL
Hình 18 Chạy kịch bản lệnh SQL/XML
Trang 203 Từ danh sách các kết nối hiện có, chọn kết nối LIBRARY (Lưu ý: Bạn có
thể phải nhấn vào nút Kết nối lại (Reconnect), nếu bạn trước đó đã ngắt kết nối từ cơ sở dữ liệu)
Hình 19 Lựa chọn kết nối cơ sở dữ liệu cho việc thực hiện truy vấn
SQL/XML
Trang 214 Nhấn Finish Kết quả của truy vấn hiển thị trong khung nhìn Kết quả dữ
liệu (Data Output) được đặt ở góc dưới bên phải Nhấn vào nút có hình e lip
( ) bên cạnh <students>
Hình 20 kết quả thực hiện truy vấn SQL/XML
Trang 225 Điều này mở ra dữ liệu XML được trích từ cơ sở dữ liệu quan hệ
LIBRARY (Lưu ý: Nếu nội dung của tài liệu XML bị cắt bớt trước khi kết
thúc tài liệu, hãy tăng giá trị tùy chọn ưa thích (preference) dành cho các
byte cực đại để lấy ra một cột LOB) Đi tới trình đơn Window >
Preferences Chuyển đến thể loại Data, sau đó tới Output và thay đổi giá trị thành 5000 Nhấn vào OK Chạy lại kịch bản lệnh
Hình 21 Thực hiện truy vấn SQL/XML sinh ra dữ liệu XML
Trang 23Hình 22 Thiết lập các thông số cài đặt trang ưa thích dành cho các byte lớn nhất
6 Dữ liệu XML được trả về từ cơ sở dữ liệu không chứa bất kỳ các ngắt dòng nào Điều này làm cho tài liệu khó đọc hơn Bạn có thể sử dụng nút "Lưu như" (Save as) để lưu dữ liệu XML trong một tệp và định dạng nó bằng cách sử dụng một trình soạn thảo văn bản Đối với hướng dẫn này, một tệp kết quả XML có định dạng đúng được cung cấp cùng với
Ref_Student_result.xml.Lưu ý: Kết quả XML được trả về từ cơ sở dữ liệu
không phải là một tài liệu XML đúng khuôn dạng vì nó thiếu thẻ XML cần thiết <?xml version=1.0> ở đoạn đầu
Xem tệp kết quả Ref_Student_result.xml, ta nhận thấy rằng mỗi phần tử học sinh (student) có chứa phần tử XML Email rỗng Lý do của việc này là ở chỗ trong
Trang 24Student.xsd của XSD, phần tử Email được định nghĩa là bắt buộc, nhưng trong trình soạn thảo ánh xạ không có cột nguồn nào đã được định nghĩa cho phần tử Email Trong phần kế tiếp, hãy xem làm thế nào để ngăn chặn điều này
Trang 25Sửa đổi lược đồ XML đích
Chúng ta hãy sửa đổi Student.xsd để làm cho phần tử EMail là tùy chọn và tạo lại các truy vấn SQL/XML
1 Mở lược đồ XML Student.xsd bằng trình soạn thảo văn bản
Figure 23 Open Student.xsd with text editor
2 Sửa đổi Student.xsd, như được hiển thị trong Hình 24 (thêm vào thuộc tính minOccurs="0" đối với phần tử EMail) Sau đó, lưu trữ nó, thay thế cho tệp ban đầu
Hình 24 Sửa đổi Student.xsd
Trang 263 Chuyển về trình soạn thảo ánh xạ của Student.msl Bạn sẽ nhận được thông
báo rằng mô hình XSD đích đã thay đổi Nhấn vào Yes để nạp lại trình
soạn thảo ánh xạ với lược đồ đã cập nhật Lưu ý rằng rằng bây giờ Email có một ký hiệu [0,1] kèm theo nó, biểu thị rằng nó là tùy chọn
Hình 25 Phần tử XML EMail bây giờ là tùy chọn
4 Tạo lại truy vấn và đặt tên tệp là Student_optional.sql
5 Thực hiện truy vấn Mở dữ liệu XML kết quả Lưu ý rằng phần tử Email không hiển thị nữa
Trang 27Phép nối dữ liệu
Truy vấn SQL/XML được định nghĩa trong ví dụ đầu tiên khá đơn giản Để khai thác thêm nhiều khả năng mà SQL/XML cung cấp, hãy nối dữ liệu bằng cách sử dụng ví dụ sau
1 Tạo ra một mô hình ánh xạ mới (như được hiển thị trong Hình 8)
2 Một cách nhanh hơn để chỉ rõ một mô hình nguồn và đích ánh xạ là thêm chúng vào mô hình bằng cách sử dụng kéo và thả Trong trang đầu tiên của trình thủ thuật soạn thảo ánh xạ, hãy nhập tên tệp là
Student_BookLoans.msl và nhấn Finish
Hình 26 Mô hình ánh xạ mới Student_BookLoans.msl
Trang 283 Bây giờ bạn thấy trình soạn thảo ánh xạ với một bảng nguồn và đích rỗng, hãy kéo tệp tin thư viện mới system.dbm từ thư mục Data Models trong Data Project Explorer và thả nó vào trong ô nguồn
4 Kéo tệp Student_BookLoans.xsd từ thư mục XML Schemas trong Data Project Explorer và thả nó vào trong ô đích
Trang 295 Tạo các ánh xạ từ cột STUDENTID trong bảng STUDENT đến phần tử XML Student_ID, cột NAME trong bảng STUDENT đến phần tử XML Name và cột BOOKID trong bảng BOOK_LOANS đến phần tử XML BookID
Hình 27 Toàn bộ ánh xạ Student_BookLoans.msl
6 Tạo ra truy vấn SQL/XML và lưu trữ nó thành tệp Student_BookLoans.sql
7 Thực hiện truy vấn
Xem kết quả Ref_Student_BookLoans.xml (Listing 1), lưu ý rằng các giá trị
BookID đã chứa trong mỗi phần tử student tương ứng với các BookID của bảng BOOK_LOANS Điều này cho thấy dữ liệu đã được kết nối đúng giữa bảng
STUDENT và bảng BOOK_LOANS, tạo ra một danh sách các học sinh và các sách đã mượn tương ứng của họ Lưu ý rằng tên các học sinh Jessica Wong và Rose Zuniga xuất hiện hai lần Điều này là do cả hai trong số họ mượn hai cuốn sách
Trang 30Listing 1 Kết quả dữ liệu XML từ truy vấn SQL/XML