Các tùy chọn mới cho tính toàn vẹn và xác nhận hợp lệ dữ liệu XML trong DB2 V9.5 doc

27 275 0
Các tùy chọn mới cho tính toàn vẹn và xác nhận hợp lệ dữ liệu XML trong DB2 V9.5 doc

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Các tùy chọn mới cho tính toàn vẹn và xác nhận hợp lệ dữ liệu XML trong DB2 V9.5 Xác nhận hợp lệ thông qua ràng buộc kiểm tra (CHECK), hỗ trợ trigger Manoj Sardana, Kỹ sư phần mềm, IBM Madhavi Kaza, Kỹ sư phần mềm, IBM Tóm tắt: DB2® của IBM® cho Linux®, UNIX® và Windows® đã đưa công nghệ pureXML® vào trong phiên bản 9. Công nghệ này cho phép bạn lưu trữ dữ liệu XML dưới dạng nguyên sinh của nó, như vậy duy trì được cấu trúc phân cấp và cho phép bạn truy vấn nó bằng cách sử dụng SQL/XML và XQuery. Cũng như với các dữ liệu quan hệ, khả năng để bảo đảm sự toàn vẹn của dữ liệu XML được lưu trong DB2 là bắt buộc. Tuy nhiên, các phương thức và cơ chế để đảm bảo tính toàn vẹn của dữ liệu XML khác một chút so với các phương thức đảm bảo tính toàn vẹn dữ liệu quan hệ truyền thống. Trong bài viết này bạn sẽ tìm hiểu về tính toàn vẹn của dữ liệu XML trong bối cảnh DB2 và khám phá các tùy chọn khác nhau để đảm bảo tính toàn vẹn mà bạn có trong các kịch bản khác nhau. Mục lục  Tính toàn vẹn của XML  Đăng ký lược đồ XML và xác nhận hợp lệ  Xác nhận hợp lệ thông qua các ràng buộc kiểm tra trên các cột XML  Bắt buộc xác nhận hợp lệ tự động thông qua các tri-gơ  Sử dụng các vị từ IS VALIDATED và IS NOT VALIDATED trong các câu lệnh SELECT  Băm nhỏ các giá trị của XML vào các cột quan hệ  Tóm tắt Tính toàn vẹn của XML Tính toàn vẹn của dữ liệu XML trong cơ sở dữ liệu của DB2 có thể được xem xét bằng nhiều cách. Ở một mức độ rất cơ bản, trước khi chèn một giá trị XML vào một bảng, có thể bạn muốn bảo đảm rằng các kiểu dữ liệu của các giá trị của các phần tử khác nhau là đúng. Ở một mức độ sâu hơn, bạn có thể muốn có những ràng buộc chẳng hạn như tính duy nhất của một giá trị của phần tử, số bội (multiplicity) của một phần tử, hoặc hạn chế đối với các giá trị của một phần tử. Khi dữ liệu XML được lưu giữ cùng với các dữ liệu quan hệ, bạn có thể muốn đảm bảo rằng một số giá trị của phần tử trong XML cũng xuất hiện trong các cột quan hệ. Lý do của điều này có thể là các cột này là một phần của khóa chính hoặc khóa ngoài. DB2 cung cấp một số giải pháp khác nhau cho các yêu cầu về tính toàn vẹn này. Mặc dù bạn có một lựa chọn là kiểm tra hợp lệ các tài liệu XML đối với một lược đồ trước khi chèn, các tri-gơ có thể được sử dụng để thực hiện việc xác nhận hợp lệ này một cách tự động mà không cần để người sử dụng biết. Bạn có thể sử dụng ràng buộc kiểm tra để buộc người sử dụng phải kiểm tra hợp lệ giá trị của XML với một lược đồ đã đăng ký trước. Trước khi bạn sử dụng bất kỳ lựa chọn nào trong các tùy chọn này, thì cần phải đăng ký một lược đồ XML với cơ sở dữ liệu. Để lưu trữ một giá trị nút vào một cột quan hệ nhằm duy trì tính đơn nhất, bạn có thể băm nhỏ các giá trị nút thích hợp thành một kiểu dữ liệu quan hệ bằng cách sử dụng một hàm SQL/XML và chèn nó vào một cột quan hệ. Trong các phần sau, chúng ta sẽ nói về tất cả các tùy chọn này một cách chi tiết với các mã ví dụ. Đăng ký lược đồ XML và xác nhận hợp lệ Lược đồ XML được sử dụng để định nghĩa cấu trúc của một tài liệu XML, các phần tử của nó, các thuộc tính của nó và kiểu dữ liệu của các phần tử hoặc của các thuộc tính. Hơn nữa, nó cho phép bạn định nghĩa các giá trị phần tử mặc định và các hạn chế với các phần tử, chẳng hạn như số bội hay là tính đơn nhất. Một khi đã được định nghĩa, nó có thể được sử dụng để xác nhận tính hợp lệ cho các tài liệu XML đối với lược đồ XML đã xác định. Liệt kê 1 cho thấy ví dụ của lược đồ "employee" (nhân viên). Chúng ta sẽ sử dụng lược đồ này trong các phần sau của bài viết này. Liệt kê 1. Lược đồ Employee <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name = "employee"> <xs:complexType> <xs:sequence> <xs:element name = "name" type = "xs:string"/> <xs:element name = "dept" type = "xs:string"/> <xs:element name = "salary" type = "xs:double"/> <xs:element name = "designation" type = "xs:string"/> <xs:element name = "date-of-join" type = "xs:date"/> <xs:element name = "address"> <xs:complexType> <xs:sequence> <xs:element name = "street" type = "xs:string"/> <xs:element name = "city" type = "xs:string"/> <xs:element name = "state" type = "xs:string"/> <xs:element name = "country" type = "xs:string"/> <xs:element name = "zipcode" type = "xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name = "id" type = "xs:string" use = "required"/> </xs:complexType> </xs:element> </xs:schema> Lược đồ XML phải được đăng ký tại cơ sở dữ liệu của DB2 trước khi sử dụng lược đồ để xác nhận hợp lệ. Liệt kê 2 cho thấy các lệnh CLP để đăng ký lược đồ employee, giả định rằng nó được cất giữ trong tệp tin employee.xsd trong thư mục làm việc của bạn. Liệt kê 2. Đăng ký lược đồ XML REGISTER XMLSCHEMA http://posample.org FROM employee.xsd as employee; COMPLETE XMLSCHEMA employee; Sau khi lược đồ được đăng ký thành công và được gán một tên quan hệ, bạn có thể sử dụng nó để xác nhận hợp lệ. Xác nhận hợp lệ là một quá trình kiểm tra xem các cá thể tài liệu có đáp ứng kiểu cấu trúc, kiểu dữ liệu và các ràng buộc nội dung đã chỉ rõ trong lược đồ XML hay không. Quá trình xác nhận hợp lệ loại bỏ dữ liệu không hợp lệ trước khi nó được chèn vào cơ sở dữ liệu. Nó đảm bảo rằng các tài liệu XML tuân thủ các quy tắc được lược đồ XML cung cấp và đúng khuôn dạng. Trong DB2, việc kiểm tra hợp lệ các tài liệu XML theo các lược đồ XML là tùy chọn. Ví dụ, nếu các tài liệu XML nhận được từ một nguồn đáng tin cậy, thì việc xác nhận hợp lệ có thể không cần thiết. Ngược lại, nếu các tài liệu XML nhận được từ một nguồn không biết rõ, hãy cẩn thận kiểm tra hợp lệ các tài liệu XML đó để duy trì tính toàn vẹn dữ liệu. Hàm XMLVALIDATE được sử dụng để xác nhận hợp lệ các tài liệu XML trước khi chèn hoặc cập nhật các tài liệu XML vào một bảng. Như đã đề cập ở phần trước, các lược đồ XML phải được đăng ký trước khi sử dụng chúng để xác nhận hợp lệ. Hàm XMLVALIDATE xác nhận hợp lệ tài liệu hoặc ngầm ẩn hoặc tường minh.  Xác nhận hợp lệ ngầm: Tài liệu XML chỉ rõ vị trí của lược đồ và vùng tên bằng cách sử dụng thuộc tính XSi: schemaLocation hoặc chỉ rõ riêng chỉ vị trí lược đồ bằng cách sử dụng thuộc tính XSi: noNamespaceSchemaLocation. DB2 sử dụng các giá trị đầu vào này và tìm kiếm các bảng danh mục nhằm tìm ra lược đồ XML cần thiết để xác nhận hợp lệ tài liệu XML. Ví dụ: Bạn có thể chèn tài liệu XML sau đây vào một bảng hiện có có tên là EMPLOYEE, bảng này có hai cột, một cột có kiểu dữ liệu integer và cột thứ hai có kiểu XML. Liệt kê 3. Các nhận hợp lệ ngầm INSERT INTO employee VALUES (101, '<employee xmlns:xsi="http://www/w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="employee.xsd" id = "101"> <name>Sonal</name> <dept>Sales</dept> <salary>10000</salary> <designation>Sales Executive</designation> <date-of-join>2007-10-10</date-of-join> <address> <street>M.G. Road</street> <city>Bangalore</city> <state>Karnataka</state> <country>India</country> <zipcode>560001</zipcode> </address> </employee>')   Xác nhận hợp lệ tường minh: Tài liệu XML xác định một cách tường minh mã nhận dạng SQL hoặc thông tin vùng tên và vị trí của lược đồ XML bằng cách sử dụng mệnh đề ACCODING TO XMLSCHEMA ID trong hàm XMLVALIDATE. Dưới đây là một ví dụ về xác nhận hợp lệ tường minh. Liệt kê 4. Xác nhận hợp lệ tường minh INSERT INTO employee VALUES (101, XMLVALIDATE(XMLPARSE(document '<employee id="101"> <name>Sonal</name> <dept>Sales</dept> <salary>10000</salary> <designation>Sales Executive</designation> <date-of-join>2007-10-10</date-of-join> <address> <street>M.G. Road</street> <city>Bangalore</city> <state>Karnataka</state> <country>India</country> <zipcode>560001</zipcode> </address> </employee>') ACCORDING TO XMLSCHEMA ID employee))  Trong DB2, việc xác nhận hợp lệ tài liệu XML được thực hiện trên cơ sở cho từng tài liệu, không phải ở cấp độ cả cột. Một bảng có một cột XML, không cần tất cả các tài liệu của cột phải có liên quan đến chỉ một lược đồ XML. Nó có thể chứa các tài liệu XML liên quan đến các lược đồ khác nhau. Bạn có thể kiểm tra xem các tài liệu có được xác nhận hợp lệ hay không bằng cách sử dụng vị từ VALIDATED. Xác nhận hợp lệ thông qua các ràng buộc kiểm tra trên các cột XML Hãy xem xét một kịch bản mà bạn muốn kết buộc một tập hợp các lược đồ XML với một cột XML. Tuy nhiên, trách nhiệm xác nhận hợp lệ giá trị XML thuộc về ứng dụng. Trong trường hợp này, quản trị viên cơ sở dữ liệu có thể đặt một ràng buộc kiểm tra trên cột XML và đảm bảo rằng ứng dụng sử dụng một trong những lược đồ được đăng ký trước để xác nhận hợp lệ. Thao tác này cũng sẽ bảo đảm rằng tài liệu XML luôn luôn được xác nhận hợp lệ. Các ràng buộc kiểm tra là các ràng buộc trên các cột bảng được sử dụng để hạn chế người dùng phải theo một điều kiện kiểm tra cụ thể. Khi chèn hay cập nhật trên một cột, thì bạn chỉ có thể thực hiện các thao tác này trên bảng nếu các điều kiện kiểm tra được đánh giá là đúng. Tạo một bảng với ràng buộc kiểm tra trên một cột XML Các ràng buộc kiểm tra trên dữ liệu XML cung cấp cho bạn khả năng xác định các ràng buộc trên một cột XML dưới dạng kiểm tra hợp lệ theo lược đồ XML, để đảm bảo rằng chỉ các tài liệu XML đã được xác nhận hợp lệ đối với các lược đồ thích hợp được lưu trữ trong cột. Điều này đảm bảo sự nhất quán của thông tin được lưu trữ trong cột XML. Nó cũng mang lại khả năng định nghĩa các biểu thức XML trên các giá trị XML khi chúng được xác nhận hợp lệ theo một tập hợp các lược đồ định nghĩa trước. Các vị từ IS VALIDATED hoặc IS NOT VALIDATED cùng với mệnh đề ACCORDING TO XMLSCHEMA có thể được sử dụng để kiểm tra xem tài liệu được xác nhận hợp lệ hay chưa đối với các lược đồ đã chỉ định. Các ràng buộc kiểm tra cũng có thể liệt kê một tập hợp các lược đồ. Điều này có nghĩa là tài liệu XML có thể được xác nhận hợp lệ đối với một trong các lược đồ [...]... INFO được xác nhận hợp lệ đối với lược đồ EMPLOYEE trong câu lệnh tri-gơ Nếu trái lại thì phần hành động của các câu lệnh tri-gơ không được thực thi Xác nhận hợp lệ tài liệu XML đối với một lược đồ nằm trong một URI cụ thể Chúng ta có thể xác nhận hợp lệ các tài liệu XML đối với lược đồ XML nằm trong một URI cụ thể Mệnh đề ACCORDING TO XMLSCHEMA được sử dụng để xác nhận hợp lệ tài liệu XML INFO đối... dữ liệu XML trong định dạng nguyên sinh của nó và cung cấp các tùy chọn khác nhau để truy vấn dữ liệu Trong bài viết này chúng ta đã xem xét nhiều cách mới để đảm bảo rằng dữ liệu XML vẫn còn nhất quán khi dữ liệu được truy vấn, chèn, cập nhật hoặc bị xóa Sự hỗ trợ tri gơ cho XML cho phép sử dụng hàm XMLVALIDATE để thực hiện xác nhận hợp lệ tự động Bạn có thể sử dụng bất kỳ tùy chọn nào trong các tùy. .. thì việc xác nhận hợp lệ tự động đảm bảo rằng các tài liệu XML được xác nhận hợp lệ đối với lược đồ XML được chỉ định Hoạt động xác nhận hợp lệ tự động này được thực hiện ở phần hành động của câu lệnh tri-gơ bằng cách sử dụng hàm XMLVALIDATE Tạo ra câu lệnh tri-gơ BEFORE để ép buộc xác nhận hợp lệ tự động Bất cứ khi nào một tài liệu XML được chèn hoặc được cập nhật trong một bảng thì câu lệnh tri-gơ... một câu lệnh tri-gơ xác định thực hiện xác nhận hợp lệ tự động Trong tình huống như vậy thì việc xác nhận hợp lệ lại tài liệu XML một lần nữa chỉ mang lại thêm tải cho công việc Trong trường hợp này, câu lệnh tri-gơ có thể được triển khai để trước tiên xác minh xem việc xác nhận hợp lệ đã được hoàn tất chưa Nếu đã hoàn tất, nó bỏ qua quá trình xác nhận hợp lệ bằng cách sử dụng mệnh đề WHEN ở bên trong. .. được xác nhận hợp lệ, nó không kiểm tra lại nữa Nếu tài liệu chưa được xác nhận hợp lệ, thì nó thi hành phần hành động của câu lệnh tri-gơ và kiểm tra tính hợp lệ của tài liệu XML theo lược đồ đã xác định Trong liệt kê mã 11, mệnh đề WHEN kiểm tra để xác định xem có phải tài liệu XML INFO chưa được xác nhận hợp lệ đối với lược đồ EMPLOYEE hay không Nếu điều này là đúng, thì sau đó tài liệu INFO được xác. .. tài liệu XML được xác nhận hợp lệ đối với lược đồ employee Chỉ khi xác nhận hợp lệ thành công thì bản ghi sẽ được chèn vào bảng Lưu ý: Nếu câu lệnh tri-gơ thất bại khi xác nhận hợp lệ tài liệu XML, thì tài liệu không được chèn vào Nó cũng không trả lại bất kỳ thông báo lỗi nào Sử dụng vị từ IS {NOT} VALIDATED trong mệnh đề WHEN Luôn có khả năng là ứng dụng đã xác nhận hợp lệ tài liệu XML trước khi chèn... (n.info) = XMLVALIDATE (n.info ACCORDING TO XMLSCHEMA ID employee); END Hàm XMLVALIDATE ở phần hành động của câu lệnh tri-gơ sẽ xác nhận hợp lệ các thông tin về nhân viên đã chỉ rõ trong cột INFO Mệnh đề ACCORDING TO XMLSCHEMA được sử dụng để xác nhận hợp lệ cột INFO đối với lược đồ XML employee Khi một tài liệu XML được đưa vào bảng EMPLOYEE, thì câu lệnh tri-gơ BEFORE INSERT được thực thi và tài liệu XML. .. dụng được phát triển theo một cách mà rất khó thay đổi câu lệnh chèn để thực hiện một việc xác nhận hợp lệ tường minh, quản trị viên cơ sở dữ liệu có thể viết một tri-gơ, câu lệnh này sẽ được kích hoạt trên mọi hoạt động chèn hoặc cập nhật để thực hiện xác nhận hợp lệ một cách tự động DB2 9.5 đã đưa vào khái niệm xác nhận hợp lệ tự động ép buộc các văn bản XML gửi đến bằng cách sử dụng tri-gơ BEFORE Bất... TO XMLSCHEMA ID registered_customers)) Câu lệnh CREATE VIEW tạo ra một khung nhìn của bảng khách hàng (customer) và bảng nhà phân phối (distributor) Câu lệnh chèn đầu tiên chèn dữ liệu vào bảng DISTRIBUTOR nếu dữ liệu XML được lưu giữ trong bảng DETAILS (Các chi tiết) là hợp lệ đối với lược đồ XML DISTRIBUTOR Câu lệnh chèn thứ hai này chèn dữ liệu vào bảng CUSTOMER nếu dữ liệu XML được lưu giữ trong. .. kết hợp cả các tài liệu XML được xác nhận hợp lệ lẫn không được xác nhận hợp lệ trong cùng một cột XML duy nhất Vị từ IS VALIDATED trả về kết quả true nếu tài liệu XML hợp lệ đối với bất kỳ lược đồ cụ thể nào hoặc đối với bất kỳ lược đồ đã được đăng ký nào, nếu không hợp lệ thì nó sẽ trả về kết quả là false Vị từ IS NOT VALIDATED trả về kết quả là true nếu tài liệu XML không hợp lệ đối với lược đồ . Các tùy chọn mới cho tính toàn vẹn và xác nhận hợp lệ dữ liệu XML trong DB2 V9. 5 Xác nhận hợp lệ thông qua ràng buộc kiểm tra (CHECK), hỗ trợ. hiểu về tính toàn vẹn của dữ liệu XML trong bối cảnh DB2 và khám phá các tùy chọn khác nhau để đảm bảo tính toàn vẹn mà bạn có trong các kịch bản khác nhau. Mục lục  Tính toàn vẹn của XML. NOT VALIDATED trong các câu lệnh SELECT  Băm nhỏ các giá trị của XML vào các cột quan hệ  Tóm tắt Tính toàn vẹn của XML Tính toàn vẹn của dữ liệu XML trong cơ sở dữ liệu của DB2 có thể được

Ngày đăng: 07/08/2014, 09:22

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan