Khung kiến trúc chung cho các NXD[11]

Một phần của tài liệu Cơ sở dữ liệu XML trong tổ chức quản lý ngân hàng câu hỏi theo tiêu chuẩn QTI (Trang 41)

Nói chung, kiến trúc của một hệ thống không chỉ là toàn bộ mô hình của hệ

thống nó còn miêu tả các thành phần chính hệ thống, sự kết nối bên trong giữa các thành phần và tương tác với các thành phần khác. Nói cách khác, kiến trúc của một hệ thống là toàn bộ một khung công việc (frame-work). Khung này miêu tả cầu trúc, mẫu biểu và các thành phần chúng kết hợp với nhau như thế nào. Trong phát triển hệ thống, khâu thiết kế kiến trúc rất quan trọng.

Kiến trúc của một hệ CSDL được đề xuất ở dưới đây có thể được xem như

một mô hình hoàn chỉnh trong đó có cả tầng logic và tầng vật lý. Mỗi tầng tạo ra các mô hình dữ liệu khác nhau để thể hiện dữ liệu XML, các hàm và các phép thao tác dữ liệu cũng khác nhau.

Hình 2.5: Khung kiến trúc chung cho một hệ quản trị dữ liệu XML

"Tầng logic

Mô hình dữ liệu ngoài. Mô hình dữ liệu ngoài của tầng này tương tự như mô hình dữ liệu DOM (mô hình được đề xuất bởi tổ chức W3C). Mô hình xem cả

giản đồ XML và tài liệu như các cây mà các phần tửđược xem như các nút trong cây, các nút được nối bởi các cạnh. Mỗi nút có thể chứa các nút con hoặc văn bản với độ dài bất kỳ hoặc là một danh sách các thuộc tính/giá trị. Mỗi nút được khởi tạo một định danh duy nhất do đó một nút có thểđược phân biệt với các nút khác có cùng tên. Mối quan hệ cha con giữa một cặp nút cũng được duy trì do đó có thể sử dụng thông tin này để duyệt cây (đi tiến hoặc đi lùi). Kiểm tra tính hợp lệ

của tài liệu cũng được thực hiện thông qua mô hình này để đảm bảo tính bền vững của dữ liệu. Các thao tác trong mô hình này thực hiện biên dịch truy vấn, quản lý khung nhìn và ánh xạ cấu trúc.

Mô hình dữ liệu trong. Dữ liệu trong mô hình này được hiển thị trong mẫu của cấu trúc cây chuyển đổi. Trong đó các nút có liên quan được tổ chức theo sưu tập và được phân cụm logic để tạo thành một nhóm hoặc các nhóm theo tiêu chuẩn nào đó. Các thuộc tính của mỗi nút như định danh nút, các mối quan hệ

cha con v.v… cũng vẫn được duy trì trong mô hình này nhưng cấu trúc ban đầu của tài liệu đã được chuyển đổi. Các thao tác trong mô hình này chủ yếu là cây và các phép toán tập hợp cũng như là các hàm ánh xạ.

"Tầng vật lý

Mô hình dữ liệu vật lý. Các bản ghi là các tế bào tạo lên mô hình này. Trong mô hình này cây logic được chuyển và định vị vào các bản ghi vật lý. Một bản ghi có độ dài thay đổi nhưng bị giới hạn bởi kích thước của một khối vật lý. Bởi vì giản đồ là đặc tính đang mong đợi trong mỗi hệ CSDL, một tập hợp các giản

đồ XML (trong trường hợp có nhiều hơn một giản đồ) phải được chứa trong các khối khác nhau. Hơn nữa, dữ liệu dài (ví dụ như giá trị của các nút) là trở ngại khi phâm cụm và đánh chỉ số, do vậy ở đây nên phân tách và lưu trữ trong các khối khác. Do đó kích thước của từng bản ghi trở nên nhỏ hơn, các trang riêng lẻ

có thể duy trì nhiều hơn một đối tượng gốc của các nút có liên quan của các cây tài liệu.

Phân đoạn. Một phân đoạn là một tập hợp các khối vật lý mà trong đó chúng

được phân cụm theo tiêu chuẩn được định nghĩa trước để giảm thiểu sự cần thiết của việc đọc I/O tràn lan khi lấy dữ liệu. Thêm vào đó, quản lý bộ đệm là hoạt

động vượt trội của tầng thấp này.

Tệp hệ điều hành. Tệp nên là mức thấp nhất trong kiến trúc của hệ CSDL. Tất cả dữ liệu được lưu trong các tệp chịu sự quản lý của hệđiều hành.

CHƯƠNG 3 eXist – H CSDL XML NGUYÊN BN

3.1. Giới thiệu

