Mục tiêu nghiên cứu đề tài là xây dựng được các thuật toán và phân hệ thực hiện cập nhật gia tăng đồng bộ và bất đồng bộ cho khung nhìn thực trên cơ sở truy vấn bất kỳ. Xây dựng được các thuật toán và phân hệ viết lại truy vấn để sử dụng toàn bộ, một phần khung nhìn thực hoặc kết hợp với các bảng gốc để trả lời các truy vấn của người dùng. Tích hợp được vào một hệ quản trị cơ sở dữ liệu mã nguồn mở (dự kiến PostgreSQL).
BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC ĐÀ NẴNG TÓM TẮT BÁO CÁO TỔNG KẾT ĐỀ TÀI KHOA HỌC VÀ CÔNG NGHỆ CẤP BỘ NGHIÊN CỨU XÂY DỰNG HỆ THỐNG HỖ TRỢ KHUNG NHÌN THỰC CHO CÁC HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU QUAN HỆ NGUỒN MỞ Mã số: KYTH-01 (B2017.DNA.06) Chủ nhiệm đề tài: TS NGUYỄN TRẦN QUỐC VINH Đà Nẵng, 2020 BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC ĐÀ NẴNG TÓM TẮT BÁO CÁO TỔNG KẾT` ĐỀ TÀI KHOA HỌC VÀ CÔNG NGHỆ CẤP BỘ NGHIÊN CỨU XÂY DỰNG HỆ THỐNG HỖ TRỢ KHUNG NHÌN THỰC CHO CÁC HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU QUAN HỆ NGUỒN MỞ Mã số: KYTH-01 (B2017.DNA.06) Đà Nẵng, 2020 DANH SÁCH NHỮNG THÀNH VIÊN THAM GIA NGHIÊN CỨU ĐỀ TÀI VÀ ĐƠN VỊ PHỐI HỢP CHÍNH Những thành viên tham gia nghiên cứu chính: STT Họ tên Nguyễn Trần Quốc Vinh Nguyễn Quang Thanh Phạm Anh Phương Nguyễn Hoàng Hải Nguyễn Văn Vương Lê Thành Công Lê Thị Thảo Nguyên Phạm Dương Thu Hằng Đơn vị công tác lĩnh vực chuyên môn Nội dung NC Nghiên cứu tổng thuật; nghiên Trường Đại học Sư phạm – Đại cứu lý thuyết & đề xuất giải pháp; học Đà Nẵng thử nghiệm triển khai ứng Công nghệ thông tin; Tiến sĩ dụng; viết báo cáo Sở Thông tin Truyền thông Đà Nghiên cứu lý thuyết; thử nghiệm Nẵng hệ thống, phần mềm Công nghệ thông tin; Tiến sĩ Trường Đại học Sư phạm – Đại học Đà Nẵng Thử nghiệm hệ thống, phần mềm Công nghệ thông tin; Tiến sĩ Trường Đại học Sư phạm – Đại học Đà Nẵng Phát triển hệ thống, phần mềm Công nghệ thông tin; Tiến sĩ Trường Đại học Sư phạm – Đại học Đà Nẵng Phát triển hệ thống, phần mềm Công nghệ thông tin; Học viên cao học Trường Đại học Sư phạm – Đại học Đà Nẵng Phát triển hệ thống, phần mềm Công nghệ thông tin; Thạc sĩ Học viên cao học CN Hệ thống thông tin khoá K32 Trường Phát triển hệ thống, phần mềm Đại học Sư phạm – Đại học Đà Nẵng Trường Đại học Sư phạm – Đại Nghiên cứu tổng thuật, viết báo học Đà Nẵng cáo Công nghệ thông tin; Thạc sĩ Những đơn vị phối hợp chính: Họ tên người đại diện đơn vị Tên đơn vị nước Nội dung phối hợp nghiên cứu Trường Đại học Sư phạm, Đại học Đà Nẵng Thử nghiệm triển khai ứng dụng hệ thống, phần mềm Nguyễn Bảo Hồng Thanh Sở Thơng tin Truyền thơng Đà Nẵng Triển khai thử nghiệm hệ thống, phần mềm Nguyễn Quang Thanh MỤC LỤC DANH MỤC VIẾT TẮT DANH MỤC BẢNG BIỂU DANH MỤC HÌNH ẢNH THÔNG TIN KẾT QUẢ NGHIÊN CỨU INFORMATION ON RESEARCH RESULTS MỞ ĐẦU Tính cấp thiết đề tài Mục tiêu Cách tiếp cận Phương pháp nghiên cứu Đối tượng phạm vi nghiên cứu 7 Nội dung nghiên cứu CHƯƠNG TỔNG QUAN 1.1 Khung nhìn ảo khung nhìn thực 1.2 Ứng dụng khung nhìn thực 1.3 Cập nhật khung nhìn thực 1.4 Dùng khung nhìn thực để trả lời truy vấn 1.5 Kiến trúc PostgreSQL 1.6 Kết chương CHƯƠNG BIỂU DIỄN VÀ SO SÁNH TRUY VẤN 2.1 Mơ hình biểu diễn truy vấn 2.2 So sánh biểu thức điều kiện 2.3 Chiến lược so sánh truy vấn 2.4 Kết chương CHƯƠNG CẬP NHẬT GIA TĂNG ĐỒNG BỘ 3.1 Truy vấn SPJ 3.2 Truy vấn bao gồm hàm gộp 10 3.3 Truy vấn đệ quy 10 3.4 Truy vấn lồng 13 3.5 Kết chương 13 CHƯƠNG CẬP NHẬT GIA TĂNG BẤT ĐỒNG BỘ 13 4.1 Cập nhật gia tăng KNT lỗi trạng thái 13 4.2 Thuật toán cập nhật gia tăng bất đồng 13 4.3 Kết chương 14 CHƯƠNG SINH MÃ NGUỒN TỰ ĐỘNG ĐỂ THỰC HIỆN CẬP NHẬT GIA TĂNG14 5.1 Một số tính trigger PostgreSQL 14 5.2 Một số kỹ thuật chung 14 5.3 Truy vấn SPJ 14 5.4 Truy vấn bao gồm hàm gộp 14 5.5 Truy vấn đệ quy 15 5.6 Cập nhật bất đồng 16 5.7 Thực nghiệm thảo luận 16 5.8 Kết chương 17 CHƯƠNG VIẾT LẠI TRUY VẤN ĐỂ SỬ DỤNG KHUNG NHÌN THỰC 17 6.1 Nghiên cứu mã nguồn PostgreSQL 17 6.2 Lưu trữ thông tin khung nhìn thực 17 6.3 Truy vấn SPJ 17 6.4 Truy vấn với hàm gộp 17 6.5 Truy vấn lồng 18 6.6 Xây dựng mô-đun 18 6.7 Tích hợp vào mã nguồn 18 6.8 Thử nghiệm đánh giá 18 6.9 Kết chương 19 KẾT LUẬN………………………………………………………………………………….20 DANH MỤC VIẾT TẮT Viết tắt CNGT CSDL HQT KNT CTE SQL Diễn giải Cập nhật gia tăng Cơ sở liệu Hệ quản trị Khung nhìn thực Common table expression Structured query language DANH MỤC BẢNG BIỂU Bảng 5.1 Thời gian thực thi truy vấn thao tác liệu bảng gốc (ms) Bảng 5.2 Thời gian CNGT KNT đệ quy (ms) Bảng 5.3 Thời gian CNGT bất đồng (ms) Bảng 6.3 Đánh giá hiệu mô-đun viết lại truy vấn Bảng 6.6 Đánh giá hiệu tích hợp mơ-đun viết lại truy vấn 16 16 17 18 19 DANH MỤC HÌNH ẢNH Hình 3.1 Truy vấn đệ quy chung ban đầu 10 Hình 3.2 Truy vấn đệ quy chung chuyển đổi 10 Hình 3.7 CNGT cho kiện thêm trường hợp khơng cần đảm bảo tính tồn vẹn tham chiếu10 Hình 3.8 CNGT cho kiện xóa trường hợp khơng cần đảm bảo tính tồn vẹn tham chiếu 11 Hình 3.9 CNGT cho kiện xóa trường hợp phải đảm bảo tính tồn vẹn tham chiếu 11 Hình 3.10 CNGT trường hợp không cần đảm bảo tính tồn vẹn tham chiếu cho kiện xóa 12 Hình 3.11 Trường hợp nrt_query trả cung 13 Hình 5.1 Thủ tục sinh mã nguồn trigger 15 Hình 5.2 Mơ hình ngun mẫu hệ thống cập nhật bất đồng 16 Hình 6.1 Q trình xử lý truy vấn PostgreSQL mơ-đun viết lại truy vấn 18 THÔNG TIN KẾT QUẢ NGHIÊN CỨU Thông tin chung - Tên đề tài: Nghiên cứu xây dựng hệ thống hỗ trợ khung nhìn thực cho hệ quản trị sở liệu quan hệ nguồn mở - Mã số: KYTH-01 (B2017.DNA.06) - Chủ nhiệm đề tài: TS Nguyễn Trần Quốc Vinh - Tổ chức chủ trì: Đại học Đà Nẵng - Thời gian thực hiện: Từ tháng 01 năm 2017 đến tháng 12 năm 2018 Mục tiêu Mục tiêu tổng quát: Xây dựng hệ thống hỗ trợ khung nhìn thực cho hệ quản trị sở liệu quan hệ nguồn mở Mục tiêu cụ thể: - Xây dựng thuật toán phân hệ thực cập nhật gia tăng đồng bất đồng cho khung nhìn thực sở truy vấn - Xây dựng thuật toán phân hệ viết lại truy vấn để sử dụng toàn bộ, phần khung nhìn thực kết hợp với bảng gốc để trả lời truy vấn người dùng - Tích hợp vào hệ quản trị sở liệu mã nguồn mở (dự kiến PostgreSQL) Tính sáng tạo Khung nhìn thực mở nhiều vấn đề nghiên cứu lý thuyết triển khai Cho đến có hàng trăm báo khoa học lĩnh vực công bố cập nhật gia tăng khung nhìn thực, tìm kiếm khả sử dụng khung nhìn thực viết lại truy vấn để sử dụng khung nhìn thực lựa chọn truy vấn để tạo khung nhìn thực Tuy nhiên, có bốn hệ quản trị sở liệu thương mại hàng đầu giới triển khai thành cơng khung nhìn thực, Oracle, SQL Server, DB2 gần SQL Anywhere PostgreSQL hệ quản trị sở liệu quan hệ mã nguồn mở hàng đầu giới, Bộ Thông tin Truyền thông Việt Nam lựa chọn khuyến cáo sử dụng đến chưa hỗ trợ khung nhìn thực cấp độ cập nhật gia tăng hay tự động viết lại truy vấn để sử dụng khung nhìn thực Vấn đề chủ yếu nằm chỗ từ lý thuyết kết cơng trình nghiên cứu đến triển khai thực tế khoảng cách lớn, thiếu nghiên cứu triển khai thực tiễn cách tự động cho truy vấn đầu vào chí cho truy vấn đầu vào thoả mãn điều kiện cho trước Đề tài này tham khảo 150 cơng trình nghiên cứu khác nhau, từ cung cấp tương đối đầy đủ từ lý thuyết liên quan cập nhật gia tăng viết lại truy vấn để sử dụng khung nhìn thực đến cách thức triển khai hệ quản trị sở liệu mã nguồn mở, cụ thể PostgreSQL Kết nghiên cứu Đề tài cung cấp tương đối đầy đủ mặt lý thuyết cách thức triển khai KNT HQT CSDL quan hệ mã nguồn mở, cụ thể PostgreSQL - Nghiên cứu tổng quan khung nhìn thực - Xây dựng mơ hình biểu diễn so sánh truy vấn - Xây dựng thuật toán CNGT đồng bất đồng cho KNT sở truy vấn SPJ, truy vấn bao gồm hàm thống kê, truy vấn lồng, truy vấn đệ quy có chứa phép nối - Xây dựng thuật tốn cơng cụ sinh mã nguồn tự động triển khai thuật toán CNGT đề xuất - Xây dựng thuật toán viết lại truy vấn để sử dụng KNT cho trường hợp truy vấn SPJ, truy vấn bao gồm hàm gộp - Thực thực nghiệm phân tích, đánh giá kết thu Sản phẩm Yêu cầu chất lượng sản phẩm Stt Tên sản phẩm SL I 1.1 1.2 1.3 II 2.1 III 3.1 Sản phẩm khoa học (Các cơng trình khoa học công bố: sách, báo khoa học ) Bài báo quốc tế thuộc danh mục Scopus (Q3): A solution for synchronous incremental maintenance of materialized views based on SQL recursive query Authors: Nguyen Tran Quoc Vinh, Dang Thanh Hao, Pham Duong Thu Hang, Abeer Alsadoon, PW Chandana Prasad, Nguyen Viet Anh Eastern-European Journal of Enterprise Technologies (Q3) No: 11 Pages: 12 Year 2019 (Feb Bài báo tạp chí/kỷ 27 2020) 02 yếu hội thảo quốc tế Bài báo quốc tế thuộc danh mục Scopus (Q3): A new solution for asynchronous incremental maintenance of materialized views Authors: Nguyen Tran Quoc Vinh, Le Van Khanh, Tran Trong Nhan, Tran Dang Hung, PW Chandana Prasad, Abeer Alsadoon, Pham Duong Thu Hang Eastern-European Journal of Enterprise Technologies (Q3) No: VOL 1, NO (103) Pages: 6-13 Year 2020 Sách giáo trình 01 Cơ sở liệu, NXB Đà Nẵng, 2019 Sách tham khảo 01 Khung nhìn thực: Lý thuyết triển khai, NXB Đà Nẵng, 2019 Sản phẩm đào tạo (Cử nhân, Thạc sỹ, Tiến sỹ ) Bảo vệ thành cơng Học viên 1: Trần Duy Bình Tên đề tài: Nghiên cứu ứng dụng Anchor Modeling khung nhìn thực để nâng cao hiệu quản lý điểm học sinh trường THPT Ba Gia tỉnh Quảng Ngãi Người hướng dẫn: TS Nguyễn Trần Quốc Vinh Thạc sĩ 02 Năm bảo vệ: 2019 Học viên 2: Lê Thị Thanh Châu Tên đề tài: Nghiên cứu ứng dụng khung nhìn thực để nâng cao hiệu phần mềm Quản lý đào tạo Trường Đại học Tài – Kế toán Người hướng dẫn: TS Nguyễn Trần Quốc Vinh Năm bảo vệ: 2019 Sản phẩm ứng dụng Hoạt động tốt Phân hệ hỗ trợ khung Mã nguồn mở nhìn thực tích Đảm bảo yêu cầu đặt mục tiêu đề tài (cập 01 hợp vào hệ quản trị nhật gia tăng; cập nhật đồng bất đồng bộ; truy vấn nối trong, sở liệu PostgreSQL nối ngoài, bao gồm hàm gộp, truy vấn lồng, đệ quy; viết lại truy vấn để khai thác khung nhìn thực) Phương thức chuyển giao, địa ứng dụng, tác động lợi ích mang lại kết nghiên cứu Phương thức chuyển giao: Sản phẩm ứng dụng dự kiến chuyển giao: Phân hệ hỗ trợ khung nhìn thực tích hợp vào PostgreSQL, cung cấp dạng mã nguồn mở Phân hệ thực cập nhật gia tăng đồng bất đồng khung nhìn thực nhận biết khả sử dụng khung nhìn thực để viết lại truy vấn nhằm tăng tốc độ thực thi truy vấn Các lệnh liên quan bổ sung vào hệ thống lệnh PostgreSQL Địa ứng dụng: PostgreSQL tích hợp khả hỗ trợ khung nhìn thực sử dụng rộng rãi, đặc biệt hữu dụng hệ thống thông tin quản lý có yêu cầu xử lý phức tạp lượng liệu lớn với thời gian thực thi truy vấn thấp chí chế độ thời gian thực yêu cầu giảm tải tài nguyên hệ thống Tại Việt Nam, PostgreSQL ngày sử dụng rộng rãi, đặc biệt quan quản lý Nhà nước hệ thống giáo dục đại học, cao đẳng Tác động lợi ích mang lại kết nghiên cứu: Đối với lĩnh vực giáo dục đào tạo: Kết đề tài tạo sách giáo trình sách tham khảo có giá trị liên quan đến lĩnh vực tối ưu hoá thực thi truy vấn hệ quản trị sở liệu nói riêng lĩnh vực liên quan quản trị liệu nói chung Tài liệu sử dụng để phục vụ đào tạo bậc đại học sau đại học, nguồn tham khảo có giá trị mặt khoa học độ tin cậy cao góp phần nâng cao chất lượng đào tạo, trước hết Đại học Đà Nẵng, lĩnh vực công nghệ thông tin Ngồi ra, tham gia thực đề tài cịn có học viên cao học giảng viên trẻ Đại học Đà Nẵng Việc tham gia thực đề tài giúp học viên cao học cán tích lũy thêm nhiều kinh nghiệm quí báu góp phần rèn luyện kỹ nghiên cứu khoa học Đối với lĩnh vực khoa học công nghệ có liên quan; Đối với phát triển kinh tế-xã hội; Đối với tổ chức chủ trì sở ứng dụng kết nghiên cứu INFORMATION ON RESEARCH RESULTS Reneral information - Title: Building a system for supporting materialized views in open source database management systems -Code number: KYTH-01 (B2017.DNA.06) - Cordinator: Nguyen Tran Quoc Vinh - Implementing organization: The University of Da Nang - Duration: From 01/2017 to 12/2018 (12/2019) Objective This research aims to build a sub-system that supports materialized views for open source database management systems with the following concrete objectives: - Build the algorithms for synchronous and asynchronous incremental update of materialized views created based on any SQL queries - Build a sub-system that implements incremental update of materialized views synthrisizing source code in C which undertake those built algorithms - Build the algorithms and sub-system for query re-writing to use whole materialized view, part of materialized view or in combination with base tables to answer user’ queries - Integrating sub-systems to a open source database management system (PostgreSQL is suggested) Creativeness and innovativeness Materialized views are implemented in the famous database management systems, such as Oracle, IBM DB2 and MS SQL Server They are not supported in the open source database management systems The possible obstructs are the difficulty in building the sub-systems that i) update the materialized views incrementally by the automatic way; and ii) re-write user’ queries to use materialized views automatically The research builds the algorithms for synchronous and asynchronous incremental updates of materialized views based on SPJ queries, queries with aggregate functions, nested subqueries and recursive queries It proposes the algorithms as well as builds the programs that generates automatically the source code on C proggramming language for incremental update of materialized views in the database management system PostgreSQL by synchronous and asynchronous manner Concerning using materialized views to answer queries, this research builds algorithms for the cases of SPJ queries, queries with aggregations and nested subqueries The supporting subsytem is built and integrated into PostgreSQL Research results The research meets above mentioned targets It provides relatively adequate theory and implementing approach to support materialized views in open source database management systems, PostgreSQL in concrete - Studies exhaustedly more than 150 published works in the field - Builds models for queries presentation and comparision - Builds the algorithms for synchronous and asynchronous incremental updates of materialized views based on SPJ queries, queries with aggregate functions, nested subqueries and recursive queries - Builds the algorithms and tool for automatic source code synthesization implementing proposed incremental update algorithms - Bilds the algorithms for queries rewriting to use materialized views - Provides number of experiments, analyzes and evaluates obtained experimental results Products # Product name Qlty Requirements I Scientific results Papers on international journals / published, Scopus Q3; accepted, 1.1 02 conference proceedings Scopus Q3 1.2 Textbook 01 Accepted by UD-USE and printed 1.3 Book 01 Printed II Trainning products 2.1 Master 02 Defensed thethises III Application products The sub-systems work well, satisfy all Sub-systems supporting materialized the features mentioned above and is 3.1 views which is integrated into 01 integrated into PostgreSQL v10 and PostgreSQL tested Effects, transfer alternatives of research results and applicability Transfer alternatives All the source code of related projects are published as open souce under PostgreSQL lisence Applicability PostgreSQL with supporting materialized views may be used popularly It especially useful for the management information systems with features which require complicated processing on large amount of data, even require processing results in realtime mode but decreasing amount of system resource used In Vietnam, PostgreSQL becomes popular database management system day after day, especially in the government institutions and higher education system Positive effects - The Ministry of Information and Communication of Vietnam has issued the circular No 49/2009/TT-BTTTT that recommends to choose the PostgreSQL as the database management system for state and public organiztions The success of the implementation of the materialized view technology in PostgreSQL will reward the big social-economic effectiveness - The textbook and book published may be very valued reference source for undergradute students, grateduate, postgradute students and reserachers The project clearly improves the ability of master students and young lecturers who directly participate in the research MỞ ĐẦU Tính cấp thiết đề tài Có thể nâng cao hiệu hệ thống thông tin nói chung hệ quản trị sở liệu nói riêng giải pháp đẩy mạnh trang bị phần cứng áp dụng giải pháp phần mềm Tuy nhiên, giải pháp phần cứng giúp giải vấn đề khơng thể đắt đỏ, đặc biệt yêu cầu kết xử lý phức tạp lượng liệu lớn với thời gian thực thi truy vấn thấp chí chế độ thời gian thực ngày trở nên thường xun Khung nhìn thực cơng nghệ hữu dụng, giúp tăng tốc độ thực thi truy vấn nhiều lần, giúp giảm tải cho hệ quản trị sở liệu nói riêng hệ thống nói chung Cụ thể, khung nhìn thực giúp giảm số lượng lần đọc/ghi vật lý, khối lượng liệu cần xử lý giảm; giảm tải vi xử lý trung tâm tài nguyên nói chung; giảm khối lượng thao tác nối, xếp tính hàm tổng hợp Tất nhiên, hệ thống phải trả giá định để thực cập nhật khung nhìn thực Khung nhìn thực triển khai ứng dụng hiệu bốn hệ quản trị sở liệu thương mại hàng đầu giới, Oracle, SQL Server, IBM DB2 SQL Anywhere Chưa có hệ quản trị sở liệu nguồn mở hỗ trợ khung nhìn thực Nguyên nhân việc chậm triển khai ứng dụng công nghệ hiệu hệ quản trị sở liệu nguồn mở phức tạp mặt lý thuyết nghiên cứu lại rời rạc, triển khai thực tế cập nhật gia tăng tự động cho truy vấn đầu vào lại khó khăn hơn, làm kìm hãm việc sử dụng rộng rãi khung nhìn thực hệ thống thơng tin Nếu vấn đề cập nhật gia tăng liệu khung nhìn thực ý nhiều cơng trình khoa học, nói chưa có công trình nghiên cứu cách đầy đủ vấn đề triển khai thuật toán cập nhật gia tăng hệ quản trị sở liệu thực tế cho truy vấn đầu vào vấn đề tìm kiếm ứng cử viên để viết lại truy vấn sử dụng khung nhìn thực Việc xây dựng phân hệ hỗ trợ khung nhìn thực hệ quản trị sở liệu nguồn mở địi hỏi nguồn lực lớn với nhiều khó khăn dựa kết nghiên cứu công bố PostgreSQL hệ quản trị sở liệu nguồn mở hàng đầu nay, thể hiệu tính ổn định vượt trội so với hệ quản trị sở liệu khác quản trị lượng lớn liệu; Bộ Thông tin Truyền thông khuyến cáo lựa chọn theo Thông tư số 49/2009/TT-BTTTT Nghiên cứu xây dựng hệ thống hỗ trợ khung nhìn thực cho hệ quản trị sở liệu quan hệ nguồn mở triển khai thực tế với PostgreSQL cấp thiết Mục tiêu Mục tiêu tổng quát: Xây dựng hệ thống hỗ trợ khung nhìn thực cho hệ quản trị sở liệu quan hệ nguồn mở Mục tiêu cụ thể: – Xây dựng thuật toán phân hệ thực cập nhật gia tăng đồng bất đồng cho khung nhìn thực sở truy vấn – Xây dựng thuật toán phân hệ viết lại truy vấn để sử dụng tồn bộ, phần khung nhìn thực kết hợp với bảng gốc để trả lời truy vấn người dùng – Tích hợp vào hệ quản trị sở liệu mã nguồn mở (dự kiến PostgreSQL) Cách tiếp cận Phương pháp nghiên cứu – Phương pháp nghiên cứu lý thuyết: i) Nghiên cứu tài liệu hệ quản trị sở liệu nói chung khung nhìn thực nói riêng; kiến trúc xử lý hệ quản trị sở liệu; chế phương pháp cập nhật khung nhìn thực; sinh mã nguồn tự động; vấn đề viết lại truy vấn tương đương; kỹ thuật đánh giá hiệu hệ quản trị sở liệu ii) Nghiên cứu công trình công bố, thực tổng hợp, cải tiến thuật toán cập nhật gia tăng công bố phát triển thuật toán cập nhật gia tăng iii) Phát triển thuật toán sinh mã nguồn tự động, triển khai thuật toán gia tăng khung nhìn thực chế đồng bất đồng – Phương pháp nghiên cứu thực nghiệm: Xây dựng phân hệ theo mơ hình phát triển phần mềm thác nước: i) Xây dựng phân hệ sinh tự động mã nguồn trigger thực cập nhật đồng bộ; xây dựng phân hệ sinh tự động mã nguồn cá trigger thu thập thông tin cập nhật liệu sở liệu, sinh tự động mã nguồn mô đun thực cập nhật bất đồng bộ; nghiên cứu tích hợp phân hệ vào hệ quản trị sở liệu mã nguồn mở PostgreSQL ii) Xây dựng phân hệ phát viết lại truy vấn để sử dụng khung nhìn thực; tích hợp vào phân hệ vào hệ quản trị sở liệu mã nguồn mở PostgreSQL Đối tượng phạm vi nghiên cứu Đối tượng nghiên cứu đề tài bao gồm: – Các hệ quản trị sở liệu thương mại có hỗ trợ khung nhìn thực – Các hệ quản trị sở liệu mã nguồn mở kiến trúc chúng – Truy vấn lựa chọn liệu SQL đại số quan hệ – Khung nhìn thực, thuật tốn cập nhật khung nhìn thực – Kỹ thuật viết lại truy vấn – Các kỹ thuật sinh mã nguồn tự động Trong khuôn khổ đề tài này, phạm vi nghiên cứu giới hạn: – Cập nhật gia tăng đồng bất đồng – Truy vấn bao gồm phép nối trong, nối ngoài; truy vấn SPJ, truy vấn bao gồm hàm gộp; truy vấn lồng; truy vấn đệ quy – Truy vấn không bao gồm phép tự nối – Phân hệ phần mềm xây dựng cho trường hợp hệ quản trị sở liệu mã nguồn mở PostgreSQL Nội dung nghiên cứu Để đạt mục tiêu đặt ra, nội dung nghiên cứu triển khai gồm: a) Nghiên cứu tổng quan đề tài b) Nghiên cứu đề xuất mơ hình giải pháp – Phát triển mơ hình biểu diễn truy vấn Định nghĩa phép toán truy vấn Phát triển thuật toán biến đổi so sánh biểu thức, chiến lược so sánh truy vấn – Xây dựng thuật toán cập nhật gia tăng đồng khung nhìn thực tạo sở truy vấn đầu vào thuộc lớp truy vấn hỗ trợ, bao gồm SPJ, nối ngồi, hàm gộp nhóm, truy vấn lồng, truy vấn đệ quy sở tổng hợp cải tiến thuật tốn cơng bố – Xây dựng thuật toán cập nhật gia tăng bất đồng khung nhìn thực tạo sở truy vấn đầu vào thuộc lớp truy vấn hỗ trợ, bao gồm SPJ, nối ngồi, hàm gộp nhóm, truy vấn lồng, truy vấn đệ quy sở tổng hợp cải tiến thuật tốn cơng bố – Xây dựng thuật toán sinh tự động mã nguồn cho tất kiện cập nhật liệu bảng gốc liên quan cho trường hợp cập nhật đồng cập nhật bất đồng Mã nguồn sinh thực triển khai thuật toán cập nhật gia tăng khung nhìn thực – Xây dựng thuật tốn sinh mã nguồn mơ-đun thực cập nhật bất đồng – Xây dựng thuật toán phát viết lại truy vấn nhằm sử dụng khung nhìn thực thực thi truy vấn Cơ chế kết hợp có tính đến trường sử dụng phần bảng gốc, phần khung nhìn thực thế, cho phép mở rộng phạm vi sử dụng khung nhìn thực c) Cài đặt kiểm thử – Cài đặt phân hệ sinh tự động mã nguồn trigger triển khai thuật toán cập nhật đồng – Cài đặt phân hệ sinh tự động mã nguồn trigger thực thu thập thông tin cập nhật liệu sở liệu; phân hệ sinh tự động mô-đun triển khai thuật toán cập nhật bất đồng – Cài đặt mơ-đun phát khả sử dụng khung nhìn thực viết lại truy vấn nhằm sử dụng khung nhìn thực thực thi truy vấn – Cài đặt, tích hợp triển khai thành cơng phân hệ hỗ trợ khung nhìn thực PostgreSQL; bổ sung lệnh vào hệ thống lệnh PostgreSQL d) Triển khai thử nghiệm, đánh giá phân hệ xây dựng – Thử nghiệm hệ thống – Phân tích đánh giá kết CHƯƠNG TỔNG QUAN Khung nhìn ảo khung nhìn thực Khung nhìn thực bảng đặc biệt lưu trữ cách dư thừa kết thực thi truy vấn, sử dụng để trả lời truy vấn tương đương truy vấn khác xuất sau KNT quan trọng đặt nhiều câu hỏi nghiên cứu, chẳng hạn cập nhật KNT bao gồm cập nhật gia tăng (CNGT, incremental update, incremental maintenance) chiến lược bảo trì, sử dụng KNT để trả lời truy vấn tối ưu hóa,…trong lĩnh vực khác nhau, lĩnh vực truyền thống kho liệu, truyền liệu, web web ngữ nghĩa, hệ thống phân tán quan tâm đến định hướng tương lai IoT, thương mại thơng minh phân tích, ứng dụng web 1.2 Ứng dụng khung nhìn thực 1.3 Cập nhật khung nhìn thực Mỗi liệu bảng gốc cập nhật, KNT sử dụng liệu từ bảng gốc trở nên khơng thực tiễn (not actual, khơng cịn đúng) Q trình làm cho liệu KNT tương ứng với thay đổi liệu bảng gốc gọi cập nhật (actualization, update, maintenance) KNT Nếu thực thi lại truy vấn lưu trữ kết vào KNT (giống tạo KNT), trình cập nhật gọi tính lại hồn tồn Nếu thay đổi KNT tương ứng với phần liệu thay đổi bảng gốc, gọi CNGT 1.4 Dùng khung nhìn thực để trả lời truy vấn 1.5 Kiến trúc PostgreSQL 1.6 Kết chương Cần phải có nhóm thuật tốn CNGT thực hệ thống hoá, tổng hợp ưu điểm thuật tốn cơng bố trước đây; thực thống hoá theo chiến lược; cần thực cải tiến chúng xây dựng thuật tốn sinh mã nguồn tự động để tự động triển khai thuật toán CNGT KNT viết lại truy vấn để sử dụng KNT sở truy vấn đầu vào 1.1 CHƯƠNG BIỂU DIỄN VÀ SO SÁNH TRUY VẤN 2.1 Mơ hình biểu diễn truy vấn 2.1.1 Truy vấn SPJ Mỗi truy vấn SPJ thứ x th Q x mà KNT thứ x th dựa vào bao gồm: ( ) Q x S x , T x , J x ,W x (2.1) 2.1.2 Truy vấn bao gồm hàm gộp x th th Mỗi truy vấn Q thứ x có hàm thống kê sở ta tạo KNT thứ x bộ: ( ) Q x S x , T x , J x ,W x , G x (2.2) 2.2 So sánh biểu thức điều kiện 2.2.1 Phủ điều kiện chọn ghi 2.2.2 So sánh dạng chuẩn tắc 2.2.3 So sánh điều kiện giản đơn 2.2.3.1 Biểu thức đại số 2.2.3.2 Biểu thức chuỗi ký tự 2.3 Chiến lược so sánh truy vấn 2.4 Kết chương Không vấn đề phát viết lại truy vấn để sử dụng KNT, so sánh truy vấn quan trọng trình cập nhật KNT Chương tìm hiểu mơ hình biểu diễn truy vấn cho trường hợp truy vấn SPJ truy vấn bao gồm hàm thống kê, đề xuất thuật toán biến đổi biểu thức điều kiện dạng tắc tuyển truy vấn thống trình tạo KNT q trình cập nhật để tối ưu hố việc so sánh truy vấn phục vụ việc sử dụng cập nhật KNT Phần đề xuất bước chiến lược so sánh truy vấn SPJ, phát triển mở rộng cho trường hợp truy vấn bao gồm hàm thống kê Để phục vụ viết lại truy vấn sử dụng KNT để trả lời truy vấn (CHƯƠNG 6), mơ hình biểu diễn truy vấn SPJ truy vấn bao gồm hàm gộp chương điều chỉnh, bổ sung nhãn trường/biểu thức mệnh đề SELECT Đó cột lưu bảng KNT CHƯƠNG 3.1 3.1.1 CẬP NHẬT GIA TĂNG ĐỒNG BỘ Truy vấn SPJ Một số tính tốn newM x có dạng biểu thức đại số quan hệ sau: newM x = S (W ) T1x T2x J Ti x J J ( ) x x ( S ) (W x ( x ) x (T x x J1x T2x x i −1 J 2x J ix−1 J nx−1 dnewTi x oldM x có dạng biểu thức đại số quan hệ sau: oldM x = S x (W x ) T1x Tx J x Ti x J x Tnx Jx Jx ( ) \ ( S ) (W x x ) ( (T 1 x J1x i −1 T2x J 2x x J ix−1 Tnx n−1 doldTi x ) J nx−1 ) Tnx ) J nx−1 ) Tnx (3.1) x Nếu có tập ghi doldTi Ti cập nhật thành dnewTi x , CSDL kết thực thi Q x là: ( ) (( S updM x = S x , updT x , J x , W x = x )( , T x , J x , W x \ S x , doldT x , J x , W x )) ( S x ) , dnewT x , J x , W x (3.2) 3.1.2 Chọn trường tạo khung nhìn thực 3.1.3 Thuật toán cập nhật gia tăng 3.1.3.1 Sự kiện thêm dnewTi x vào Ti x 3.1.3.2 Sự kiện xoá doldTi x từ Ti x 3.1.3.3 Sự kiện cập nhật doldTi x sang dnewTi x bảng Ti x 3.2 Truy vấn bao gồm hàm gộp 3.2.1 Tạo khung nhìn thực 3.2.2 Thuật toán cập nhật gia tăng 3.2.2.1 Xem xét cập nhật tương đương với xóa thêm 3.2.2.2 Không xem xét cập nhật tách thành xóa thêm 3.2.2.3 Một khóa bảng gốc Ti x nằm G x 3.2.2.4 Một khóa bảng gốc Ti x khác nằm G x 3.2.2.5 Một trường hợp thêm khác không liên quan đến KNT 3.3 Truy vấn đệ quy 3.3.1 Truy vấn SQL đệ quy 1: 1: R: WITH RECURSIVE R AS v = M n = S n , T n , J n ,W n 2: ( 2: k=0 3: nrt_query Mk = v 3: 4: UNION 5: rt_query 4: WHILE ( M k is not empty) 6: ) 5: { 7: SELECT * FROM R 6: M = M r = S r , T r , J r ,W r ( ) ( k +1 ) v = v M k +1 7: 8: k = k +1 9: } 10: Return v Hình 3.2 Truy vấn đệ quy chung chuyển đổi Hình 3.1 Truy vấn đệ quy chung ban đầu 3.3.2 Phát triển với truy vấn đệ quy 3.3.3 Thuật toán cập nhật gia tăng 3.3.3.1 Khơng buộc phải đảm bảo tính tồn vẹn tham chiếu 3.3.3.1.1 Thêm n r Input: M, dnewTi x , T , T Output: dnewv 1: dnewM n = S n , dnewT n , J n ,W n = S n , T1n , , dnewTi x , Tnn , J n ,W n ) ( ( ) 2: k=0 dnewM r = S r , dnewT r , J r ,W r = S r , T1r , , dnewTi x , Tnr , M , J r , W r 3: 4: 5: 6: dnewv = M k = dnewM dnewM WHILE ( M k is not empty) Begin ) ( ( n ) r ( M k +1 = M r = S r , newT r , J r ,W r ( ) = S r , T1r , T2r , (Ti x dnewTi x ) , Tnr , M k , J r ,W r ) dnewv = dnewv M k +1 8: k = k +1 9: End 10: Return dnewv Hình 3.3 CNGT cho kiện thêm trường hợp khơng cần đảm bảo tính tồn vẹn tham chiếu 10 3.3.3.1.2 Xóa Input: doldTi x ,T n , M Output: doldv 1: doldM n = S n , doldT n , J n ,W n = id , T n , , doldT x , T n , J n ,W n i n ) ( ) M = ( S , T , J ,W ) = ( id , T , , T , T , J , W ) dRootId = ( M id , M , M , M id = M Id ,{}) \ (M id , M , doldM , M id = doldM Id ,{}) doldM = (M id , oldT , J ,W ) = (M id , T , , doldT , T , M , J , W M id NOT IN dRootId ) doldv = (M id , M , doldM , M id = doldM Id , M id NOT IN dRootId ) ( 2: 3: n n n n n n x n n i n n n n 4: r r r 5: r x n r r n i n r r n n doldM r 6: 7: 8: 9: 10: k=0 M k = doldv WHILE ( M k is not empty) Begin M k +1 = M r = (M id , M , M k , M parentId = M k id , M id NOT IN dRootId ) 11: doldv = doldv M k +1 12: k = k + 13: End 14: Return doldv Hình 3.4 CNGT cho kiện xóa trường hợp khơng cần đảm bảo tính tồn vẹn tham chiếu 3.3.3.2 Đảm bảo ràng buộc tham chiếu Input: dnewT x , M ,T n \ T x , T r \ T x i Output: 1: 2: i i dnewv dnewM n = S n , dnewT n , J n ,W n k=0 dnewM r = S r , T1r , , dnewTi x , Tnr , M , J r , W r ( ) ( ) dnewv = M k = dnewM dnewM WHILE ( M k is not empty) Begin M k +1 = M r = S r , T1r , , dnewTi x , Tnr , R , J r , W r n 3: 4: 5: 6: r ( ) dnewv = dnewv M k +1 7: 8: k = k +1 9: End 10: Return dnewv Hình 3.5 CNGT cho kiện xóa trường hợp phải đảm bảo tính tồn vẹn tham chiếu 3.3.3.2.1 Xóa 3.3.3.2.2 Cập nhật 3.3.3.3 Một nút có nhiều nút cha Input: doldTi x ,T n , M Output: doldv 1: doldM n = S n , doldT n , J n ,W n = id , T n , , doldT x , T n , J n ,W n ( ) ( 11 i n ) ( ) ( ) dRootId = ( M id , M , M , M id = M id ,{}) M n = S n , T n , J n ,W n = id , T n , J n ,W n 2: 3: n ( n ) \ M id , M , doldM n , M id = doldM n Id ,{} k=0 4: 5: 6: 7: 8: 9: 10: doldIdk = doldM n doldArcsk = doldv = WHILE ( doldIdk is not empty) Begin doldArcsk +1 = M r = (M oid , M id , M parentId , M , M k , M parentId = M k id , M id NOT IN dRootId ) doldParentsCnt = (id , count ( parentId ) as cntOldParents , doldArcsk +1 ,{}, id ) dParentsCnt = (id , count ( parentId ) as cntParents , M ,{}, id ) doldId = (doldParentsCnt.id , doldParentsCnt , dParentsCnt , 11: 12: 13: k +1 doldParentsCnt.id = dParentsCnt.id , cntOldParents = cntParents) doldv = doldv doldArcsk +1 14: 15: 16: 17: k = k +1 End Return doldv Hình 3.6 CNGT trường hợp khơng cần đảm bảo tính tồn vẹn tham chiếu cho kiện xóa Input: doldTi x ,T n , M Output: doldv 1: doldM n = S n , doldT n , J n ,W n ( ( ) = id , parentId , T , , doldTi x , Tnn , J n , W n ( n ) ( ) 2: M n = S n , T n , J n ,W n = id , parentId , T n , J n ,W n 3: {M oid },{M , M n },{M id = M n Id dRootOid = M parentId = M n parentId },{} M id = doldM n Id n \ M oid , M , doldM , ,{} n M parentId = doldM parentId k=0 doldParentsCnt = id , count ( parentId ) as cntOldParents , doldM n ,{}, id 4: 5: 6: 7: ) ( ) ( dParentsCnt = id , count ( parentId ) as cntParents , M ,{}, id doldId k = (doldParentsCnt.id , doldParentsCnt , dParentsCnt , ) doldParentsCnt.id = dParentsCnt.id , cntOldParents = cntParents) 8: ( parentId ,{}) doldArcsk = M oid , M id , M parentId , M , doldM n , M id = doldM n Id M parentId = doldM n 12 doldv = doldArcsk WHILE ( doldIdk is not empty) Begin 9: 10: 11: 12: doldArcsk +1 = M r = (M oid , M id , M parentId , M , M k , M parentId = M k id , M oid NOT IN dRootOid ) doldParentsCnt = (id , count ( parentId ) as cntOldParents , doldArcsk +1 ,{}, id ) dParentsCnt = (id , count ( parentId ) as cntParents , M ,{}, id ) doldId = (doldParentsCnt.id , doldParentsCnt , dParentsCnt , doldParentsCnt.id = dParentsCnt.id , cntOldParents = cntParents) 13: 14: 15: k +1 doldv = doldv doldArcsk +1 k = k +1 16: 17: 18: 19: End Return doldv Hình 3.7 Trường hợp nrt_query trả cung Truy vấn lồng Ở đây, ta cố gắng biến đổi truy vấn lồng thành truy vấn khác để áp dụng thuật toán CNGT KNT cho loại truy vấn tương ứng 3.5 Kết chương Với KNT sở truy vấn SPJ, đề xuất điều chỉnh biến đổi truy vấn ban đầu cách thêm trường bổ sung, đặc biệt tối thiểu khoá từ bảng gốc để tạo bảng KNT Điều giúp cho trình CNGT KNT đơn giản Với thuật toán CNGT đồng KNT sở truy vấn bao gồm hàm gộp, trường hợp chung, tích hợp số ưu điểm thuật tốn trước thực bốn trường hợp tối ưu hóa xem xét trường hợp i) số cột tạo khóa cho bảng gốc 𝑇𝑖𝑥 tham gia 𝐺 𝑥 ; ii) số cột 𝑇𝑖𝑥 tham gia vào 𝐺 𝑥 số cột tạo khóa cho 𝑇𝑙𝑥 tham gia 𝐺 𝑥 ; iii) 𝑇𝑖𝑥 có vai trị đặc biệt mệnh đề from; iv) thực tối ưu hóa cách đề xuất phương thức bao gồm tách cập nhật thành xóa thêm với truy vấn bao gồm hàm gộp MIN(E), MAX(E) thực tương tự cho truy vấn hàm gộp Với hầu hết trường hợp truy vấn lồng, ta đề xuất cách thức biến đổi khác dạng truy vấn mà từ ta áp dụng thuật tốn CNGT xây dựng cho loại truy vấn tương ứng Với truy vấn đệ quy, đề xuất chuyển truy vấn đệ quy vào quy trình lặp sau đề xuất thuật tốn cho việc CNGT đồng KNT với truy vấn SQL đệ quy việc xem xét kết hợp trường hợp: i) có thực thi tính tồn vẹn tham chiếu liệu hay không; ii) loại mối quan hệ thực thể giới thực – – nhiều nhiều – nhiều; iii) xử lý ghi mô tả nút cung Các thuật toán để CNGT KNT với truy vấn SQL đệ quy xây dựng dựa đại số quan hệ 3.4 CHƯƠNG 4.1 4.2 4.2.1 4.2.2 CẬP NHẬT GIA TĂNG BẤT ĐỒNG BỘ Cập nhật gia tăng KNT lỗi trạng thái Thuật toán cập nhật gia tăng bất đồng Xử lý rút gọn Truy cập trạng thái trước cập nhật bảng gốc postTi x = ( preTi x \ doldTi x ) dnewTi x , (4.1) x x x x preTi = ( postTi \ dnewTi ) doldTi (4.2) x x Ở trạng thái sau cập nhật Ti , postTi có sở liệu 13 4.2.3 Biểu thức cập nhật dnewM x = (dnewT1x ( S ) (W ) x x postT1x preT2x J1x J1x dnewT2x J1x postT2x J 2x J 2x J ix−1 preTi x preTnx J nx−1 preTi x J nx−1 preTnx postTi x J nx−1 dnewTnx ) J ix−1 (4.3) postT1x doldM x = (doldT1x ( S ) (W ) x preT1x x J1x preT2x J 2x J1x J ix−1 preT2x J 2x J 2x J ix−1 J ix−1 preTi x preTi x J nx−1 J nx−1 preTnx preTnx (4.4) preT1x preT2x J x preTi x J x doldTnx ) J1x J 2x i −1 n −1 Các biểu thức cho KNT dựa truy vấn với hàm gộp khác suy diễn tương tự 4.2.4 Các thuật toán cập nhật gia tăng bất đồng sử dụng 4.3 Kết chương Trong khuôn khổ chương này, cách quy lỗi trạng thái áp dụng biểu thức để CNGT KNT trạng thái trước cập nhật bảng gốc, sử dụng để cập nhật đồng cho trạng thái sau cập nhật bảng gốc, yêu cầu cập nhật bất đồng Chúng ta đề xuất giải pháp để CNGT bất đồng KNT với kỹ thuật cho việc truy cập trạng thái trước bảng gốc Vì vậy, biểu thức thực tính tốn thay đổi KNT thường sử dụng CNGT đồng áp dụng cách xác cho cập nhật bất đồng Chúng ta khai thác ý tưởng thao tác rút gọn mô tả chúng cách chi tiết để chứng minh tính đắn đề xuất kỹ thuật truy cập trạng thái trước bảng gốc Thuật toán CNGT thực từ công trình xuất khác áp dụng biểu thức cập nhật đặc biệt cho cập nhật bất đồng 5.1 5.2 5.2.1 5.2.2 5.2.3 5.2.4 CHƯƠNG SINH MÃ NGUỒN TỰ ĐỘNG ĐỂ THỰC HIỆN CẬP NHẬT GIA TĂNG Một số tính trigger PostgreSQL Một số kỹ thuật chung Biến Kiểm tra thay đổi không liên quan Các phép toán tập ghi Giải pháp với kết câu truy vấn bên 5.3 Truy vấn SPJ 5.4 Truy vấn bao gồm hàm gộp 5.4.1 Các phép toán tập ghi 5.4.2 Giải pháp với ghi thêm xóa 5.4.2.1 Sự kiện thêm 5.4.2.2 Sự kiện xóa 5.4.2.3 Sự kiện cập nhật 5.4.3 Sinh hàm trigger 5.4.3.1 Tạo trigger cho bảng gốc 5.4.3.2 Sinh hàm trigger cho trường hợp khung nhìn thực có hàm gộp Các trigger sinh để kiểm soát tất kiện thay đổi liệu tất bảng gốc Các trigger bảng gốc khác độc lập Quá trình lặp lại theo thủ tục sau cho bảng gốc B1 Sinh mã để kiểm tra xem thay đổi liệu (trong bảng gốc) có liên quan đến KNT hay khơng B2 Nếu 𝑇𝑖𝑥 khơng có vị trí đặc biệt (phần 3.2.2.5) mệnh đề FROM, sinh mã PL/pgSQL cho kiện thêm thực thuật toán đề cập phần 3.2.2.1 Ngược lại, bỏ qua B3 Nếu tất cột khóa khóa 𝑇𝑖𝑥 nằm 𝐺 𝑥 (phần 3.2.2.3), sinh mã cho kiện xóa mà thực thuật toán đề cập phần 3.2.2.3 Ngược lại, sang B5 B4 Nếu khơng có cột 𝑇𝑖𝑥 tham gia vào E, sinh mã cho kiện cập nhật mà thực thuật toán đề cập phần 3.2.2.3, sau chuyển đến B10 Ngược lại, sang B9 14 B5 Nếu số cột 𝑇𝑖𝑥 tham gia vào 𝐺 𝑥 số cột tạo khóa 𝑇𝑙𝑥 tham gia vào 𝐺 𝑥 (phần 3.2.2.4), sang B6 Ngược lại, sang B9 B6 Tính toán đường nối ngắn 𝑇𝑖𝑥 𝑇𝑙𝑥 , sau sinh mã cho kiện xóa (phần 3.2.2.4) B7 Nếu khơng có cột 𝑇𝑖𝑥 tham gia vào E, sinh mã cho kiện xóa (phần 3.2.2.4) sang B10 B8 Sinh mã cho kiện xóa trường hợp chung (phần 3.2.2.1) B9 Nếu khơng có MIN(E), MAX(E) sinh mã cho kiện cập nhật mà thực thuật toán đề cập phần 3.2.2.2 Ngược lại, sinh mã cho kiện xóa trường hợp chung – phần 3.2.2.1 B10 Kết thúc thủ tục 5.4.4 Công cụ sinh mã nguồn Chương trình xây dựng kiểm tra với truy vấn phổ biến để tính tổng số tiền nhận từ khách hàng đề cập phần Error! Reference source not found Các trigger tạo đáp ứng tất c ả yêu cầu, hoàn toàn trùng khớp với trigger viết thủ cơng Họ thực thuật tốn CNGT đề cập 5.5 Truy vấn đệ quy Input: Truy vấn SQL đệ quy, metadata bảng gốc Output: Mã khai báo trigger mã hàm trigger Foreach bảng gốc T x i Begin Begin //trigger function for insert event If (đảm bảo toàn vẹn liên kết) Sinh mã triển khai thuật toán Hình 3.5 else Sinh mã triển khai thuật toán Hình 3.3 End Begin //trigger function for delete event 10 If (loại mối quan hệ one – many) 11 Sinh mã triển khai thuật toán Hình 3.4 12 else 13 Begin 14 If (nrt_query trả lại tập nút cây) 15 Sinh mã triển khai thuật toán Hình 3.6 16 Else 17 Sinh mã triển khai thuật toán in Hình 3.7 18 End 19 End 20 Begin //trigger function for update event 21 Sinh mã triển khai thuật toán cho kiện delete 22 Sinh mã triển khai thuật toán cho kiện insert 23 End 24 Sinh script để biên dịch hàm trigger 25 Sinh script để đăng ký trigger cho tất kiện 26 End Hình 5.1 Thủ tục sinh mã nguồn trigger 15 Cập nhật bất đồng Mơ hình hệ thống 5.6.2 Nguyên mẫu 5.6 5.6.1 Truy vấn KNT Quản trị viênKNT Máy phân tích Quản trị viên Máy sinh mã Cập nhật cấu Mã trigger cập nhật hình KNT, tạo KNT bảng Đăng ký trigger Siêu liệu bảng gốc Yêu cầu cập nhật Biên dịch Mã máy trigger cập nhật KNT Thư viện Thu gọn ghi Cập nhật gia tăng Quản trị viên CNGT bất đồng Trình rút gọn ghi Trình cập Hình 5.2 Mơ hình ngun mẫu hệ thống cập nhật bất đồng 5.7 Thực nghiệm thảo luận 5.7.1 Truy vấn bao gồm hàm gộp 5.7.1.1 Thực nghiệm Bảng 5.1 Thời gian thực thi truy vấn thao tác liệu bảng gốc (ms) Bảng gốc Cấu hình / SQL SELECT INSERT DELETE UPDATE Không KNT 223,853 13 82 110 sales KNT 80 27 110 177 Không KNT 223,853 11 13 34 customers KNT 19 61 88 80 KNT – trigger cải tiến 16 21 55 Không KNT 223,853 11 11 12 KNT 25 715 1799 countries 80 KNT – trigger cải tiến 15 17 29 5.7.1.2 Thảo luận 5.7.2 Truy vấn đệ quy 5.7.2.1 Thực nghiệm Bảng 5.2 Thời gian CNGT KNT đệ quy (ms) Nhiều – nhiều Loại quan hệ Một – Nhiều Thao tác cung Thao tác nút KNT/ Không Không KNT KNT Không KNT KNT Không KNT KNT KNT Chọn 603 5,682 715 3,825 715 3,825 Xóa 1,642 183 5,808 193 2,014 284 Cập nhật 3,685 531 6,593 390 2,796 329 Đảm bảo tính tồn vẹn Thêm 797 Khơng đảm bảo tính tồn vẹn tham chiếu tham chiếu 16 CĨ KHƠNG 2,584 401 3,590 228 1,249 1,967 Khi CNGT KNT thiết lập, chắn trigger cho câu lệnh thực CNGT kích hoạt tương ứng ảnh hưởng đến hiệu suất thao tác liệu phép toán 5.7.2.2 Thảo luận 5.7.3 Cập nhật bất đồng 5.7.3.1 Thực nghiệm Bảng 5.3 Thời gian CNGT bất đồng (ms) Đồng Bất đồng Table Insert Delete Update Insert Delete Update Kết hợp ghi / lệnh / hành động / bảng gốc Sales 22 90 138 29 55 75 108 Customers 15 56 77 28 47 71 10 ghi / lệnh / hành động / bảng gốc Sales 211 925 1174 40 66 89 117 Customers 139 612 757 28 54 77 5.7.3.2 Thảo luận 5.8 Kết chương Với KNT sở truy vấn bao gồm hàm gộp, ta xây dựng chương trình tự động sinh mã cho trigger cho tất kiện đến tất bảng liên quan đến truy vấn tạo KNT Các trigger sinh thực đồng thuật toán CNGT xây dựng phần giao tác thực thay đổi liệu bảng gốc Chúng thử nghiệm trigger sinh cho tính xác so sánh thời gian cần thiết để thực cập nhật liệu bảng gốc Chúng ta đề xuất giải pháp để CNGT bất đồng KNT với kỹ thuật cho việc truy cập trạng thái trước bảng gốc Vì vậy, biểu thức thực tính tốn thay đổi KNT thường sử dụng CNGT đồng áp dụng cách xác cho cập nhật bất đồng Chúng ta khai thác ý tưởng thao tác rút gọn mô tả chúng cách chi tiết để chứng minh tính đắn đề xuất kỹ thuật truy cập trạng thái trước bảng gốc Thuật tốn CNGT thực từ cơng trình xuất khác áp dụng biểu thức cập nhật đặc biệt cho cập nhật bất đồng Chúng ta xây dựng nguyên mẫu tổng hợp mã nguồn theo cách tự động để hỗ trợ CNGT bất đồng cung cấp thử nghiệm để đảm bảo tính xác giải pháp đề xuất CHƯƠNG VIẾT LẠI TRUY VẤN ĐỂ SỬ DỤNG KHUNG NHÌN THỰC 6.1 6.2 6.3 6.3.1 Nghiên cứu mã nguồn PostgreSQL Lưu trữ thông tin khung nhìn thực Truy vấn SPJ Kết thực thi truy vấn tính hồn tồn từ KNT 𝑄 𝑅 = ({𝑓𝑖 (𝐿𝑀 )|𝑖 = |𝑆 𝑈 |}, 𝐿𝑈 , {𝑇mv}, 𝜙, 𝑊 𝑈 \𝑊 𝑀 ) 6.3.2 Kết thực thi truy vấn chứa KNT Từ hai trường hợp suy 𝑄 𝑅 cho trường hợp chung, 𝑆 𝑀 ⊂ 𝑆 𝑈 , 𝑇 𝑀 ⊆ 𝑇 𝑈 , 𝐽𝑀 ⊆ 𝐽𝑈 , 𝑀 𝑊 phủ 𝑊𝑀𝑈 , cột thuộc bảng 𝑇 𝑀 tham gia vào phép nối 𝑇 𝑈 \𝑇 𝑀 𝑇 𝑀 có mặt 𝑆 𝑀 khơng tạo thành khố bảng đó: 𝑄 𝑅 = (𝑆 𝑈 \𝑆 ∪ 𝐿𝑀 , 𝐿𝑈 , {Tmv} ∪ 𝑇 ∪ (𝑇 𝑈 \𝑇 𝑀 ), 𝐽1 ∪ 𝐽2 , 𝑊 𝑈 \𝑊 𝑀 ) 6.4 Truy vấn với hàm gộp 6.4.1 Truy vấn người dùng tính hồn toàn từ KNT 6.4.1.1 Trường hợp: 𝑆 𝑈 ⊆ 𝑆 𝑀 (𝐶 𝑈 ⊆ 𝐶 𝑀 , 𝐴𝑈 ⊆ 𝐴𝑀 ) 𝐺 𝑈 ⊆ 𝐺 𝑀 Vậy, với 𝑆 𝑈 ⊆ 𝑆 𝑀 (𝐶 𝑈 ⊆ 𝐶 𝑀 , 𝐴𝑈 = 𝐴𝑀 = {SUM(E), COUNT(E), MIN(E), MAX(E)}) 𝐺 𝑈 ⊆ 𝐺 𝑀 , 𝑅 𝑄 = (𝐿𝐶 𝑈 , {SUM(sum), SUM(count), MIN(min), MAX(max)}, 𝜙, 𝐿𝐴𝑈 , {Tmv}, 𝜙, 𝜙, 𝐺 𝑈 ) 𝑆 𝑈 ⊂ 𝑆 𝑀 (𝐶 𝑈 ⊂ 𝐶 𝑀 và/hoặc 𝐴𝑈 ⊂ 𝐴𝑀 ) trường hợp riêng 𝑆 𝑈 ⊆ 𝑆 𝑀 Truy vấn viết lại là: 𝑅2 𝑄 = (𝐶 𝑅2 ⊆ 𝐶 𝑅 , 𝐴𝑅2 ⊆ 𝐴𝑅 , 𝐿𝑈 , {Tmv}, 𝜙, 𝜙, 𝐺 𝑈 ) Nếu 𝑆 𝑈 = 𝑆 𝑀 (𝐶 𝑈 = 𝐶 𝑀 , 𝐴𝑈 = 𝐴𝑀 ) 𝐺 𝑈 = 𝐺 𝑀 , 𝑄 𝑈 tương đương với 𝑄 𝑀 Truy vấn viết lại trường hợp là: 𝑄 𝑅 = (𝐿𝐶 𝑈 , 𝐿𝑀 , 𝜙, 𝐿𝐴𝑈 , {Tmv}, 𝜙, 𝜙, 𝜙) 6.4.1.2 Xét trường hợp 𝐴𝑈 = 𝐴𝑀 = {𝑆𝑈𝑀(𝐸), 𝐶𝑂𝑈𝑁𝑇(𝐸), 𝑀𝐼𝑁(𝐸), 𝑀𝐴𝑋(𝐸)} 𝑅 𝑄 = (𝐿𝐶 𝑈 , {SUM(E ∗ count), SUM(count), MIN(E), MAX(E)}, 𝜙, 𝐿𝐴𝑈 , {Tmv}, 𝜙, 𝜙, 𝐺 𝑈 ) 6.4.1.3 Trường hợp 𝑆𝑖𝑈 = 𝑓(𝑆 𝑀 ) 𝐺 𝑛 ⊆ 𝐺 𝑘 17 Kết thực thi truy vấn người dùng chứa KNT Từ hai trường hợp suy 𝑄 𝑅 cho trường hợp chung, 𝐶 𝑀 ⊂ 𝐶 𝑈 , 𝐴𝑈 ⊆ 𝐴𝑀 , 𝑇 𝑀 ⊆ 𝑈 𝑀 𝑇 , 𝐽 ⊆ 𝐽𝑈 , 𝑊 𝑀 = 𝑊 𝑈 , 𝐺 𝑀 ⊂ 𝐺 𝑈 , cột thuộc bảng 𝑇 𝑀 tham gia vào phép nối 𝑇 𝑈 \𝑇 𝑀 𝑇 𝑀 có mặt 𝐶 𝑀 khơng tạo thành khố bảng đó: 𝑄 𝑅 = (𝐶 𝑈 \𝐶 𝑀 ∪ 𝐿𝐶 𝑀 , 𝜙, 𝐿𝐴𝑅 , 𝜙, {Tmv} ∪ 𝑇 ∪ (𝑇 𝑈 \𝑇 𝑀 ), 𝐽1 ∪ 𝐽2 , 𝜙, 𝜙) 6.5 Truy vấn lồng 6.5.1 Các loại truy vấn lồng 6.5.1.1 Truy vấn lồng với IN, NOT IN 6.5.1.2 Truy vấn lồng với toán tử so sánh 6.5.1.3 Truy vấn lồng với toán tử so sánh điều chỉnh ANY, ALL 6.5.1.4 Truy vấn lồng biểu thức 6.5.1.5 Truy vấn lồng bảng ảo 6.5.1.6 Các loại truy vấn lồng khác 6.5.2 Viết lại truy vấn 6.6 Xây dựng mô-đun 6.6.1 Truy vấn SPJ & lồng 6.6.2 Truy vấn với hàm gộp 6.7 Tích hợp vào mã nguồn Trên Hình 6.1, từ trình xử lý truy vấn bên mã nguồn PostgreSQL, tác giả điều chỉnh mã nguồn để xây dựng tích hợp mơ-đun viết lại Mô-đun viết lại truy vấn hỗ trợ KNT phải chèn vào vị trí trước PostgreSQL viết lại truy vấn theo luật hệ thống tức sau vị trí (A5), trước vị trí (A6) Nếu có KNT (B3) truy vấn viết lại tới KNT (B4) gọi lại hàm thực thi với tham số đầu vào truy vấn tới KNT (B5) Ngược lại, khơng có KNT truy vấn người dùng nhập vào tiếp tục xử lý viết lại theo luật (A6) mà PostgreSQL đưa Mơ-đun viết lại có tham số chuỗi truy vấn người dùng nhập vào truy vấn (Query Tree) – kết giai đoạn phân tích cú pháp (A4) Kết trả mơđun chuỗi truy vấn viết lại tới KNT có (B5) NULL khơng Sau chuỗi truy vấn qua KNT (B5) thực thi truy vấn thông thường cách truyền chuỗi truy vấn (B5) đến hàm thực thi truy vấn PostgreSQL (A3) 6.4.2 Hình 6.1 Quá trình xử lý truy vấn PostgreSQL mô-đun viết lại truy vấn 6.8 Thử nghiệm đánh giá 6.8.1 Truy vấn SPJ truy vấn lồng 6.8.1.1 Thử nghiệm Bảng 6.1 Đánh giá hiệu mơ-đun viết lại truy vấn Đã tích hợp mơ-đun Thời gian, chưa tích T1/T2 𝑸𝑼 hợp mơ-đun (T1, ms) Thời gian Dùng KNT (T2, ms) 1041 Có 180 5.8 3540 Có 213 16.6 7572 Có 114 66.4 Khơng ~0.993 18 Hiệu Có Có Có Khơng 6.8.1.2 Đánh giá 6.8.2 Truy vấn với hàm gộp 6.8.2.1 Thử nghiệm Bảng 6.2 Đánh giá hiệu tích hợp mơ-đun viết lại truy vấn Thời gian, chưa Đã tích hợp mơ-đun Hiệu 𝑄 𝑈 tích hợp mơ-đun Thời gian (T2, T1/T2 Dùng KNT (T1, ms) ms) Có Có 211594 93 2275 Có Có 21589 62 348 34143 Có 71 480 Có 273220 Có 519 526 Có 219 Khơng 267 0.822 Khơng 34289 Không 34358 0.997 Không 6.8.2.2 Đánh giá 6.9 Kết chương Chúng ta nghiên cứu kiến trúc mã nguồn PostgreSQL để tìm cách tích hợp mã nguồn mơđun phân tích khả dùng KNT để trả lời truy vấn viết lại truy vấn để sử dụng KNT; nghiên cứu viết lại truy vấn, xây dựng mô-đun, thử nghiệm đánh giá kết thu Tuy nhiên, chưa quan tâm đến truy vấn, dù lĩnh vực quan trọng phổ biến hơn, bao gồm phép nối truy vấn đệ quy KẾT LUẬN KNT bảng đặc biệt lưu trữ kết thực thi truy vấn, sử dụng để trả lời truy vấn khác xuất sau KNT quan trọng đặt nhiều câu hỏi nghiên cứu, chẳng hạn bảo trì KNT bao gồm CNGT chiến lược cập nhật, lựa chọn truy vấn để tạo KNT, sử dụng KNT để trả lời truy vấn tối ưu hóa,…trong nhiều lĩnh vực khác nhau, lĩnh vực truyền thống kho liệu, truyền liệu, web web ngữ nghĩa, hệ thống phân tán quan tâm đến định hướng tương lai IoT, thương mại thông minh phân tích, ứng dụng web Tài liệu cung cấp tương đối đầy đủ mặt lý thuyết cách thức triển khai KNT HQT CSDL quan hệ mã nguồn mở, cụ thể PostgreSQL Nghiên cứu tổng quan khung nhìn thực Xây dựng mô hình biểu diễn so sánh truy vấn Xây dựng thuật toán CNGT đồng bất đồng cho KNT sở truy vấn SPJ, truy vấn bao gồm hàm thống kê, truy vấn lồng, truy vấn đệ quy có chứa phép nối Xây dựng thuật tốn cơng cụ sinh mã nguồn theo cách tự động; mã nguồn triển khai thuật toán CNGT đề xuất Xây dựng thuật toán viết lại truy vấn để sử dụng KNT cho trường hợp truy vấn SPJ, truy vấn bao gồm hàm gộp truy vấn lồng Thực thực nghiệm phân tích, đánh giá kết thu Các thử nghiệm cho thấy hiệu giải pháp đề xuất 19 ... DỤC VÀ ĐÀO TẠO ĐẠI HỌC ĐÀ NẴNG TÓM TẮT BÁO CÁO TỔNG KẾT` ĐỀ TÀI KHOA HỌC VÀ CÔNG NGHỆ CẤP BỘ NGHIÊN CỨU XÂY DỰNG HỆ THỐNG HỖ TRỢ KHUNG NHÌN THỰC CHO CÁC HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU QUAN HỆ NGUỒN MỞ... KẾT QUẢ NGHIÊN CỨU Thơng tin chung - Tên đề tài: Nghiên cứu xây dựng hệ thống hỗ trợ khung nhìn thực cho hệ quản trị sở liệu quan hệ nguồn mở - Mã số: KYTH-01 (B2017.DNA.06) - Chủ nhiệm đề tài: ... tăng hệ quản trị sở liệu thực tế cho truy vấn đầu vào vấn đề tìm kiếm ứng cử viên để viết lại truy vấn sử dụng khung nhìn thực Việc xây dựng phân hệ hỗ trợ khung nhìn thực hệ quản trị sở liệu nguồn