Kỹ thuật xử lý truy vấn lồng nhau

Một phần của tài liệu (LUẬN văn THẠC sĩ) truy vấn cơ sở dữ liệu hướng đối tượng sử dụng biểu thức đường dẫn (Trang 50)

L ỜI CÁM ƠN

3.3. Kỹ thuật xử lý truy vấn lồng nhau

3.3.1. Mô hình hệ thống

Trước khi giới thiệu các phương pháp đồ th truy v n, mô t mô hình c a b ị ấ ả ủ ộ

xử lý truy vấn của hệ thống củ trong hình 3.2, biểu thức truy vấn phân tích cú pháp khai báo là lần đầu tiên để hình thành nội bộ mà bao gồm các cây phân tích cú pháp và một số bảng nh bư ảng bi n, b ng bi u hi n con ế ả ể ệ đường, b ng l p ,..., vv. Các ả ớ

hình thức nội bộ này sau đó được dịch sang đồ thị truy vấn bởi đồ thị truy vấn chung. Sơ đồ thực thi chung là quá trình ánh xạđồ thị truy vấn đến m t chuộ ỗi các thao tác toán tử dữ ệ li u. Cu i cùng, Runtime Database Executor chố ạy các s ơđồ th c ự

Hình 3.2 Mô hình hệ thống xử lý truy vấn 3.3.2. Đồ thị truy vấn

Đồ thị truy v n là m t ấ ộ đại di n c a các bi u th c truy v n. ệ ủ ể ứ ấ Đồ th truy v n ị ấ được phân cấp, phù h p v i ợ ớ đặc tính phân c p cho các ấ đặc tính l ng nhau c a các ồ ủ

truy vấn trong OQL. 3.3.2.1. Định nghĩa

Định nghĩa 1. Một đồ thị truy vấn G là một đồ thị trong đó bao gồm các nút N, và Liên kết L. Nó có thểđược thể hiện nh là G = [N, L]. ư

Định nghĩa 2. Các nút trong N được chia thành ba loại. Bao g m ồ Simple-Node NS, Collection-Node NC, và Path Node NP .

Định nghĩa 3. Simple-Node NS là nút nguyên thủy mà không thểđược chia ra thành các nút khác. Nó được sử dụng để đại di n cho m t bi n ho c thu c tính c a nút ệ ộ ế ặ ộ ủ

trung gian trong biểu thức đường dẫn (thu c tính dây chuyộ ền). Nó bao gồm ba yếu tố: Var, Type, và Filter. Var là tên biến. Type là loại tương ứng của biến. Filter là vị

Các loại Simple-Node có thể không được Literal như int, char, float, ...,vv Simple-Node được sử dụng đểđại di n cho thu c tính ph c t p h n là thu c tính ệ ộ ứ ạ ơ ộ

chữ.Ví dụ, e.Name = "John" có thểđược thể hiện như sau:

NS(e) = [e, Employee, Name= "John"], .

Định nghĩa 4 Collection-Node NC có thể được chia ra thành một đồ th truy v n ị ấ

con Gsub và sau đó các toán tử project(toán tử project là tương tự như trong mô hình quan hệ) được áp dụng cho đồ thị. Các projection-list là danh sách của thuộc tính được projected bởi ProjectO từđồ th con Gsub. M t collection node ị ộ NCđược ký hiệu là [Var, Type, Filter] nơi mà TypeProject(Gsub, projection list).

Các kiểu trả về của nút này là bag ho c t p các ặ ậ đối tượng. Trong h th ng ệ ố

phân cấp loại chống lại ODMG mô hình,bag và set là các kiểu phụ ủ c a các loạ ấi c u trúc đối tượng. Thực hiện nó với persistence class trong quản lý đối tượng để lưu kết quả truy vấn trung gian.

Định nghĩa 5. Các Path Node NP không khai triển được nó được s dử ụng đểđại diện cho tập các thuộc tính tương ứng với một biến khai báo trong lượng hóa phổ

dụng hoặc lượng hóa tồn tại. Một Path Node được ký hiệu là NP =[Var, Path, Filter].

Định nghĩa 6. Các liên kết trong L được chia thành năm loại. Gồm Navigation-Link Ln , Join-Link Lj, All-Link Lall, Exist-Link LextIn-Link Lin.