eXist [10, 21] là một phần mềm nguồn mở để phát triển một hệ thống NXD. Nó có thểđược tích hợp dễ dàng vào các ứng dụng có liên quan đến XML trong một số trường hợp khác nhau, từ các ứng dụng dựa trên web đến các hệ

thống tài liệu chạy từ CDROM. eXist được viết hoàn toàn trong Java và có thể

triển khai theo một số cách: chạy như một tiến trình máy chủ độc lập, như một servlet hoặc nhúng trực tiếp vào một ứng dụng.

Trên trang web chính thức của InforWorld [24], eXist đã đạt giải công nghệ năm 2006 cho CSDL XML.

eXist cung cấp một phương án lưu trữ không giản đồ, các tài liệu XML lưu trong các sưu tập (collection) phân cấp. Sử dụng cú pháp XPath mở rộng, người dùng có thể truy vấn một phần của tài liệu trong sưu tập hoặc thậm chí tất cả các tài liệu trong một CSDL. Máy truy vấn của eXist thực hiện rất hiệu quả nhờ xử lý truy vấn dựa trên chỉ số. Một giản đồ đánh chỉ số cải tiến hỗ trợ xác định nhanh của các mối quan hệ cấu trúc giữa các nút như quan hệ cha con, ông cháu hoặc mối quan hệ anh em.

CSDL eXist là phù hợp nhất đối với các ứng dụng làm việc với một sưu tập từ nhỏ đến lớn các tài liệu XML mà thỉnh thoảng mới có thao tác cập nhật. eXist cung cấp một số phần mở rộng của XPath chuẩn để xử lý hiệu quả các truy vấn fulltext, bao gồm cả tìm kiếm theo từ khóa hoặc các biểu thức chính quy.

Các nhà phát triển được cung cấp các phương thức truy cập thông qua HTTP, XML-RPC, SOAP và WEBDAV. Các ứng dụng Java có thể sử dụng XML:DB API, một giao diện chung để truy cập tới các NXD hoặc XED.

3.2. Lưu trữ và đánh chỉ số XML

3.2.1. Nền tảng

Ngôn ngữ truy vấn XML như XPath hoặc XQuery sử dụng các biểu thức (adsbygoogle = window.adsbygoogle || []).push({});

đường dẫn để định vị thông qua cấu trúc phân cấp logic của một tài liệu XML, với cấu trúc này thì tài liệu được mô hình hóa như một cây có thứ tự. Biểu thức

đường dẫn định vị các nút trên một cây. Ví dụ biểu thức book//section/title sẽ

chọn toàn bộ các phần tử “title” là con của phần tử “section” mà “section” có tổ

tiên ông cha là “book”. Dấu “//” trong biểu thức con “book//section” chỉ ra

đường dẫn phải dẫn dắt từ một phần tử là “book” tới một phần tử “section”. Điều này tương xứng với một mối quan hệ tổ tiên – con cháu, chỉ các phần tử

section” là con cháu của phần tử “book” sẽđược chọn. Dấu chéo đơn “/” trong “section/title” biểu thị một mối quan hệ cha con. Nó sẽ chỉ chọn các “title” có cha là phần tử “section”.

XPath định nghĩa thêm một quan hệ giữa các nút. Quan hệ này được chỉ

ra trong biểu thức đường dẫn bằng một ký hiệu chỉ định trục. Các trục được hỗ

trợ là tổ tiên, con cháu, cha, con, anh và em ruột. Ký tự “/” là rút gọn cho trục “con”. Ký tự “//” là rút gọn của “con cháu hoặc chính bản thân (nút đó)”. Ví dụ, biểu thức “//section” là viết tắt của “/descendant-or –selff::node()/child::section” Kết quả của biểu thức đường dẫn là một dãy nút khác nhau trong tài liệu. Sau đó, dãy nút này có thểđược lọc tiếp bằng một biểu thức vị từ. Biểu thức vị từ được viết trong dấu ngoặc vuông. Ví dụ: book//section[contains(title,‘XQuery’)]

Biểu thức vị từ cho phép chọn dựa vào giá trị, trong khi biểu thức con

“book//section” cho phép chọn theo cấu trúc. Các phép chọn dựa vào giá trị có thể dùng tên phần tử, tên thuộc tính/giá trị thuộc tính hoặc xâu văn bản trong mỗi phần tử. Các phép chọn cấu trúc dựa trên các mối quan hệ cấu trúc giữa các nút như mối quan hệ tổ tiên – con cháu hay mối quan hệ cha-con.

Các cách tiếp cận dựa trên việc duyệt cây sẽ kém hiệu quảđối với một tập các tài liệu lớn. Ví dụ, xem xét một biểu thức XPath chọn “title” của tất cả các “figures” trong một sưu tập “books”: /book//figure/title

