XML và thông tin theo yêu cầu

Gần đây, chúng ta thường nghe đến khái niệm “thông tin theo yêu cầu.” Thông tin theo yêu cầu được hiểu theo nghĩa hệ thống thông tin của tổ chức phải đáp ứng được mọi yêu cầu của người dùng, từ lãnh đạo đến cán bộ nghiệp vụ; từ thông tin thống kê, dự báo đến thông tin chi tiết phục vụ hoạt động hằng ngày… Các thông tin này phải được đáp ứng nhanh theo mọi thay đổi đến từ bên ngoài tổ chức, như thay đổi luật lệ, thay đổi mặt hàng hay phương thức kinh doanh, hành động của các hãng cạnh tranh…

Để thực hiện được thông tin theo yêu cầu, ngành công nghệ thông tin (CNTT) trên thế giới đã chuyển phần mềm ứng dụng từ kiến trúc dựa trên dự án sang kiến trúc hướng đến dịch vụ (SOA).

Ứng dụng hướng dự án là việc thực hiện các ứng dụng tương đối độc lập với nhau. Ví dụ, ứng dụng quản lý tài sản riêng với ứng dụng quản lý tài chính, ứng dụng quản lý nhân sự riêng với ứng dụng nghiệp vụ… Các ứng dụng được xây dựng với ban quản lý dự án riêng, làm đầy đủ các việc từ thiết kế, xây dựng đến mua sắm thiết bị triển khai… Sau một thời gian, các ứng dụng riêng biệt đã phát huy tác dụng. Tuy nhiên, có một yêu cầu nảy sinh và là nhu cầu của mọi tổ chức, đó là tích hợp các ứng dụng đó lại thành một thể thống nhất. Bản thân tổ chức là một thể thống nhất, có làm như vậy mới đáp ứng được yêu cầu tổng hợp của kinh doanh, phản ứng nhanh trước các biến động của thị trường, của các đối thủ cạnh tranh…

Như vậy, muốn xây dựng hệ thống “thông tin theo yêu cầu”, việc làm quan trọng nhất là phải tích hợp được các ứng dụng riêng lẻ. Các ứng dụng này có thể chạy trên các nền tảng khác nhau, viết bằng các ngôn ngữ lập trình khác nhau, đưa vào sử dụng tại các thời điểm khác nhau. Nếu số lượng các ứng dụng này ít, người ta sẽ chỉnh sửa để chúng “nói chuyện” được với nhau. Nhưng trên thực tế công việc này không đơn giản, thậm chí là không thể làm được. Vậy đâu là lối thoát cho nhu cầu tích hợp các ứng dụng ? Đó chính là kiến trúc hướng đến dịch vụ.

Kiến trúc hướng đến dịch vụ là kiến trúc lấy các dịch vụ làm hạt nhân. Dịch vụ là các ứng dụng đã được “phân rã” đến mức là đơn vị nhỏ nhất cung cấp thông tin (thế nào là nhỏ nhất tùy thuộc vào người thiết kế). Để thực hiện một công việc nhất định, người ta sẽ lắp ghép hàng loạt các dịch vụ theo một trình tự nào đó. Khi quy trình công việc thay đổi, chỉ cần sắp xếp lại trình tự thực hiện các dịch vụ đó (thậm chí người sử dụng có thể tự mình quyết định trình tự thực hiện các dịch vụ đó như thế nào cho công việc của mình, mà không cần nhờ đến các chuyên viên CNTT, nhờ vào các công cụ sẵn có).

Đặc điểm của kiến trúc hướng đến dịch vụ là:

- Nó là việc liên hệ lỏng giữa các hệ thống, không phụ thuộc vào nhau.
- Độc lập nền tảng và ngôn ngữ.
- Sử dụng lại hạ tầng công nghệ sẵn có, do đó nó đơn giản, chi phí rẻ.
- Được nhiều hãng công nghiệp hỗ trợ (IBM, Microsoft, SAP, Oracle…).
- Mọi thứ đều dựa trên Web services/XML và các chuẩn công nghiệp khác.

Đã có khái niệm “các dịch vụ”, như vậy sẽ có nơi cung cấp các dịch vụ (là nguồn cung cấp thông tin) và nơi sử dụng các dịch vụ đó (các chức năng nghiệp vụ). Vậy làm thế nào để sử dụng được các dịch vụ đó? Cũng giống như chương trình chính gọi các hàm hay chương trình con để hoàn thành một thủ tục, cũng có khái niệm gọi dịch vụ. Đến đây lại xuất hiện dịch vụ Web (Web Service) và các chuẩn liên quan. Nói một cách chung nhất, dịch vụ Web là một cách chuẩn hóa để gọi hàm trên mạng mà không cần biết hàm này nằm ở đâu, chạy trên nền tảng hệ điều hành nào, viết bằng ngôn ngữ gì.

