Tìm câu SQL từ chương nguồn, chuyển sang AQL và vẽ cây toán tử

9 541 0
Tìm câu SQL từ chương nguồn, chuyển sang AQL và vẽ cây toán tử

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

Thông tin tài liệu

TÌM CÂU SQL TỪ CHƯƠNG NGUỒN, CHUYỂN SANG AQL VÀ VẼ CÂYTOÁN TỬ Lê Huy Thập1 Nguyễn Hữu Sỹ2 Bài báo phương pháp tìm kiếm câu truy vấn dạng SQL (Structured Query Language) chương trình nguồn. Từ câu SQL tìm phương pháp tìm kiếm xâu [13], [14] tách ra: quan hệ sở, phép toán quan hệ…. Chuyển phép toán quan hệ sang phép toán đại số quan hệ. Xây dựng SQL và/hoặc AQL (Algebraic Query Language) nhằm hỗ trợ cho thuật toán tối ưu câu vấn tin CSDL phân tán song song. 1. Mở đầu Thực câu vấn tin tối ưu nâng cao hiệu trình xử lý vấn tin. Một số phương pháp tối ưu hóa dùng trực tiếp câu SQL hay câu AQL, tất mang tính chất phương pháp luận, tối ưu động Ingres hay Ingres – QOA… Tuy nhiên, vấn đề khó khăn lại nằm chỗ câu vấn tin SQL cụ thể có tồn chương trình nguồn hay không? Nếu có nằm vị trí nào? Hình dáng câu vấn tin sao? Và cuối làm để chuyển sang câu vấn tin dạng AQL. Trong phạm vi báo này, trình bày phương pháp tìm kiếm “kiểu vét cạn” chương trình nguồn dạng để tìm câu SQL, chuyển sang AQL, xây dựng toán tử để hỗ trợ cho phương pháp để tối ưu câu vấn tin AQL tức câu vấn tin SQL tìm được. 2. Nội dung 2.1. Giới thiệu số phương pháp tối ưu hóa câu vấn tin Thuật toán INGRES Câu vấn tin q có n quan hệ, INGRES phân rã p thành ql  q2  …  qm. Phân rã sử dụng hai kỹ thuật bản: Tách Thế [1], [6]. Thuật toán INGRES phân tán Cách tối ưu hóa INGRES phân tán [1], [6] dẫn xuất từ thuật toán dùng hệ INGRES tập trung. Vì thực tối ưu hóa động cho chiến lược xử lý câu vấn tin cho. Hàm mục tiêu thuật toán làm giảm tối đa chi phi tổ hợp thời gian truyền tin thời gian đáp ứng. Thuật toán có tên gọi D-INGRES-QOA. Thuật toán System R PGS. TS, trường ĐH Công nghiệp Hà Nội ThS, trường CĐSP Vĩnh Phúc Thuật toán System R [1], [6] thực tối ưu hóa tĩnh cách tìm kiếm vét cạn không gian phương án. Đầu vào System R toán tử phân rã câu vấn tin SQL. Đầu phương án thực để cài đặt toán tử tối ưu. Thuật toán System R* Thuật toán tối ưu hóa vấn tin phân tán System R* [1], [6] mở rộng chất kỹ thuật phát triển cho tối ưu hóa System R. Vì sử dụng phương pháp tiếp cận biên dịch, thực tìm kiếm vét cạn tất chiến lược có nhằm chọn chiến lược có chi phí nhỏ nhất. Thuật toán mô tả qua thủ tục R*QOA. Thuật toán SDD-1 Thuật toán tối ưu hóa SDD-1 [1], [6] có tên thuật toán leo đồi, xem thuật toán xử lý vấn tin phân tán đầu tiên. Trong thuật toán này, tinh chỉnh giải pháp khả thi ban đầu lặp lặp lại không cải thiện chi phí nữa. Thuật toán có tên SDD_1_QOA. 2.2. Câu vấn tin SQL, AQL toán tử Câu vấn tin dạng SQL có cấu trúc SELECT . FROM . WHERE . Vì tất câu mệnh logic đề chuyển dạng chuẩn hội, nên xét mệnh đề (điều kiện) sau WHERE mệnh đề chuẩn hội. Câu vấn tin dạng AQL kết phép chuyển đổi phép toán SQL sang phép toán đại số quan hệ (, , , , , …). Một SQL có nhiều AQL tương ứng. Việc chọn lựa AQL để thực dựa vào khả tối ưu hóa AQL, nghĩa tìm tập {AQL} AQL* để thực theo chiến lược có chi phí bé nhất, có lợi nhất… Cây toán tử việc thể câu SQL AQL cây. Cách biến đổi câu vấn tin phép tính quan hệ trở thành toán tử sau: i. Trước hết tạo nút quan hệ SQL nút nằm sau FROM. ii. Nút gốc tạo phép chiếu chứa thuộc tính kết quả, thuộc tính nằm sau SELECT. iii. Lượng tử hoá (vị từ sau WHERE ) chuyển thành phép tính quan hệ thích hợp. Câu vấn tin thực từ nút đến gốc. Chuỗi cho trực tiếp qua thứ tự xuất toán tử. Ghi chú: i. Các điều kiện sau WHERE – biểu thức logic – biểu thức logic luôn tương đương với biểu thức chuẩn hội [4], [6], [7], [11]. Do từ sau, không nói thêm điều kiện sau WHERE, xem biểu thức chuẩn hội. ii. Một toán tử dạng quan hệ tương ứng với nhiều toán tử dạng đại số quan hệ [4], [5], [6], [8], [10]. 2.3. Thuật toán tìm câu vấn tin SQL, tạo câu vấn tin AQL toán tử 2.3.1. Thuật toán tìm câu vấn tin SQL - TimKiem_SQL Thuật toán tìm kiếm vét cạn tất câu vấn tin dạng SQL chương trình nguồn đưa vào hàng đợi chờ xử lí. Thuật toán sau: TimKiem_SQL Vào: Chương trình nguồn Ra: Các câu truy vấn SQL /*Nội dung thuật toán*/ While NOT EOF If <  SQL> Push SQL Into QueueSQL End If Continue End While Bổ đề /*Nếu tồn câu SQL*/ /*Đưa SQL vào hàng đợi QueueSQL*/ /*Ngược lại, chuyển xuống đoạn sau */ Thuật toán có điểm dừng cuối tệp có độ phức tạp O(n). Thật vậy, điểm dừng điểm mà EOF = True. Gọi n số hàng tệp chương trình nguồn. Từ cấu trúc While NOT EOF… Continue End While, cho kết luận độ phức tạp O(n) 2.3.2. Thuật toán chuyển SQL sang AQL: CH_SQL_AQL Thuật toán lấy câu SQL lưu trữ hàng đợi QueueSQL, chuyển đổi kí hiệu phép toán quan hệ sang đại số quan hệ sau lưu vào hàng đợi QueueAQL. CH_SQL_AQL Vào: Hàng đợi SQL Ra: Hàng đợi QueueAQL kí hiệu câu truy vấn AQL /*Nội dung thuật toán*/ While QueueSQL   /*Với hàng đợi QueueSQL  */ Pop QueueSQL Save Into Tam.txt /*Lấy SQL từ QueueSQL ghi vào tệp Tam.tex*/ Do while NOT EOF() Push (các thuộc tính sau SELECT) Into QueueAQL Repeat Find If Push  Into QueueAQL End if If Trong biểu thức mệnh đề thay “AND” “ ” “OR” “ ” để được Push  > Into QueueAQL End if Until Repeat Find //Phép nối sau WHERE dòng lệnh phần câu lệnh có dạng // . // .. Replace . . By . If Push Into QueueAQL Else If có bước trước> Pop & . Push Into QueueAQL Else & Pop & . Push Into QueueAQL End if End if Until Push End While Chú ý tập phép toán quan hệ gồm {=, < , , >= , NOT, AND, OR} tương ứng với phép toán đại số quan hệ {=, < ,  , > ,  ,  ,  , }. Bổ đề Thuật toán sau số bước hữu hạn. Thật vậy, gọi n số SQL QueueSQL, m số phép toán nối, chọn,… Thì độ phức tạp thuật toán O(nm) 2.3.3. Thuật toán tạo câu lệnh AQL - TaoAQL Thuật toán dùng để thể câu truy vấn AQL TaoAQL Vào: QueueAQL Ra: Các câu vấn tin dạng AQL hàng đợi QueueVT_AQL /*Nội dung thuật toán*/ While QueueAQL   Str = ““ Count = Repeat Str = Str & “(“ & Pop Count = Count +1 Until For i = To Count Str = Str & “)“ End for Push Into QueueVT_AQL End While Bổ đề Thuật toán sau số bước hữu hạn. Thật vậy, gọi n số AQL QueueAQL, m số xâu cực đại tất AQL Thì độ phức tạp thuật toán O(nm) 2.3.4. Thuật toán vẽ toán tử: VeCayToanTu Thuật toán dùng để vẽ toán tử có QueueVT_AQL sau VeCayToanTu Vào: QueueVT_AQL Ra: Cây toán tử Output (“Cần vẽ toán tử thứ k = “) /*Nội dung thuật toán*/ Input k While (1) For i = To k -1 If QueueVT_AQL   Pop Else Exit While End if End for Pop Into StrXau // Lấy câu AQL thứ k khỏi hàng đợi cho vào biến StrXau StrXau = Right(StrXau, length (strXau) - l = length (strXau) For i = To l If strXau(i) = “(“ XauVe = Left(StrXau, i) Vẽ điểm gắn nhãn XauVe StrXau = Right(StrXau, l – i) l = length (strXau) Exit While End While Bổ đề Thuật toán sau số bước hữu hạn. Thật vậy, gọi m số xâu có nhiều tất AQL VT_AQL Thì độ phức tạp thuật toán O(km) Định lí: Tất thuật toán trình bày mục 2.3 dừng sau số hữu hạn bước. Chứng minh: Kết luận suy từ bổ đề 1, 2, 3, 4. 2.3.5. Ví dụ Cho CSDL gồm quan hệ NV(MaNV, TenNV, CN) DuAn(MaDA, TenDA, NS) BL(CN, Luong) PN(MaNV, MaDA, TG, CV) Trong đó: NV – Nhân viên: MaNV – Mã nhân viên, TenNV – Tên nhân viên, CN – Chuyên ngành. DuAn – Dự án: MaDA – Mã dự án, TenDA – Tên dự án, NS – Ngân sách. BL – Bảng lương: CN – Chuyên ngành, Luong – lương. PN – Phân nhiệm: MaNV – Mã nhân viên, MaDA – Mã dự án, TG – thời gian làm việc, CV -chức vụ. Giả sử tệp chương trình nguồn có lệnh SQL: Nghĩa là: Tìm tên nhân viên, trừ Lê Hồng Ngọc làm cho dự án “Cầu Long Biên” 12 tháng 24 tháng. a. Sau áp dụng thuật toán TimKiem_SQL, hàng đợi QueueSQL có nội dung sau: SELECT TenNV FROM NV , DuAn , PN WHERE PN.MaNV = NV.MaNV AND PN.MaDA = DuAn.MaDA AND TenNV “Lê Hòng Ngọc” AND TenDA = “Cầu Long Biên” AND (TG=12 OR TG=24). b. Sau áp dụng thuật toán CH_SQL_AQL nhận tệp Tam.txt chuỗi sau đây: “SELECT TenNV FROM NV, DuAn, PN WHERE PN.MaNV = NV.MaNV AND PN.MaDA = DuAn.MaDA AND TenNV “Lê Hòng Ngọc” AND TenDA = “Cầu Long Biên” AND (TG=12 OR TG=24)”. a. Tiếp tục áp dụng thuật toán câu lệnh AQL là: TenNV(TG=12  TG=24(TenDA = ”Cầu Long Biên”(TenNV  ”Lê Hồng Ngọc ” (DA (PN MaDA MaNV NV))))) b. Áp dụng thuật toán VeCayToanTu, toán tử hình (2-1). TenNV Chiếu TenNV  ”Lê Hồng Ngọc ” TenDA = ”Cầu Long Biên” Chọn TG=12  TG=24 MaDA DA MaNV Nối NV PN Hình 2–1. Ví dụ toán tử 3. Kết luận Trong tài liệu nghiên cứu ứng dụng lệnh SQLs, AQLs, OTs ((Operational Trees) toán tử) thường trước. Từ phương pháp tối ưu hóa thủ công, chí tự động tối ưu hóa thuậtt toán cho mục 2.1. Nhưng việc tìm kiếm thủ công chương trình nguồn, viết lại câu vấn tin SQL, tạo lập toán tử không thời gian không tránh sai sót. Phương pháp trình bày báo nhằm khắc phục nhược điểm đồng thời hỗ trợ đắc lực cho hướng nghiên cứu ứng dụng thuật toán song song, lập trình song song xử lí song song phân tán,… 4. Hướng phát triển Chuyển thuật toán mục 2.1, 2.2 sang thuật toán song song, dùng ngôn ngữ lập trình song song để thể chúng thủ tục hóa (mẫu hóa chương trình) thuật toán trên, nhằm nâng cao hiệu nghiên cứu, giảng dạy sử dụng. TÀI LIỆU THAM KHẢO 1. M.Tamer Özsu, Patrick Valduriez, Nguyên lý hệ liệu phân tán, Trần Đức Quang biên dịch, Nxb Thống kê, 1999. 2. Robert Sedgewick, Cẩm nang thuật toán Vol.1 and vol.2, Nxb Khoa học Kỹ thuật, 2001. 3. Lê Huy Thập, Giáo trình kỹ thuật lập trình, Nxb Khoa học tự nhiên công nghệ, Tập 1, 10-2008. 4. Lê Huy Thập, Cơ sở lý thuyết song song, Nxb Thông tin Truyền thông, 12-2011, Tái lần 1. 5. Lê Huy Thập, Bài giảng CSDL quan hệ, (Dùng giảng dạy Học viện Công nghệ bưu viễn thông), 2010. 6. Lê Huy Thập, Bài giảng CSDL phân tán, Dùng giảng dạy học viện công nghệ bưu viễn thông Đại học Sư phạm Hà Nội 2, 2007. 7. Lê Huy Thập, Phân mảnh giá trị lặp thuộc tính CSDL quan hệ, Tạp chí Tin học Điều khiển tối ưu, tập 23, số 1, tr. 86-98, 2007. 8. Lê Huy Thập, Giải toán toán tử đường ống ma trận đặc trưng, Tạp chí Tin học Điều khiển học, tập 27, số 2, tr. 107-118, 2011. 9. Lê Huy Thập, Nghiên cứu xác định dạng báo cáo tổng hợp linh hoạt, Tạp chí Tin học Điều khiển học, tập 25, số 2, tr. 188-200, 2009. 10. Lê Huy Thập, Bảng câu vấn tin quan hệ xử lý câu vấn tin bảng , Kỷ yếu hội thảo Quốc gia lần 13, Hưng Yên năm 2010, tr. 29-40, Nxb Khoa học Kỹ thuật, 2011. 11. Lê Huy Thập, Báo cáo động mệnh đề lọc liệu, Kỷ yếu hội thảo Quốc gia Biên Hòa, năm 2009, tr. 19-36, Nxb Khoa học Kỹ thuật, 2010. 12. Lê Huy Thập, Loại bỏ mẩu tin nhân thừa sở liệu quan hệ, Kỷ yếu hội thảo Quốc gia Đại Lải, năm 2007, tr. 219-227, Nxb Khoa học Kỹ thuật, 2008. 13. Lê Huy Thập, Chuẩn hoá xác định mối quan hệ cụm từ, tìm thông tin liên quan đến cụm từ, Kỷ yếu hội thảo Quốc gia Huế, năm 2007, tr. 57-58, Nxb Khoa học Kỹ thuật, 2008. 14. Lê Huy Thập, Tìm thông tin máy tính cách dùng chuỗi để so sánh, Kỷ yếu hội nghị KH kỷ niệm 30 năm thành lập Viện CNTT, tr. 422-427, Nxb Khoa học Tự nhiên Công nghệ. SEARCH QUERIES SQL FROM ORDER PROGRAM, TRANSFER TO AQL AND OPERATIONAL TREES Le Huy Thap, Nguyen Huu Sy Abstract The paper points out search method queries as SQL (Structured Query Language) in the sequential source program. From the found SQL statements we separate: the base relations, relational operations… Transfer the relational operations to the relational algebraic operrations. Construction AQL (algebraic Query Language) to algorithms of queries in the distributed database. support the optimization . TÌM CÂU SQL TỪ CHƯƠNG NGUỒN, CHUYỂN SANG AQL VÀ VẼ CÂYTOÁN TỬ Lê Huy Thập 1 Nguyễn Hữu Sỹ 2 Bài báo chỉ ra phương pháp tìm kiếm câu truy vấn dạng SQL (Structured Query. ii. Một cây toán tử dạng quan hệ sẽ tương ứng với nhiều cây toán tử dạng đại số quan hệ [4], [5], [6], [8], [10]. 2.3. Thuật toán tìm câu vấn tin SQL, tạo câu vấn tin AQL và cây toán tử 2.3.1 pháp tìm kiếm “kiểu vét cạn” chương trình nguồn dạng tuần tự để tìm ra các câu SQL, chuyển nó sang AQL, xây dựng cây toán tử để hỗ trợ cho các phương pháp để tối ưu câu vấn tin AQL tức là câu

Ngày đăng: 11/09/2015, 17:11

Từ khóa liên quan

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

Tài liệu liên quan