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ử join, điều kiện lọc ánh xạ đến toán tử select, projection list ánh xạ đến toán tử
- 57 -
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
- 58 -
Hình 3.7a Đồ thị truy vấn QG1
- 59 - 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 oi. Đị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ỹ thuật được quyết định bởi S0, ... ,Sn. Các định dạng của toán tử này là
- 60 - 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 [tn-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 ARScan[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 [S0,…,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
- 61 -
• 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);
- 62 -
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.
- 63 -
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 phí cơ sở.
- 64 - TÀI LIỆU THAM KHẢO
1. Michael Kifer, Won Kim, Yehoshua Sagiv (1992), “Querying object-oriented databases”, pp. 6-11.
2. Jeonghee Kim, Taisook Han, Kyu-young Whang (1999), “Visualization of Path Expressions in a Virtual Object-Oriented Database Query Language”.
3. R. Elmasri and S. B. Navati, Addison Wesley (2003), “Fundamental of Database Systems – 4th Edition”, chapter 21.
4. Đ.T. Nhân, N.T.N Mai, N.T.K Trang (2007), “Lý thuyết cơ sở dữ liệu 2”. 5. M. Tamer Özsu, José A. Blakeley (1994), “Query Processing in ObjectOriented
Database Systems”,pp.3-12
6. “Nested Query Processing Techniques in Object-oriented Databases” 7. Straube D. , and OZSU M (1990), “Queries and query processing in object
oriented database systems”, pp387–430.
8. Ioannidis Y, and Cha Kang Y (1990), “Randomized algorithms for optimizing large join queries”,pp312–321.
- 65 - PHỤ LỤC