Định nghĩa 7. Các Navigation-LinkLn là một hướng liên kết nguyên thủy mà không thể phân tách. Nó có ba yếu tố, hai nút được kết n i bố ởi một liên k t, và tế ương ứng với một thuộc tính Ln có thểđược biểu di n nhễ ư là [(N1, N2) , Attrihute] Lnđược sử

dụng để đại diện cho biểu thức đường dẫn. Ví dụ, e.Workon là một liên kết nguyên thủy nối hai nút Employee và Project. Các biểu th c ứ đường d n có th ẫ ể được xây dựng như sau.

NS(e) = [e, Employee, null],

Ns(p) = [p, Project, null],

Các đại diện đồ họa c a Navigation-Link là phác th o trong hình 3. ủ ả

Hình 3.3 Ví dụđại i n đ ệ đồ h a Navigation-Link ọ

Định nghĩa 8. Các Join-Link Lj là một liên kết vô hướng nguyên thủy. Nó kết nối hai nút bằng cách s dử ụng thu c tính join ộ JoinAttr. Các đối tượng trong hai nút này được join bởi oids của họ hơn là giá tr thu c tính cị ộ ủa họ. Lj có thểđược biểu diễn như là [N1, N2, JoinAttr]. Nếu JoinAttr là null, nó có ngh a là các loĩ ại của cả

hai nút không phải là loại nguyên thủy. Ljđược sử dụng để xác định i u ki n join đ ề ệ

trong một truy vấn. Ví dụ, đ ềi u kiện join trong Q1:e.Supervisor = d.Manager có thểđược xây dựng bằng cách sử dụng m t chu i các simple nodes và navigational ộ ỗ

links và cuối cùng là join của Lj (xem bên dưới).

NS(e) = [e, Employee, Name= "John"],

Ln(supervisor) = [(Ns(e), Ns(e’)) , Supervisor],

Ns(e) = [e’, Employee, null],

Ns(d) = [d, Department, null],

Ln(manager) = [(Ns(d), Ns(d’)) , Manager],

Ns(d’) = [d’, Employee, null],

Lj(supervisor,manager) = [(Ns(e’), Ns(d’)) , null],

Hình 3.4 Đại đ ệi n đồ h a cọ ủa e.Supervisor = d.Manager

Định nghĩa 9. Các All-Link Lall là một liên kết có hướng và phân tách được. Nó tương đương với một đồ thị truy vấn con Gsub chứa Path-Node trong đó. Cả các nút

được nối bởi Lall phải được cùng loại. Lall có thểđược biểu di n nhễ ư là [(N1, N2),

Gsub], nơi Gsubđược xây dựng b i m t Path-Node ở ộ

Lall được sử dụng để đại di n cho các lệ ượng hóa ph dổ ụng. Ví d , v tụ ị ừ Q3 trong mệnh đề where là "for all x in e.Workon: x.Contorlled.Location=Taipei". Chúng ta có thể xem nó như là một bộ lọc c a bi n e bên ngoài có i u ki n l c là ủ ế đ ề ệ ọ

x.Controlled.Location = "Taipei" . Các vị từ trong m nh ệ đề where c a Q3 có thủ ể được xây dựng nh sau : ư

NS(e) = [e, Employee, null],

Lall = [(Ns(e), Ns(e’)) , Gsub],

Ns(e’) = [e’, Employee, null],

Gsub = [

Np(x) = [x, e.Workon, null],

Ln(controller) = [(Np(x), Ns(controlled)) , Controlled],

Ns(d) = [d, Department, Location=”Taipei”], ]

Hình 3.5 Đại đ ệi n đồ h a cọ ủa Q3

Định nghĩa 10. Exist-Link Lext là tương t nhự ư của All-Link ngo i tr các lạ ừ ượng hóa

Exist()

Định nghĩa 11. In-Link Lin là một liên kết trực tiếp và nguyên thủy. In-Link Lin có thểđược biểu diễn như là [( N1, N2 )] trong đó N1 và N2 là hai đồ thị truy vấn con. Sau đây minh họa nó bằng cách sử ụ d ng các truy vấn sau đây Q5.

Q5: “Lấy tên của nhân viên có giám sát là một trong những supervisee của người quản lý bộ phận Taipei”.