Việc gọi dịch vụ được tiến hành bằng cách gửi thông điệp, nơi yêu cầu dịch vụ gửi thông điệp yêu cầu thông tin đến nơi cung cấp dịch vụ, nơi cung cấp gói kết quả vào một thông điệp và gửi trả về cho nơi yêu cầu. Các ứng dụng tích hợp với nhau bằng cách gửi thông điệp hỏi và trả lời, mà không cần quan tâm làm thế nào để có câu trả lời ấy. Do vậy, các ứng dụng trên nền tảng khác nhau, ngôn ngữ khác nhau… muốn tích hợp được đều phải hiểu chung nhau ngôn ngữ thông điệp. Ngôn ngữ để viết các thông điệp đó là chuẩn “ngôn ngữ đánh đấu mở rộng” (XML - eXtensible Markup Language).

Có một cách đơn giản nhất để hiểu XML là so sánh nó với HTML. HTML là ngôn ngữ đánh dấu trang siêu văn bản, được sử dụng nhằm mục đích “trình bày” dữ liệu. Nghĩa là dữ liệu sẽ được nhìn thấy như thế nào trên trình duyệt của người sử dụng. Trong khi đó thì XML nhằm mục đích nói “Nội dung” đấy là gì. Dưới đây là một số khái niệm chính của ngôn ngữ XML.

- Là chuẩn để mô tả ý nghĩa của dữ liệu, dữ liệu này là gì. Ví dụ, cũng là một đoạn văn bản nhưng sử dụng XML, ta biết được đâu là họ, đâu là tên; với một dãy số thì biết được đó là giá tiền hay số lượng...
- Các thẻ trong XML chưa được định nghĩa sẵn từ trước, ta có thể tự định nghĩa được các thẻ.
- Độc lập về công nghệ, không phụ thuộc vào phần cứng và hệ điều hành cũng như các phần mềm khác nhau.
- XML có thể kết nối với các ứng dụng viết bằng các ngôn ngữ khác.

Đến thời điểm này, có thể thấy rất nhiều tài liệu được định dạng bằng ngôn ngữ XML, từ các tệp cấu hình, các văn bản, bảng tính… Mục đích là để các hệ thống khác nhau có thể khai thác được các tài liệu này một cách dễ dàng. Trong trường hợp của kiến trúc hướng đến dịch vụ, nó là ngôn ngữ để các ứng dụng “nói chuyện” với nhau.

Vì bài viết này liên quan đến cơ sở dữ liệu, mà tài liệu XML cũng là dữ liệu, nên ta đề cập kỹ hơn một chút về nó. Tài liệu XML là dữ liệu bán cấu trúc (mô hình phân cấp hay mô hình cây) và tuần tự (so với dữ liệu quan hệ là tập hợp có cấu trúc), kiểu của dữ liệu XML là một lựa chọn trong khi kiểu trong mô hình quan hệ là bắt buộc, chuẩn của nó do W3C quy định, còn mô hình quan hệ do ANSI/ISO quy định.


Hình 1. Biểu diễn XML và quan hệ của hai bản ghi

Trên hình 1, ta thấy các dòng trên bảng không có thứ tự được đặt trước (dựa trên lý thuyết tập hợp), còn trên XML là có thứ tự. Bảng có cấu trúc, các hàng có cùng số cột, còn XML thì không nhất thiết (hồ sơ thứ nhất có số điện thoại, hồ sơ thứ hai không có) (Hình 1).

Như vậy, đã thấy tầm quan trọng của hệ thống “thông tin theo yêu cầu”. Để xây dựng hệ thống này, cần đến sự tích hợp các ứng dụng đã có và ứng dụng mới. Nhưng để tích hợp ứng dụng, phải dựa trên “kiến trúc hướng đến dịch vụ”. Và để xây dựng được kiến trúc hướng đến dịch vụ thì dịch vụ Web (và các chuẩn) và XML là các công nghệ nền tảng. Chính vì XML có vị trí quan trọng như vậy nên trên thực tế việc phải có cơ sở dữ liệu cho XML là một vấn đề mà nhiều doanh nghiệp quan tâm (với các tính năng, yêu cầu cao của một hệ quản trị cơ sở dữ liệu). Có ba cách đã được sử dụng để lưu trữ và tìm kiếm hồ sơ XML, sau đây ta sẽ điểm qua ba cách đó.

Cơ sở dữ liệu hỗ trợ XML (XML-enable)


Hình 2. Hai lựa chọn để lưu trữ dữ liệu XML trong cơ sở dữ liệu hỗ trợ XML

