Báo cáo khoa học: "CẢI TIẾN THUẬT TOÁN CẬP NHẬT GIA TĂNG CÁC KHUNG NHÌN THỰC KIỂU SPJ" ppt

6 505 2
Báo cáo khoa học: "CẢI TIẾN THUẬT TOÁN CẬP NHẬT GIA TĂNG CÁC KHUNG NHÌN THỰC KIỂU SPJ" ppt

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

Thông tin tài liệu

TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 1(36).2010 50 CẢI TIẾN THUẬT TOÁN CẬP NHẬT GIA TĂNG CÁC KHUNG NHÌN THỰC KIỂU SPJ IMPROVEMENT OF THE INCREMENTAL ACTUALIZATION ALGORITHM FOR THE SPJ MATERIALIZED VIEWS Nguyễn Trần Quốc Vinh Trường Đại học Kinh tế, Đại học Đà Nẵng TÓM TẮT Khung nhìn thực (materialized view, KNT) kiểu Select-Project-Join (SPJ) là KNT dựa trên truy vấn chỉ chứa các phép chọn, chiếu và nối, không bao gồm các phép toán thống kê như SUM, COUNT, AVG, MIN, MAX Kết quả thực thi nó có thể chứa các bản ghi trùng lặp. ABSTRACT Có thể nói rằng, thuật toán cập nhật gia tăng sử dụng số đếm số lần lặp lại của các bản ghi trong KNT là hiệu quả nhất đối với các KNT kiểu SPJ. Bài viết trình bày cải tiến trong cách tính số đếm và đề nghị thuật toán cập nhật gia tăng các KNT kiểu SPJ có sử dụng cách tính số đếm đã được cải tiến. The SPJ (Select-Project-Join) materialized views are the materialized views based on the queries that contain only the operations : selection, projection and join, excluding the aggregate functions such as SUM, COUNT, AVG, MIN, MAX The result of their execution can contain duplicated records. It should be noted that the incremental update algorithm using the counter of the duplication of the records is the most effective on the SPJ materialized views. In this paper the improvement of a method for calculating that counter is presented and an algorithm for incremental updates of the SPJ materialized views with improved counter calculation is also suggested. 1. Đặt vấn đề Có nhiều thuật toán khác nhau được phát triển để thực hiện cập nhật gia tăng (CNGT) các KNT nói chung và KNT kiểu SPJ nói riêng. Trong đó, n hiều công trình đã công bố [1–5] 2. nghiên cứu thuật toán cập nhật các KNT kiểu SPJ sử dụng số đếm (counter) số lần lặp lại của các bản ghi trong KNT. Từ các công trình này có thể thấy rằng, thuật toán sử dụng số đếm là hiệu quả nhất đối với CNGT các KNT kiểu SPJ. Trong thuật toán đó, số đếm được lưu trong bản ghi của KNT như là một trường riêng biệt. Số đếm sẽ được tăng (giảm) một đơn vị tương ứng với mỗi bản ghi trùng khớp được thêm mới vào (xoá từ) KNT. Qua nghiên cứu các thuật toán đã được công bố, tác giả nhận thấy có thể cải tiến thuật toán đó để nâng cao hiệu quả của nó trong một số trường hợp. KNT – kết quả thực thi của các truy vấn được giữ lại trong các bảng riêng biệt, được tạo ra với ý tưởng ban đầu là một công cụ hỗ trợ cho các kho dữ liệu và các hệ thống hỗ trợ ra quyết định. Tuy nhiên, nó có thể được ứng dụng cho bất kỳ CSDL nào. KNT kiểu SPJ TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 1(36).2010 51 KNT chỉ được triển khai thực tế cách đây không lâu trong các phiên bản cuối cùng của ba HQT CSDL thương mại Oracle, MS SQL Server và IBM DB2. Thực tế, mỗi hệ quản trị cơ sở dữ liệu có hỗ trợ KNT có thể có các ràng buộc về cấu trúc của truy vấn chọn lựa dữ liệu để tạo KNT [6, 7]. Nhưng về mặt lý thuyết, có thể tạo KNT trên cơ sở bất kỳ truy vấn nào, kể cả truy vấn phức tạp nhất với đầy đủ các thành phần cấu trúc và hàm cho phép trong cấu trúc của một truy vấn SELECT. KNT kiểu SPJ là KNT được tạo ra trên cơ sở truy vấn SPJ – truy vấn chỉ chứa các phép chọn, chiếu và nối; kết quả thực thi các truy vấn có thể chứa các bản ghi trùng lặp, nhưng không bao gồm các phép toán thống kê (SUM, COUNT, AVG, MIN, MAX…). Truy vấn tạo KNT kiểu SPJ thứ j có thể được biểu diễn như sau: mv ( , ,) j j jj Z Z FCT= = . Với SC jj j FF F= ∪ – tập hợp các trường của KNT thứ j; S j F – tập hợp các trường lựa chọn của truy vấn thứ j; j C – câu điều kiện lựa chọn WHERE; C j F – tập hợp các trường từ câu điều kiện lựa chọn WHERE j C ; T { 1, 2, } k jj j T Tk N= = – tập hợp các bảng gốc (base tables, BG) j Z được sử dụng trong . Ngoài ra, ta sẽ sử dụng một số ký hiệu sau đây: ins k j T ( del k j T ) – tập hợp các bản ghi (từ đây về sau, tập hợp các bản ghi có nghĩa là tập có thể chứa các phần tử trùng lặp) được thêm vào (xoá từ) BG k j T ; < ins k j T > (< del k j T >) – một bản ghi trong tập ins k j T ( del k j T ); ins () k jj FT<> ( del () k jj FT<> ) – bản ghi của KNT tương ứng với bản ghi được thêm mới (xoá từ) BG. Cứ mỗi khi dữ liệu trong các BG được cập nhật, các KNT sử dụng các dữ liệu đó trở nên không thực tiễn. Để duy trì các bảng KNT trong trạng thái thực tiễn (actual state), cần phải cập nhật chúng mỗi khi có sự thay đổi dữ liệu (insert, update, delete) trong các BG. Quá trình làm cho dữ liệu trong KNT tương ứng với dữ liệu trong các BG được gọi là sự thực tiễn hoá (actualization, cập nhật). Tuỳ thuộc vào cách thức thực hiện, cập nhật được chia thành ba phương pháp chính, đó là cập nhật hoàn toàn (COMPLETE), cập nhật gia tăng (INCREMENTAL hay còn gọi là FAST) và ép buộc (FORCE) [8]. Cập nhật hoàn toàn thực tế là thực thi lại truy vấn trên cơ sở KNT đã được tạo ra và lưu kết quả vào KNT. CNGT chỉ thực hiện điều chỉnh phần dữ liệu trong KNT liên quan đến các sửa đổi dữ liệu trong các BG. Cập nhật ép buộc nghĩa là khi có khả năng thì thực hiện CNGT, còn nếu không thì sử dụng cập nhật hoàn toàn. Trong hầu hết các trường hợp có thể thực hiện CNGT đối với các KNT kiểu SPJ. TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 1(36).2010 52 3. 3.1. Cải tiến cách tính số đếm Cải tiến thuật toán CNGT KNT kiểu SPJ bằng cách sử dụng số đếm Đề nghị sử dụng cách thức sau đây để tính các truy vấn SQL tính các tập hợp bản ghi cần phải thêm mới ins j Z vào (hoặc xoá del j Z từ) KNT trong quá trình CNGT. Cho mỗi bản ghi < ins k j T > trong tập hợp ins k j T các bản ghi được thêm vào (tương tự cho trường hợp xoá, < del k j T > và del k j T ) kiểm tra xem bản ghi ins () k jj FT<> ( del () k jj FT<> ) có mặt trong KNT hay không. Nếu có, thì tính giá trị CNT – số lần lặp lại của một bản ghi trong KNT. Tiếp theo, tính số ins ins ( ( )) k jj CNT COUNT F T= <> cho trường hợp thêm mới và del del ( ( )) k jj CNT COUNT F T= <> cho trường hợp xoá từ BG k j T . Nếu hai bản ghi của BG < k j T > có mặt trong KNT và giá trị các trường của chúng có mặt trong KNT trùng nhau, thì các số lượng lặp lại của chúng trong KNT giống nhau. Khẳng định này được suy ra từ định nghĩa của phép nối JOIN. Theo đó, ins mod( ) 0 CNT CNT = và del mod( ) 0 CNT CNT = . Từ đó suy ra, có thể tăng (giảm) số đếm trong KNT thêm một giá trị bằng ins CNT CNT (xuống một giá trị del CNT CNT ) tương ứng với mỗi bản ghi ins del () kk jj TT< >< > và loại bỏ ins del () kk jj TT< >< > từ ins k j T ( del k j T ). Việc thực hiện phép nối chiếm tỉ trọng lớn về mặt chi phí tài nguyên của hệ thống trong thực thi truy vấn. Cải tiến này cho phép giảm đáng kể số lượng các bản ghi trong tập hợp ins k j T ( del k j T ) cần phải thực hiện thuật toán CNGT thông thường – dựa trên việc thực thi phép nối. Qua đó nâng cao hiệu quả thực hiện CNGT các KNT. Tuy nhiên, nếu số lượng các bản ghi của BG k j T lớn hơn tích các số lượng bản ghi của các BG còn lại, thì cải tiến này có thể sẽ không hiệu quả. Sau đây, bài viết đề nghị thuật toán CNGT các KNT kiểu SPJ có sử dụng cải tiến trong cách tính số đếm vừa được trình bày. 3.2. Thuật toán CNGT các KNT kiểu SPJ Chúng ta xét riêng rẽ ba trường hợp thêm mới, sửa đổi và xoá các bản ghi. Việc sửa đổi một bản ghi có thể xem là tương đương với nhóm hai hành động liên tiếp: xoá một bản ghi và sau đó thêm mới một bản ghi. 3.2.1. Trường hợp thêm mới các bản ghi Giả sử tập hợp các bản ghi ins k i T được thêm vào BG k i T , tương ứng với lệnh INSERT ins k i T INTO k i T . TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 1(36).2010 53 Nhìn chung, các thuật toán đã được công bố tập trung tính tập hợp các bản ghi được thêm mới – tương đương với truy vấn: ins ins ( { }, , ) j j jj Z F CNT C T= ∪ , với 12 ins ( , , , , , ) kT N j jj j j T TT T T= và T N – số BG. Thay vì thực hiện phép nối các bảng j T , ta sử dụng cách tính số đếm cải tiến để tính ins CNT . Sau đó, với mỗi bản ghi trong tập ins j Z , kiểm tra sự có mặt của bản ghi dạng < j F > trong KNT. Nếu có thì thực hiện truy vấn có dạng: UPDATE KNT SET ins CNT CNT CNT= + WHERE j F = < j F >. Trong trường hợp ngược lại, thực thi truy vấn: INSERT INTO KNT VALUES (< {1} j F ∪ >). 3.2.2. Trường hợp xoá các bản ghi Giả sử tập hợp các bản ghi del k j T được xoá từ BG k i T , tương ứng với lệnh: DELETE del k j T FROM k j T . Tính tập hợp các bản ghi được xoá: del del ( { }, , ) j j jj Z F CNT C T= ∪ , với 12 del ( , , , , , ) kT N j jj j j T TT T T= . Thay vì thực hiện phép nối các bảng j T , ta sử dụng cách tính số đếm cải tiến để tính del CNT . Sau đó, với mỗi bản ghi từ tập hợp del j Z , kiểm tra sự có mặt của bản chi dạng < j F > trong KNT. Nếu có, thì xét hai trường hợp sau đây: – Nếu del CNT CNT> đối với bản ghi < j F >, thì thực thi truy vấn có dạng: UPDATE KNT SET del CNT CNT CNT= − WHERE ii FF=<> ; – Nếu del CNT CNT<= đối với bản ghi < j F >, thì thực thi truy vấn có dạng: DELETE FROM KNT WHERE j F = < j F >; Ngược lại, nếu không có bản ghi dạng < j F > trong KNT, thì không cần thực hiện hành động nào cả. 3.2.3. Trường hợp sửa đổi các bản ghi Giả sử trong BG k i T , tập hợp các bản ghi old k i T được thay đổi thành tập hợp new k i T , tương ứng với truy vấn: UPDATE k i T SET old new kk ii TT= . TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 1(36).2010 54 Dễ nhận thấy rằng, sửa đổi một bản ghi tương đương với xoá bỏ một bản ghi sau đó thêm mới một bản ghi khác. Đối với trường hợp tập hợp, cập nhật một tập hợp các bản ghi tương đương với xoá bỏ một tập hợp bản ghi, sau đó thêm mới một tập hợp bản ghi khác. Suy ra, trong trường hợp này có thể thực thi mục 3.2.2 và tiếp theo sau đó là mục 3.2.1 để CNGT KNT, với del old kk ii TT = và ins new kk ii TT= tương ứng. Trong đó, mỗi bản ghi < old k i T > tương ứng với một bản ghi < new k i T >. Bởi vì những bản ghi được thêm mới (xoá khỏi) BG có giá trị các trường không thoả mãn điều kiện chọn lựa j C chắc chắn sẽ không được thêm (xoá) khỏi KNT, nên đối với mỗi bản ghi < ins k j T > và < del k j T > cần phải kiểm tra hai trường hợp sau đây. Nếu j C (< del k j T >)=false, thì loại bỏ bản ghi < del k j T > từ del k j T , nếu j C (< ins k j T >)=false, thì loại bỏ bản ghi < ins k j T > từ ins k j T . Cải tiến này giảm số lượng các bản ghi cần phải xét thông qua việc loại bỏ các bản ghi không thoả mãn một cách rõ ràng điều kiện j C và theo đó đơn giản hoá quá trình thực thi phép nối. Nếu các bản ghi có dạng < old k j T > và < new k j T > thoả mãn điều kiện i F (< old k j T >) = j F (< new k j T >), thì không cần thực hiện thay đổi nào cả. Vì xoá một bản ghi, sau đó thêm mới một bản ghi hoàn toàn trùng khớp với bản ghi vừa xoá tương đương với việc không thực hiện thay đổi nào cả. Ta có thể loại bỏ cặp < old k j T > và < new k j T > này khỏi old k j T và new k j T . Ngược lại, cần phải giữ lại các bản ghi có dạng < old k j T > và < new k j T > thoả mãn điều kiện j F (< old k j T >) # j F (< new k j T >). Kết quả của quá trình đó là tập hợp del k j T và ins k j T tối thiểu. Và bây giờ có thể thực thi các trường hợp 3.2.2 và 3.2.1 cho tập hợp các bản ghi del k j T bị xoá từ BG và tập hợp các bản ghi ins k j T được thêm mới vào BG tương ứng. Ta cũng có thể thay thế việc giản lược old k j T và new k j T bằng cách sau. Khi đã tính del j Z và ins j Z , so sánh del j Z và ins j Z theo từng bản ghi. Nếu < del j Z > = < ins j Z >, thì ins ins del CNT CNT CNT= − khi ins CNT > del CNT và del del ins CNT CNT CNT= − khi ins CNT < del CNT . Tương ứng, del CNT = 0 và ins CNT = 0 khi ins CNT = del CNT . Không thể sử dụng thuật toán này các KNT được tạo trên cơ sở các truy vấn có thống kê, bởi vì đối với các KNT đó, mỗi một bản ghi KNT tương ứng với một tập hợp bản ghi từ phép nối JOIN( j T ), trong khi KNT chỉ chứa mỗi bản ghi bao gồm các trường lựa chọn S j F . Ta không thể đồng thời lưu các các giá trị của các trường chọn lựa S j F và điều kiện chọn lựa C j F trong một bản ghi, vì mỗi < S j F > tương ứng với nhiều < C j F >. TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 1(36).2010 55 4. Kết luận Thông qua nghiên cứu vấn đề, có thể kết luận: Thuật toán cập nhật gia tăng sử dụng số đếm số lần lặp lại của các bản ghi trong KNT là hiệu quả nhất đối với các KNT kiểu SPJ. Bài viết trình bày cải tiến trong cách tính số đếm và đề nghị thuật toán cập nhật gia tăng các KNT kiểu SPJ có sử dụng cách tính số đếm đã được cải tiến. Các cải tiến mang lại hiệu quả cao đặc biệt trong trường hợp số lượng bản ghi trong BG có dữ liệu thay đổi nhỏ hơn nhiều so với tích của số lượng bản ghi của các BG còn lại trong truy vấn. Sự chênh lệch đó càng lớn thì sự cải tiến càng có hiệu quả. Thuật toán được đề nghị tương đối đơn giản so với các thuật toán đã được đề cập để triển khai trong thực tiễn. TÀI LIỆU THAM KHẢO [1] Shmueli O. Maintenance of views. SIGMOD record. 1984. – 14. – tr. 240-255. http://portal.acm.org/citation.cfm?id=602293 [2] Blakeley A. J, Larson P., Tompa F.W. Efficiently Updating Materialized Views. ACM SIGMOD. 1986. – tr. 61-71. . http://portal.acm.org/citation.cfm? id=16894.16861 [3] Gupta A., Mumick I. S., Subrahmanian V. S. Maintaining Views Incrementally. In SIGMOD. 1993. – tr. 157-167. . http://portal.acm.org/ citation.cfm? id=170036.170066 [4] Gupta A., Mumick I.S. Maintenance of materialized views: Problems, Techniques and Applications. . http://www.informatik.uni-trier.de/~ley/db/ journals/debu/GuptaM95.html [5] Gupta D.K., Mumick I.S. Counting solutions to the view maintenance problem. Tech. rep. AT&T Bell Laboratories. 1992. . http://www.tempo.att .com/~jeannie/dept/pspapers/att-db-92-8.ps.Z [6] SQL Server 2005 manual. . http://msdn.microsoft.com/en-us/library/ms191432 (SQL.90).aspx [7] Oracle 11g manual. . 15/12/2008. http://download.oracle.com/docs/cd/B28359_01/server. 111/b28286/statements_6002.htm [8] Thomas Kyte. Expert one-on-one Oracle. Apress, 2003. . 17/01/2009. . với các KNT kiểu SPJ. Bài viết trình bày cải tiến trong cách tính số đếm và đề nghị thuật toán cập nhật gia tăng các KNT kiểu SPJ có sử dụng cách tính số đếm đã được cải tiến. Các cải tiến. đối với các KNT kiểu SPJ. Bài viết trình bày cải tiến trong cách tính số đếm và đề nghị thuật toán cập nhật gia tăng các KNT kiểu SPJ có sử dụng cách tính số đếm đã được cải tiến. The SPJ (Select-Project-Join). TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 1(36).2010 50 CẢI TIẾN THUẬT TOÁN CẬP NHẬT GIA TĂNG CÁC KHUNG NHÌN THỰC KIỂU SPJ IMPROVEMENT OF THE INCREMENTAL

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