select e.Name

from e. in Employee, d in Department

where e.supervisor in d.Manager.Supervisee and d.Location = "Taipei"

Các vị từ trong m nh ệ đề where có th ểđược xây d ng b ng cách s dự ằ ử ụng các bi u ể

thức sau đây:

Ns(e) = [e, Employee, null],

Ln(supervisor) = [(Ns(e), Ns(supervisor)) , Supervisor],

Ns(e’) = [e’, Employee, null],

Ns(d) = [d, Department, Location=”Taipei”],

Ln(manager) = [(Ns(d), Ns(e’’)) , Manager],

Ns(e’’) = [e’’, Employee, null],

Lin(supervisor, supervisee) = [(Ns(e’), Ns(ee))],

Các đại diện đồ họa c a các bi u th c trên ủ ể ứ được v trong hình 3.6. ẽ

Hình 3.6 Đại đ ệi n đồ h a cọ ủa Q4 3.3.2.2. Chuyển đổi đồ thị truy vấn

Trong phần này, s ẽđề xuất một thuật toán để chuyển một biểu thức truy vấn vào một đồ thị truy vấn. Truy vấn được thể hiện trong OQL. Ý tưởng chuyển đổi dựa vào cấu trúc lưu trữ nộ ội b , Access Support Relation. Có m t bộ ản đồ th hi n ể ệ đường dẫn trong một truy v n ấ đến m t c u trúc l u tr ASR. M t bi u th c ộ ấ ư ữ ộ ể ứ đường dẫn đến một sự kết h p c a Simple-Nodes và Navigate-Links. M t con ợ ủ ộ đường quyết định thứ tự thực hiện các hướng. Mỗi cấu trúc trong đồ thị truy vấn có thể ánh x ạ đến một chuỗi các toán t Simple-Node ánh x vào m t tr ng thái trung gian c a ử ạ ộ ạ ủ

ASRs, Navigate-Link ánh xạ đền toán tử navigate, Join-Link ánh xạ đền toán tử

project. Ưu đ ểi m của thiết kế của này là nó r t d dàng ấ ễ để dịch các đồ th truy v n ị ấ để thực thi s . ơđồ

Thuật toán chuyển đổi :

1. Biến non-literal hoặc thuộc tính non-literal trong một biểu thức đường dẫn

được chuyển thành m t ộ Simple-Node Ns.Tên của nút là giống hệt như ủ c a một bi n. ế

Nếu không có tên biến, hệ thống sẽ chỉ định một tên duy nhất để nút này tựđộng. 2. Hai thuộc tính non-literal trong một biểu thức đường dẫn cấu trúc là

Navigation-Link Ln.

3. Đ ềi u kiện join trong mệnh đề lượng hóa cấu trúc là Join-Link

4. Kết quả của vi c ánh giá các from -where là mệ đ ột bag ho c m t t p các ặ ộ ậ đối tượng. Nó được i diđạ ện bởi m t ộ Collection-Node Nc M nh ệ đề select sau ó yêu đ

cầu các thuộc tính giá trị projects.

5. Mệnh đề lượng hóa chuyển thành các hình th c phân ly bình th ng, ứ ườ

nghĩa là, (query and query and ...) hoặc (query and query and ... .) hoặc ...Mỗi biểu thức con trong mộ ặt c p d u ngo c ấ ặ đơn xây d ng m t Collection-Node. Collection-ự ộ

Node này được kết hợp b i toán t union và sau ó s n xu t ra m t Collection-ở ử đ ả ấ ộ

Node mới.

6. Một mệnh đề có chứa cho tất cả lượng hóa phổ bi n thành m t ế ộ All-Link Lall.

7. Một mệnh đề có chứa có định lượng phổ biến thành Exist-Link Lext. 8. Một mệnh đề có chứa lượng hóa được bi n ế đổi thành In-Link Lin

Đồ thị truy v n QG1 và QG3 có thấ ểđược bắt nguồn từ các truy vấn Q1 và

Q3a tương ứng b ng cách áp d ng các thuằ ụ ật toán chuy n ể đổi trên.Các ở đồ th truy ị

Hình 3.7a Đồ thị truy vấn QG1

3.4. Kỹ thuật Access Support Relations (ASRs)