Theo cách tiếp cận duyệt cây top-down, bộ xử lý truy vấn phải dò theo tất cả mọi đường bắt đầu từ phần tử “book” để kiểm tra các con cháu “figure” có thể

có, bởi vì không có cánh nào có thể xác định được vị trí của phần tử con cháu “figure” một cách tối ưu. Điều này dẫn đến việc một số lớn các nút không phải là các phần tử “figure” cũng được truy cập để kiểm tra hai sự kiện sau: (i) nút có phải là một phần tử hay không; (ii) tên đầy đủ của nó có phải là “figure

Do đó cấu trúc chỉ số là cần thiết để thực hiện các truy vấn hiệu quả trên các sưu tập lớn tài liệu. Giản đồ chỉ số nên cung cấp các công cụ để xử lý các phép chọn dựa trên giá trị cũng như các phép chọn dựa trên cấu trúc. Trong khi các phép chọn dựa trên giá trị nhìn chung được hỗ trợ bởi các giản đồ đánh chỉ số

truyền thống mở rộng như các cây B+ (B+- Tree), các phép chọn cấu trúc khó xử

lý hơn. Để tăng tốc độ xử lý các biểu thức đường dẫn dựa trên các mối quan hệ

cấu trúc, một giản đồ chỉ số nên hỗ trợ việc xác định nhanh các mối quan hệ giữa các nút, ví dụ các mối quan hệ tổ tiên – con cháu, cha-con. Chỉ các trường hợp

đặc biệt mới cần phải duyệt toàn bộ cây tài liệu, khi mà thông tin chứa trong các chỉ số không đủđể xử lý các biểu thức.

3.2.2. Các giản đồ đánh chỉ số

Nhiều bài nghiên cứu đã tiến hành thiết kế các cấu trúc chỉ sốđể đáp ứng các yêu cầu trên. Một giản đồđánh số khởi tạo một định danh duy nhất cho từng nút trong cây tài liệu logic bằng cách duyệt cây theo tứ tự mức (level – order: duyệt theo chiều rộng). Sau đó các định danh sinh ra được sử dụng trong các chỉ số khi có một tham chiếu tới các nút. Một giản đồ đánh số nên cung cấp các cơ chế để

xác định nhanh quan hệ cấu trúc giữa một cặp nút và để xác định tất cả lần xuất hiện của quan hệđó trong một tài liệu đơn hoặc trong một sưu tập các tài liệu.

Trong phần này chúng ta sẽ giới thiệu ngắn gọn 3 giản đồ đánh số được sử

dụng trong lõi của eXist. Chúng được mở rộng từ giản đồđánh số level-order. Trong [6] đã đề xuất một giản đồ đánh chỉ số sử dụng định danh tài liệu (document id), vị trí nút và độ sâu lồng nhau của các nút để định danh các nút (cũng được thảo luận chi tiết trong [7]). Theo sựđề xuất này một phần tử được

định danh bởi bộ 3 (document id, vị trí bắt đầu – start possition:vị trí kết thúc – end possition, mức độ lồng – nesting level). Vị trí bắt đầu và vị trí kết thức có thể được định nghĩa bằng cách đếm số từ xuất hiện kể từ vị trí bắt đầu của tài liệu. Sử dụng bộ 3 (document id, start possition:end possition, nesting level), các mối quan hệ tổ tiên – con cháu có thểđược xác định giữa các cặp nút bằng mệnh đề

sau:

Mệnh đề:Cho nút x với bộ 3 x(D1, S1:E1, L1) và nút y(D2, S2:E2, L2). x là cháu của y nếu và chỉ nếu D1=D2; S1<S2 và E2<E1.

