Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 102 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
102
Dung lượng
3,24 MB
Nội dung
Lập trìnhvớiXMLcho DB2, Phần 1: Hiểu biết mô hình dữ liệu XML Hardeep Singh, Kiến trúc sư các công nghệ nâng cao, IBM Tóm tắt: Một mục tiêu chính của XML là làm cho quá trình phát triển ứng dụng đơn giản, rẻ tiền, cơ động và có chất lượng cao. Việc lậptrìnhXML đang dẫn đến một loại biến chuyển cơ bản tương tự về mô hình phát triển ứng dụng trong thập kỷ này như là các phương pháp luận đối tượng đã làm trong thập kỷ qua. Trong bài đầu tiên của loạt bài này về lậptrình bằng XMLvới DB2® của IBM®cho Linux® UNIX® và Windows®, bạn sẽ học những điều cơ bản về mô hình dữ liệu XML và những ưu điểm mà nó mang lại cho môi trường lậptrình của bạn trên một mô hình đối tượng thuần túy. Mở đầu Một số trong những mục tiêu thiết kế choXML như đã nêu trong các khuyến nghị w3 xem xét khía cạnh phát triển ứng dụng của ngôn ngữ đó: "XML sẽ hỗ trợ một loạt các ứng dụng". "Thật dễ dàng viết các chương trình xử lý các tài liệu XML". Trong khi đã tập trung rất nhiều vào các mục tiêu khác nhau xung quanh việc dễ đọc, việc tuần tự hóa và vận chuyển, thì mục tiêu phát triển ứng dụng vẫn chưa tạo ra nhiều chú ý như vậy Bài viết đầu tiên của một loạt bài này giới thiệu tác động mà XML đem lại cho phát triển ứng dụng ở ba mức: Phần 1 trình bày trường hợp sử dụng XML trong việc phát triển ứng dụng với mục đích làm cho quá trình phát triển ứng dụng đơn giản, rẻ tiền, cơ Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com động và có chất lượng cao. Việc lậptrìnhXML sẽ dẫn đến một loại chuyển biến cơ bản tương tự về các mô hình phát triển ứng dụng trong thập kỷ này như là các phương pháp luận đối tượng đã làm trong thập kỷ qua. Phần 2 tập trung vào vai trò của cơ sở dữ liệu. Ở đây tập trung vào cả hai chức năng DB2 9 (tên mã ban đầu là Viper) và Viper 2. Bạn sẽ tìm hiểu: o Làm thế nào để môi trường lưu trữ và truy vấn XML mới chạy trong mô hình dữ liệu XML của tầng ứng dụng. o Một khi bạn sửa lại kiến trúc phát triển ứng dụng dựa trên XML mới, làm thế nào để các lược đồ cơ sở dữ liệu của bạn trở nên đơn giản hơn và tự nhiên hơn. o Làm thế nào để truy vấn dữ liệu XML trong cơ sở dữ liệu không khác so với truy vấn dữ liệu trong ứng dụng. o Cuối cùng, làm thế nào để kết hợp dữ liệu quan hệ với dữ liệu XML để có được mọi thứ tốt nhất của cả hai thế giới ấy. Phần 3 tập trung vào máy khách, đưa vào bức tranh các công nghệ XML được sử dụng trong các trình duyệt Web và máy chủ Web: Ajax, XSLT, SVG, Comet, các nguồn cung cấp và các ứng dụng kết hợp. Bạn sẽ tìm hiểu làm thế nào để các nguồn cung cấp và các dịch vụ Web được tạo ra trong cơ sở dữ liệu, được truy vấn và được kết hợp trong tầng ứng dụng và sau đó được trình bày trong các trình duyệt của máy khách. Bài viết thứ tư tập hợp tất cả các công nghệ này lại với nhau và cho thấy một ví dụ hoạt động đời sống thực. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Các vấn đề cơ bản về mô hình dữ liệu XML Lưu ý: Nếu dữ liệu của bạn đã theo định dạng XML, phần còn lại của quá trình này hoàn toàn tự nhiên và cực kỳ đơn giản. Nếu dữ liệu của bạn theo định dạng quan hệ, bạn vẫn có thể sử dụng phương pháp luận này, nhưng quá trình này đòi hỏi phải tạo ánh xạ dữ liệu quan hệ hai chiều đến dữ liệu XML. Có thể đạt được bước này bằng cách sử dụng các hàm SQL/XML để xuất bản và chia nhỏ. Hầu hết các cơ sở dữ liệu quan hệ hỗ trợ các hàm này bên cạnh các công nghệ ánh xạ khác. Ánh xạ dữ liệu quan hệ tới dữ liệu phân cấp (XML) có thể có vẻ không cần thiết với nhiều nhà phát triển chỉ vì lợi ích sử dụng XML làm mô hình dữ liệu trong việc phát triển ứng dụng của họ. Nhưng là các nhà phát triển, chúng ta thực hiện nó mọi lúc khi chúng ta ánh xạ mối quan hệ đến các đối tượng dữ liệu. Những lợi thế của việc sử dụng mô hình dữ liệu XML có thể là đủ hấp dẫn với nhiều nhà phát triển để xem xét việc sử dụng nó trong việc phát triển ứng dụng của họ, ngay cả khi không có nhu cầu về dữ liệu XML trong mô hình nghiệp vụ của họ. Theo truyền thống, XML đã được sử dụng để định nghĩa siêu dữ liệu cho các tài liệu nghiệp vụ. Mô hình đối tượng tài liệu (DOM) đã được sử dụng để xử lý siêu dữ liệu này trong một ứng dụng. Nếu chúng ta nhìn vào DOM, chúng ta sẽ thấy nó cung cấp một giao diện đối tượng theo cấu trúc dữ liệu XML phân cấp với các API của DOM đang được sử dụng để xử lý hệ thống phân cấp này. Nói cách khác, DOM có thể được sử dụng như một trình bao bọc (wrapper) đối tượng để xử lý bất kỳ cấu trúc dữ liệu nào có thể được biểu diễn bằng XML. Trong mô hình dữ liệu XML, bạn định nghĩa nhiều đối tượng dữ liệu ứng dụng của mình như là XML. Vì XML có phân cấp, nên thật dễ nắm bắt được mối quan Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com hệ giữa đối tượng dữ liệu khác nhau trong một định dạng tự nhiên, dễ đọc với con người. Một khi đã định nghĩa mô hình dữ liệu XML, có thể khởi tạo nó trong ứng dụng bằng cách sử dụng một trình phân tích cú pháp DOM. Để phân tách mã ứng dụng với các API của DOM thường dùng để tìm vị trí và xử lý mô hình XML, bạn có thể tạo ra một trình bao bọc xung quanh các lần triển khai thực hiện DOM và XPath. Trình bao bọc này cũng làm cho mã của bạn cơ động hơn. Tôi đã kèm theo một trình bao bọc Java làm ví dụ cho bài viết này để bạn có thể sử dụng như là ví dụ hoặc là một khuôn mẫu chotrình bao bọc riêng của bạn. Logic nghiệp vụ của ứng dụng này trực tiếp sử dụng mô hình XML bằng cách dùng các API của trình bao bọc. Có thể dễ dàng tuần tự hóa và chuyển dữ liệu XML đã sửa đổi giữa đối tượng khác nhau hoặc giữa các tầng khác nhau trong một môi trường nhiều tầng (SOA). Mô hình dữ liệu XML so với mô hình đối tượng dữ liệu Hầu hết các ứng dụng bao gồm các đối tượng nghiệp vụ sử dụng các hệ thống phân cấp của các đối tượng dữ liệu. Các đối tượng dữ liệu nói chung là các lớp bao gói mỏng xung quanh dữ liệu nghiệp vụ. Lý do tồn tại chính của chúng là để trưng ra dữ liệu được chứa đựng cho các đối tượng nghiệp vụ theo một cách có kiểm soát. Lợi ích khác của việc dùng các trình bao bọc đối tượng là chúng có thể trình bày dữ liệu được lưu trữ trong các bảng quan hệ theo một hệ thống phân cấp đối tượng tự nhiên để nắm bắt mối quan hệ giữa dữ liệu. Một phần quan trọng của nỗ lực mã hóa được dành để tạo các trình bao bọc đối tượng này xung quanh dữ liệu nghiệp vụ của các ứng dụng. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Do XML vốn đã duy trì mối quan hệ giữa các cấu trúc dữ liệu, nên yêu cầu để tạo ra một hệ thống phân cấp đối tượng riêng biệt để nắm bắt mối quan hệ giữa các cấu trúc dữ liệu riêng biệt là không thích hợp. Bên cạnh đó, XML đã có một mô hình đối tượng chuẩn được gọi là DOM (Mô hình đối tượng tài liệu). Các bước triển khai thực hiện mô hình này xử lý việc dựng, sửa đổi và tuần tự hóa dữ liệu XML. Nhờ sử dụng khôn ngoan ngôn ngữ XPath kết hợp với các API của DOM, thì việc tải, chỉnh sửa và lưu dữ liệu XML trong một ứng dụng nghiệp vụ chỉ là một công việc tầm thường. Một ví dụ hiển nhiên Để hiểu rõ hơn về những khác biệt trong hai mô hình, chúng ta hãy xem mỗi mô hình tác động như thế nào đến việc thiết kế và việc triển khai thực hiện ứng dụng. Khi sử dụng mã ví dụ, tôi sẽ minh họa hai cách tiếp cận bằng cách sử dụng một kịch bản đơn giản xử lý thông tin về khách hàng và thông tin về đơn hàng. Mô hình đối tượng dữ liệu Trong cách tiếp cận mô hình đối tượng dữ liệu, trước tiên bạn cần tạo các đối tượng trình bao bọc để chứa đựng các dữ liệu khách hàng và đơn hàng, như trong Liệt kê 1, Liệt kê 2 và Liệt kê 3. Liệt kê 1. Tạo khách hàng Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com public class Customer { int customerid; String firstname; String lastname; Items itemspurchased ; Public Customer (int custid, Connection conn) { Statement dbstmt= conn.createStatement(); ResultSet dbResult = dbstmt.executeQuery("select fname, lname from customer_table where customerid=custid"); customerid=custid; SetFirstName(dbResult.getString(1)); SetLastName(dbResult.getString(2)); } public String GetFirstName {return firstname;} Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com public Void SetFirstName (fname) {firstname=fname;} public String GetLastName {return lastname ;} public Void SetLastName (lname) {lastname=lname;} public Items GetItemsList {return itemspurchased; } public SetItemsList (list) { itemspurchased =list;} } Liệt kê 2. Tạo lớp các mặt hàng public class Items { Hashtable list=new Hashtable(); Public Items(int custid,Connection conn) { Statement dbstmt= conn.createStatement(); ResultSet dbResult = dbstmt.executeQuery("select itemid, description, Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com price, date from purchase_table where customerid=custid") While (dbResult.rs.next ()) { tempitem = new Item(); tempitem.SetID(dbResult. getString(1)); tempitem. SetDescription (dbResult. getString(2)); tempitem. Setprice (dbResult. getFloat(3)); tempitem. SetpurchaseDate (dbResult. getString(4)); Additem (tempitem); } } public void AddItem (item oneitem) {list.put(oneitem.GetID(),oneitem);} public Item GetItem (ItemID) {return list.get(String itemID);} public Hashtable GetItems(){return list;} public Items FindItemByPrice (flaot min, float max) { Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Items retList=new Items(); for (Enumeration e=list.elements () ; e.hasMoreElements() ; ) { item tmpItem=(item)e.nextElement(); float price= tmpItem .GetPrice(); if(price >= min && price <=max) { retList.AddItem(tmpItem); } } } public Items FindItemByDate (purchaseDate) { } } Liệt kê 3. Tạo định nghĩa mặt hàng public class Item Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com { String id; String description; String purchaseDate; Float price; Public void SetID (String ItemID) {id= ItemID;} Public void SetDescription (String desc) { description = desc;} Public void SetpurchaseDate (String pDate) { purchaseDate = pDate ;} Public void Setprice (float pprice { price = pprice ;} Public String GetID (){return id;} Public String GetDescription(){return description;} Public float GetPrice(){return price;} } Bây giờ đối tượng dữ liệu có thể được sử dụng trong ứng dụng để quản lý dữ liệu bên dưới. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com [...]... sở dữ liệu XML Mặc dù hầu hết các cơ sở dữ liệu quan hệ chính đều có một số hỗ trợ cho XML, nhưng sự hỗ trợ của pureXML DB2choXML là mạnh mẽ và hiệu quả hơn nhiều, làm cho nó trở thành một cơ sở dữ liệu lý tưởng để thử nghiệm mô hình lập trìnhXML Trong bài này tôi tập trung vào cách để khai thác sự hỗ trợ đã cải tiến này của cơ sở dữ liệu choXML trong kiến trúc ứng dụng của bạn DB2cho phép bạn... dữ liệu Một ví dụ hiển nhiên Các lợi ích của việc sử dụng một mô hình XML trên một mô hình đối tượng thuần túy Các vấn đề và các giải pháp thích ứng với mô hình XML Kết luận Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Lập trìnhvớiXMLcho DB2, Phần 2: Phát huy sự hỗ trợ của cơ sở dữ liệu choXML trong kiến trúc ứng dụng của bạn Hardeep Singh, Kiến trúc sư các công... dữ liệu XML từ phần 1 Nó cho thấy rằng một khi bạn thích ứng với kiến trúc phát triển ứng dụng dựa trên XML mới, thì các lược đồ cơ sở dữ liệu của bạn trở nên đơn giản hơn nhiều và tự nhiên hơn như thế nào Nó cũng cho thấy cách truy vấn dữ liệu XML trong cơ sở dữ liệu không khác với cách truy vấn dữ liệu trong ứng dụng Cuối cùng, nó cho bạn thấy cách kết hợp các dữ liệu quan hệ với các dữ liệu XML để... trúc dữ liệu này cho logic nghiệp vụ, thì một DOM có thể thay thế cho hệ thống phân cấp đối tượng của trình bao bọc Trong phần 2 của loạt bài này, bạn sẽ tìm hiểu cách sửa đổi kiến trúc ứng dụng XMLcho các ứng dụng DB2 của bạn Mục lục Mở đầu Các vấn đề cơ bản về mô hình dữ liệu XML Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Mô hình dữ liệu XML so với mô hình đối... where customerid=custid"); 3 XMLParse customerXML = new XMLParse(dbResult getString(1)); 5 dbResult = dbstmt.executeQuery("select xmlelement( name \"items\" , xmlelement( name \"item\" , xmlattributes(itemid as \"id\" ), Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com xmlattributes(description as \"description\" ), xmlattributes(price as \"price\" ), xmlattributes(date as \"purchaseDate\"... và xuất bản: Dữ liệu quan hệ bằng SQL Dữ liệu quan hệ như XML bằng SQL /XML Dữ liệu XML bằng Xquery Dữ liệu lai (Dữ liệu quan hệ & XML) bằng SQL /XML và Xquery Hình 1 Lưu trữ lai của DB2 Lưu trữ XML trong cơ sở dữ liệu Ưu điểm chính của sự hỗ trợ XML trong cơ sở dữ liệu quan hệ là bạn có thể ghi lưu được cả dữ liệu quan hệ và dữ liệu XML trong cùng một bảng Và mặc dù về Simpo PDF Merge and Split... mục từ bảng mua hàng như là các phần tử con Liệt kê 4 Truy vấn Viper 2 đối với hai cột XML values(xmlquery(' for $Customer in db2- fn:xmlcolumn( "CUSTOMER_TABLE.CUSTXML")/Customer let $items:=({ Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com for $Customer0 in db2- fn:xmlcolumn("PURCHASE_TABLE.ITEMXML")/Customer where $Customer0/@customerid= $Customer/@customerid return... http://www.simpopdf.com 8 customerXML.appendNode(itemnode ,"/Customer/Items",false); } 9 customerXML.find("/Customer/Items/item[@price>15.0 and @price . Lập trình với XML cho DB2, Phần 1: Hiểu biết mô hình dữ liệu XML Hardeep Singh, Kiến trúc sư các công nghệ nâng cao, IBM Tóm tắt: Một mục tiêu chính của XML là làm cho quá trình phát. bài này về lập trình bằng XML với DB2 của IBM cho Linux® UNIX® và Windows®, bạn sẽ học những điều cơ bản về mô hình dữ liệu XML và những ưu điểm mà nó mang lại cho môi trường lập trình của. giới thiệu tác động mà XML đem lại cho phát triển ứng dụng ở ba mức: Phần 1 trình bày trường hợp sử dụng XML trong việc phát triển ứng dụng với mục đích làm cho quá trình phát triển ứng dụng