Kỹ thuật Access Support Relations (ASRs) được đề xu t b i Kemper và ấ ở

Moerkotte. ASRs được giới thiệu như là một phương tiện để tố ưi u hóa x lý truy ử

vấn trong các hệ thống cơ sở dữ liệu hướng đối tượng.

Theo định nghĩa [9]. Một biểu thức đường dẫn có dạng : o.A1...An, trong đó o là một cấu trúc tuple đối tượng có chứa các thuộc tính A, và o.A1...Anđề cập đến một đối tượng hoặc một tập các đối tượng. Kết quả của bi u th c ể ứ đường d n là t p ẫ ậ

hợp các đối tượng (hoặc giá trị) của các loại đó có thể đạt từ o thông qua các chuỗi thuộc tính xác định.

3.4.1. Các toán tử thao tác ASRs

Định nghĩa m t t p h p các toán t ộ ậ ợ ửđể thao tác ASRs trong việc xử lý truy vấn. Các toán tử được mô tả như dưới đây.

Toán tử I/O

• NewAsr : Đây là toán tử được sử dụng để tạo ra m t chu n m rộ ẩ ở ộng m i c a ớ ủ

ASRs (ký hiệu là ASRcan). Đ ềi u này mở rộng kinh i n đ ể được kh i t o b ng cách ở ạ ằ đ ềi n vào m c ứ độ c a l p ủ ớ được ch ỉđịnh. Định d ng c a toán tạ ủ ử này là

ASRcan = NewAsr(initial class).

• SetAttrToAsr : Toán tử này t o ra mạ ột mở ộ r ng kinh đ ểi n ASRcan1để lưu trữ các oid của oi.A, mà oi là các đối tượng quy nh tđị ại ASRcan [S0,...,Si,...,Sn] có thể và A là một tập thuộc tính c a oủ i. Định dạng của toán tử này là

ASRcan1 = SetAttrToASR(ASRcan, oi.A) nơi ASRcan1 là một ASR tạm thời

• AsrToCIs : Đây là toán tử save [S0, ... ,Sn]can để mộ ớ ạt l p t m th i qua qu n lý ờ ả đối tượng. Các [S0, ... ,Sn]can hình thức thể hi n cệ ủa mộ ớt l p mà thu c tính ộ đặc i m k đ ể ỹ

Các toán tử ơ ả c b n

• Select : Toán tử select được s dử ụng để ch n m t t p h p các b dọ ộ ậ ợ ộ ữ ệ li u trong ASR mộ đt áp ứng một đ ềi u kiện lựa chọn. Định dạng của toán tử này như sau: ASRcan = Select(ASRcan , selection condition),

hoặc [S0, ... ,Sn]can = δ<cond>( [S0, ... ,Sn]can).

• Navigate: Nếu bi u th c ể ứ đường d n [tẫ n-1.An] là một đường dẫn con của biểu thức

đường dẫn [t0.A1…An] và có đã tồn tại một mở ộ r ng kinh i n c a ARSđ ể ủ can[S0,…,Sn- 1]can. Ngoài ra, các miền của tn-1 cũng gi ng nh cố ư ủa Sn-1. Toán tử sẽ mở rộng lý thuyết ASRcan[S0,…,Sn-1]can để ASRcan[S0,…,Sn-1, Sn]can, nơi mà Sn là miền của thuộc tính An. Định dạng của toán tử này như sau.

ASRcan2 = Navigate(ASRcan1 , tn-1.An), hoặc [S0,…,Sn]can2 = Vtn-1.An ([S0,...,Sn-1]canl ).

• Join : Toán tử này được sử dụng để nối hai ASRs theo các đ ềi u ki n join. ệ Định dạng của toán tử này như sau :

ASRcan3=Join(ASRcan1, ASRcan2, join condition), Hoặc

[S0,…,S2n+1]can3 = [S0,…,Sn]can1 <join condition>[S0,…,Sn]can2

• Union: Toán tử này được sử ụ d ng để k t h p hai ASRs có l nh v c phù h p. ế ợ ĩ ự ợ Định dạng của toán tử này như sau :

ASRcan3=Union(ASRcan1, ASRcan2 ), Hoặc

[S0,…,Sn]can3 = [S0,…,Sn]can1 [S 0,…,Sn]can2