Hai cách đầu thuộc nhóm này, một cơ sở dữ liệu hỗ trợ XML sẽ sử dụng mô hình quan hệ là mô hình chính để lưu trữ dữ liệu. Điều này cần sự ánh xạ giữa mô hình dữ liệu XML và mô hình dữ liệu quan hệ, hoặc là lưu trữ dữ liệu XML như là đối tượng lớn có thuộc tính kiểu Varchar/CLOB. Hình 2 giải thích chi tiết hơn hai lựa chọn cho cơ sở dữ liệu hỗ trợ XML. (Hình 2)

Hình bên trái cho thấy phương thức lưu trữ tài liệu XML trong cơ sở dữ liệu “CLOB và Varchar”. Tài liệu XML dùng phương thức này được lưu bằng cả ảnh CLOB và cột kiểu Varchar trong cơ sở dữ liệu. Phương thức này không linh hoạt bởi vì khó tìm được các phần tử bên trong của ảnh. Hiệu năng của nó cũng không cao vì các ảnh XML thường rất lớn, do đó tốn nhiều bộ nhớ (nó tiện lợi khi muốn lưu và lấy ra nguyên văn hồ sơ XML).

Lựa chọn thứ hai cho cơ sở dữ liệu hỗ trợ XML là phương thức phân rã, phương thức này được minh họa ở hình bên phải của hình 2. Toàn bộ tài liệu XML dùng phương thức này được phân rã thành nhiều phần (phần tử) rồi lưu trong các bảng. Sử dụng phương pháp này mô hình phân cấp của tài liệu XML bị chuyển thành mô hình quan hệ. Phương pháp này cũng không linh hoạt, một thay đổi trong tài liệu XML không dễ gì lan truyền đến các bảng tương ứng và có thể phải tạo nhiều bảng khác khi cần thiết. Phương thức này sẽ không có hiệu quả nếu bạn cần lấy lại tài liệu XML ban đầu.

Cơ sở dữ liệu thuần XML (pureXML)

Đây là cách thứ ba, cơ sở dữ liệu thuần XML sử dụng mô hình phân cấp của dữ liệu XML để lưu trữ và xử lý XML bên trong. Định dạng lưu trữ giống như định dạng xử lý, không có sự ánh xạ đến mô hình quan hệ, và không lưu các tài liệu XML thành dạng ảnh. Khi sử dụng các câu lệnh XPath hay XQuery, một cơ chế riêng sẽ xử lý các câu lệnh đó chứ không chuyển sang SQL. Đây là nguyên nhân tại sao gọi các cơ sở dữ liệu này là cơ sở dữ liệu thuần XML. Hiện tại, DB2 9 là cơ sở dữ liệu thương mại duy nhất cung cấp tính năng này.

Cơ sở dữ liệu DB2 9

Hệ quản trị cơ sở dữ liệu DB2 phiên bản 9 là cơ sở dữ liệu vừa hỗ trợ mô hình quan hệ, vừa hỗ trợ mô hình phân cấp. Nó được công bố năm 2006, và là cơ sở dữ liệu thương mại duy nhất (đến thời điểm này) hỗ trợ cả ba cách lưu trữ XML đã nói ở trên.

DB2 9 lưu dữ liệu XML vào một cột có kiểu XML, nó có bộ dịch để có thể xử lý các câu lệnh XQuery (là ngôn ngữ chuẩn để truy vấn tài liệu XML), làm việc được với các ngôn ngữ khác nhau Cobol, C, Java,… có thể lập chỉ mục với dữ liệu XML… Các ví dụ sau chứng tỏ sức mạnh của ngôn ngữ truy xuất dữ liệu

DB2 Express-C là ấn bản DB2 được dùng miễn phí, không hạn chế và dễ sử dụng. Chữ C trong DB2 Express-C là viết tắt của Community (cộng đồng). Cộng đồng DB2 Express-C bao gồm các cá nhân và các công ty thiết kế, phát triển, triển khai, hay sử dụng các giải pháp cơ sở dữ liệu.

DB2 9 làm thay đổi tổng quát cách mà thông tin XML được quản lý (lưu trữ, tìm kiếm và xử lý) đem lại hiệu quả cao trong việc tích hợp XML với cơ sở dữ liệu quan hệ. Nó cho phép đưa các dịch vụ dữ liệu lên một mức độ mới với chi phí rẻ hơn, thực hiện nhẹ nhàng hơn, và cải thiện việc kinh doanh một cách sâu sắc, làm cho DB2 9 trở thành một thành phần quan trọng của việc coi thông tin là một dịch vụ hạ tầng cơ sở công nghệ thông tin.

Thứ Hai, 10/03/2008 08:45
31 👨 870
0 Bình luận
Sắp xếp theo
    ❖ Kiến thức cơ bản