Hệ thống XISS ([10] cũng thảo luận trong [12] đề xuất một giản đồ pre- order mở rộng. Giản đồ này khởi tạo một cặp số <order, size> cho từng nút sao cho:

(i) đối với một nút cây y và cha x của nó, order(x)<order(y) và order(y) + size(y) ≤order(x) + size(x); và

(ii) với cặp x và y là 2 nút anh em nếu x trước y trong phép duyệt theo thứ tự trước (pre-order) thì order(x) +size(x) <order(y) Trong khi Orderđược khởi tạo theo cách duyệt pre-order của cây, size có thể là một số nguyên tùy ý lớn hơn tổng số con cháu của nút đang xét. Mối quan hệ tổ tiên con cháu giữa 2 nút có thể được xác định nhờ mệnh đề sau: Với cặp 2 nút đưa ra x và y, x là tổ tiên của y nếu và chỉ nếu order(x)<order(y) ≤ order(x) + size(x). (adsbygoogle = window.adsbygoogle || []).push({});

Lee et al. [16] đề xuất một giản đồ đánh số nó mô hình hóa cây tài liệu như một cây k-phân đầy đủ. Với k là số con lớn nhất của nút của một phần tử

trong tài liệu. Một định danh nút duy nhất được gán cho từng nút theo phép duyệt cây theo chiều rộng (thứ tự mức - level-order). Hình dưới đây thể hiện các định danh được khởi tạo cho từng nút của một tài liệu XML rất đơn giản. Nó được mô hình hóa như một cây nhị phân đầy đủ. Bởi vì cây được giả sử là một cây đầy đủ, các định danh dự trữđược chèn vào một số vị trí trống.

Hình 3.1: Giản đồ đánh số theo kiểu level-order

Các định danh duy nhất được sinh bởi giản đồđánh số này có một số tính chất quan trọng: cho một định danh có thể dễ dàng xác định được id của nút cha, anh em hoặc các nút con nếu có. Ví dụ, đối với một cây tài liệu k-phân chúng ta có thể tính được định danh của nút cha của một nút có định danh là i nhờ hàm sau đây: ( ) ⎥⎦ ⎤ ⎢⎣ ⎡ − + = 2 1 k i parenti

Giản đồ đánh số thực thi trong eXist là mở rộng của giản đồ trên. Để khắc phục hạn chế về kích thước tài liệu người ta quyết định bỏ một phần ràng buộc về tính đầy đủ của cây và có một giản đồ sửa đổi. Tài liệu sẽ không được xem

như một cây k-phân đầy đủ nữa. Thay vào đó số con mà một nút có thể có được tính toán cho tất cả các nút trên cùng mức ở trong. Điều đó có nghĩa là size(x) =size(y) nếu level(x)=level(y), ở đây size(n) là số con của nút n và level(m) là độ

dài đường đi từ nút gốc của cây tới m. Thông tin về số con có thể có của nút ở

từng mức của cây được lưu kèm với tài liệu trong một mảng.

Hình 2 thể hiện các định danh duy nhất sinh bởi eXist đối với cùng tài liệu nhưở trên. 1 contact 3 phone 2 name 4 “John Cage” 5 6 office 7 home 8 9 10 “664455” 11 “445566” ID dự trữ Hình 3.2: Giản đồ đánh số theo kiểu level-order Cách tiếp cận như vậy là có tính đến thực tế. Các tài liệu thường có một số lớn các nút ở những mức sâu (gần lá) và ít nút hơn ở các mức cao (gần gốc) của cây phân cấp. Giới hạn về kích thước tài liệu được tăng lên đáng kể và có thể đánh chỉ số cho các tài liệu lớn hơn nhiều. So với giản đồ đánh chỉ số ban đầu, các định danh dự phòng được chèn thêm là ít hơn.

Việc chèn một nút ở mức sâu hơn của cây sẽ không có ảnh hưởng tới các

định danh duy nhất khởi tạo cho các nút ở mức cao hơn. Cũng có thểđể các định danh dự phòng giữa các nút đang có để tránh việc phải đánh chỉ số lại các nút khi cập nhật tài liệu sau này. Tuy nhiên, eXist không cung cấp một cơ chế cập nhật cải tiến như vậy.

Tài liệu có thể được cập nhật toàn bộ như một tổng thể. Các phiên bản hiện tại của eXist chưa cho phép xử lý từng nút riêng lẻ. Khả năng hỗ trợ cho việc cập nhật tài liệu động đã được lên kế hoạch cho các phiên bản trong tương lai, còn hiện tại eXist chỉ phù hợp nhất đối với các tài liệu tĩnh hoặc với các tài liệu mà ít khi được cập nhật.

Sử dụng giản đồđánh số trên không ảnh hưởng đến các thuộc tính chung cuả các định danh theo level-order đã gán. Cho một định danh, ta vẫn tiếp tục có

thể tính toán các định danh nút cha, anh em và con sử dụng thông tin bổ xung về

số con của từng nút có thể có ở mỗi mức của cây.

Ngược với cách tiếp cập của các nhà phát triển eXist, các giản đổđánh chỉ

số sửa đổi thảo luận ở trên tập trung vào một tập con giới hạn các truy vấn biểu thức đường dẫn và họ tập trung đến việc hỗ trợ một cách hiệu các phép định vị

trên các trục. Còn eXist cung cấp việc thực thi ngôn ngữ truy vấn XPath một cách đầy đủ, việc hỗ trợ toàn bộ trục XPath là điểm quan tâm chính trong khi phát triển. Ví dụ, xem xét một biểu thức mà chọn các phần tử cha của các phần tử

Một phần của tài liệu Cơ sở dữ liệu XML trong tổ chức quản lý ngân hàng câu hỏi theo tiêu chuẩn QTI (Trang 41)