• Difference : Toán tử này được sử dụng để khác bi t hai ASRs có l nh v c phù ệ ĩ ự

hợp. Định dạng của toán tử này như sau : ASRcan3= Difference (ASRcan1, ASRcan2 ), Hoặc

• Project : Toán tử select lựa chọn một số cộ ừt t ASR quy định và lo i b các c t ạ ỏ ộ

khác. Định dạng của toán tử này là :

ASRcan2= Project (ASRcan, projection-list), Hoặc

[S0,…,Si]can2 = Π<projection-list>([S0,…,Sn]can) (0 ≤ i ≤ n) nơi project-list là danh sách các thuộc tính của ASRcan quy định Các toán tử ở ộ m r ng

• All: Toán tửđược sử ụ d ng để thực hi n All-Link ệ

• Exist: Tương tự như vậy, toán tửđược sử ụ d ng để thực hiện các Exist-Link. 3.4.2. Sơđồ thực thi chung

S ơ đồ thực thi chung là quá trình ánh xạ một đồ th truy vị ấn tới một tập hợp các toán tửđược xác định trong ph n trầ ước. M t ví dộ ụđể minh h a cho sọ ơ đồ th c ự

thi chung. Xem xét các đồ thị truy vấn thể hiện trong hình 3.7 cho Query 1. Các sơ đồ thực thi được thể hiện như sau.

Bước 1: asrl = NewAsr ("Employee"); Bước 2: asr2= Navigate(asr1, e.Supervisor); Bước 3: asr3= NewAsr("Department"); Bước 4: Select(asr3, d.Location= "Taipei"); Bước 5: asr4= Navigate(asr3, d.Manager);

Bước 6: asr5=Join(asr2, asr4, tmpVarl= tmpvar2); Bước 7: asr6= Project(asr5, e.Name);

Trong chương này, đã trình bày các kỹ thu t xậ ử lý truy vấn lồng nhau trong cơ sở dữ ệ li u hướng đối t ng. Truy v n l ng nhau ượ ấ ồ được th hi n trong m t OQL ể ệ ộ

khai báo ngôn ngữ được định nghĩa trong ODMG-93. Một truy vấn được chuy n ể

thành một đồ thị truy v n bấ ằng cách sử ụ d ng thuật toán chuyển đổi bi u ể đồ. ã Đ định nghĩa một tập hợp các toán tửđể thao tác ASRs trong việc x lý truy v n. ử ấ

Chương 4 - KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN

Đánh giá nh ng u i m và h n ch c a lu n v n: ữ ư đ ể ế ủ ă

Luận văn đã trình bày một cách có hệ thống các kiến th c liên quan ứ đến v n ấ đề truy vấn c s d li u s d ng bi u th c ơ ở ữ ệ ử ụ ể ứ đường d n , t p trung nghiên c u sâu v ẫ ậ ứ ề

vấn đề xử lý truy v n trong c sấ ơ ở dữ ệ li u hướng đối t ng nói chung và x lý truy ượ ử

vấn sử dụng bi u th c ể ứ đường d n nói riêng và v n ẫ ấ đề truy v n bi u th c ấ ể ứ đường d n ẫ

lồng nhau trong cơ sở dữ liệu hướng đối tượng.

Bên cạnh ó, trình bày vđ ề kỹ thuật Access Support Relations (ASRs) đểđại diện và thao tác các biểu thức đường dẫn. Một truy vấ đượn c chuyể đổn i thành đồ

thị truy vấn bằng cách sử ụ d ng thuật toán chuyển đổi biểu đồ.

Tuy nhiên luận v n m i ch d ng l i m c nghiên c u lý thuy t. ă ớ ỉ ừ ạ ở ứ ứ ế

Hướng phát triển tiếp theo của luận văn:

- Lượng hóa trong biểu thức đường dẫn.

- Kỹ thuậ ố ưt t i u hóa l p ch mậ ỉ ục và k thuỹ ậ ố ưt t i u hóa d a trên mô hình chi ự

Một phần của tài liệu (LUẬN văn THẠC sĩ) truy vấn cơ sở dữ liệu hướng đối tượng sử dụng biểu thức đường dẫn (Trang 50)

Tải bản đầy đủ (PDF)

(65 trang)