Từ khóa liên quan

Mục lục

  • 2TĐặt vấn đề

  • 2TKNT kiểu SPJ

  • 2TCải tiến thuật toán CNGT KNT kiểu SPJ bằng cách sử dụng số đếm

    • Cải tiến cách tính số đếm

    • Thuật toán CNGT các KNT kiểu SPJ

      • Trường hợp thêm mới các bản ghi

      • Trường hợp xoá các bản ghi

      • Trường hợp sửa đổi các bản ghi

      • Kết luận

        • Shmueli O. Maintenance of views. SIGMOD record. 1984. – 14. – tr. 240-255. Uhttp://portal.acm.org/citation.cfm?id=602293U.

        • Blakeley A. J, Larson P., Tompa F.W. Efficiently Updating Materialized Views. ACM SIGMOD. 1986. – tr. 61-71. Uhttp://portal.acm.org/citation.cfm? id=16894.16861U.

        • Gupta A., Mumick I. S., Subrahmanian V. S. Maintaining Views Incrementally. In SIGMOD. 1993. – tr. 157-167. Uhttp://portal.acm.org/ citation.cfm? id=170036.170066U.

        • Gupta A., Mumick I.S. Maintenance of materialized views: Problems, Techniques and Applications. Uhttp://www.informatik.uni-trier.de/~ley/db/ journals/debu/GuptaM95.htmlU.

        • Gupta D.K., Mumick I.S. Counting solutions to the view maintenance problem. Tech. rep. AT&T Bell Laboratories. 1992. Uhttp://www.tempo.att .com/~jeannie/dept/pspapers/att-db-92-8.ps.ZU.

        • SQL Server 2005 manual. Uhttp://msdn.microsoft.com/en-us/library/ms191432 (SQL.90).aspxU. 15/12/2008.

        • Oracle 11g manual. Uhttp://download.oracle.com/docs/cd/B28359_01/server. 111/b28286/statements_6002.htmU. 17/01/2009.

        • Thomas Kyte. Expert one-on-one Oracle. Apress, 2003.

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

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

Tài liệu liên quan