Báo cáo tóm tắt Đề tài 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ở

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  
1. Những thành viên tham gia nghiên cứu chính:  
Đơn vị công tác và lĩnh vực  
STT  
Họ và tên  
Nội dung NC  
chuyên môn  
Nghiên cứu tổng thuật; nghiên  
cứu lý thuyết & đề xuất giải pháp;  
thử nghiệm và triển khai ứng  
dụng; viết báo cáo  
Trường Đại học Sư phạm – Đại  
học Đà Nẵng  
Công nghệ thông tin; Tiến sĩ  
Nguyễn Trần  
Quốc Vinh  
1.  
Sở Thông tin và Truyền thông Đà  
Nẵng  
Công nghệ thông tin; Tiến sĩ  
Trường Đại học Sư phạm – Đại  
học Đà Nẵng  
Công nghệ thông tin; Tiến sĩ  
Trường Đại học Sư phạm – Đại  
học Đà Nẵng  
Nguyễn  
Quang Thanh  
Nghiên cứu lý thuyết; thử nghiệm  
hệ thống, phần mềm  
2.  
3.  
4.  
Phạm Anh  
Phương  
Thử nghiệm hệ thống, phần mềm  
Phát triển hệ thống, phần mềm  
Nguyễn  
Hoàng Hải  
Công nghệ thông tin; Tiến sĩ  
Trường Đại học Sư phạm – Đại  
Nguyễn Văn học Đà Nẵng  
Phát triển hệ thống, phần mềm  
Phát triển hệ thống, phần mềm  
Phát triển hệ thống, phần mềm  
5.  
6.  
7.  
8.  
Vương  
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  
Lê Thành  
Công  
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 tại Trường  
Đại học Sư phạm – Đại học Đà  
Nẵng  
Lê Thị Thảo  
Nguyên  
Trường Đại học Sư phạm – Đại  
học Đà Nẵng  
Công nghệ thông tin; Thạc sĩ  
Phạm Dương  
Thu Hằng  
Nghiên cứu tổng thuật, viết báo  
cáo  
2. Những đơn vị phối hợp chính:  
Nội dung phối hợp nghiên  
Họ và tên người đại diện  
Tên đơn vị trong và ngoài  
nước  
cứu  
đơn vị  
Thử nghiệm và triển khai  
ứng dụng hệ thống, phần  
mềm  
Trường Đại học Sư phạm,  
Đại học Đà Nẵng  
Nguyễn Bảo Hoàng Thanh  
Nguyễn Quang Thanh  
Sở Thông tin và Truyền  
thông Đà Nẵng  
Triển khai thử nghiệm hệ  
thống, phần mềm  
1
MỤC LỤC  
KẾT LUẬN………………………………………………………………………………….20  
2
DANH MỤC VIẾT TẮT  
Viết tắt  
CNGT  
CSDL  
HQT  
KNT  
CTE  
Diễn giải  
Cập nhật gia tăng  
Cơ sở dữ liệu  
Hệ quản trị  
Khung nhìn thực  
Common table expression  
Structured query language  
SQL  
DANH MỤC BẢNG BIỂU  
DANH MỤC HÌNH ẢNH  
THÔNG TIN KẾT QUẢ NGHIÊN CỨU  
1. 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 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  
- 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  
2. Mục tiêu  
Mục tiêu tổng quát: Xây dựng được 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ục tiêu cụ thể:  
- 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).  
3. Tính mới và sáng tạo  
Khung nhìn thực mở ra nhiều vấn đề nghiên cứu lý thuyết và triển khai. Cho đến này có hàng trăm  
bài báo khoa học trong lĩnh vực này đã được công bố về cập nhật gia tăng khung nhꢀn thực, tìm kiếm khả  
năng sử dụng khung nhìn thực và viết lại truy vấn để sử dụng khung nhìn thực và lựa chọn truy vấn để tạo  
khung nhìn thực. Tuy nhiên, chỉ có bốn hệ quản trị cơ sở dữ liệu thương mại hàng đầu thế giới triển khai  
thành công khung nhìn thực, đó là Oracle, SQL Server, DB2 và gần đây là SQL Anywhere. PostgreSQL là  
hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở hàng đầu thế giới, được Bộ Thông tin và Truyền thông Việt  
Nam lựa chọn và khuyến cáo sử dụng nhưng đến nay vẫ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 là kết quả của các công trình nghiên cứu đến triển khai trên  
thực tế là cả một khoảng cách lớn, thiếu các nghiên cứu chỉ ra có thể triển khai trên thực tiễn một cách tự  
động cho mọi truy vấn đầu vào hoặc thậm chí cho những truy vấn đầu vào thoả mãn những điều kiện cho  
3
       
trước. Đề tài này này đã tham khảo hơn 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 và viết lại truy vấn để sử dụng khung nhìn thực đến cách  
thức triển khai trong các hệ quản trị cơ sở dữ liệu mã nguồn mở, cụ thể là PostgreSQL.  
4. Kết quả nghiên cứu  
Đề tài cung cấp tương đối đầy đủ về mặt lý thuyết cũng cách thức triển khai KNT trong các HQT  
CSDL quan hệ mã nguồn mở, cụ thể là PostgreSQL.  
- Nghiên cứu tổng quan về khung nhìn thực.  
- Xây dựng mô hình biểu diễn và so sánh truy vấn.  
- Xây dựng các thuật toán CNGT đồng bộ và bất đồng bộ cho các KNT trên cơ sở các 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 trong.  
- Xây dựng thuật toán và công cụ sinh mã nguồn tự động triển khai các 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 hiện thực nghiệm và phân tích, đánh giá các kết quả thu được.  
5. 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
Sản phẩm khoa học (Các công trình khoa học sẽ được công bố: sách, bài 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 trên tạp chí/kỷ  
yếu hội thảo quốc tế  
27 2020).  
1.1  
02  
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 2 (103). Pages: 6-13. Year  
2020  
1.2  
1.3  
II  
Sách giáo trình  
Sách tham khảo  
Sản phẩm đào tạo (Cử nhân, Thạc sỹ, Tiến sỹ...)  
Bảo vệ thành công  
01 Cơ sở dữ liệu, NXB Đà Nẵng, 2019  
01 Khung nhìn thực: Lý thuyết và triển khai, NXB Đà Nẵng, 2019  
Học viên 1: Trần Duy Bình  
Tên đề tài: Nghiên cứu ứng dụng Anchor Modeling và khung nhìn  
thực để nâng cao hiệu quả quản lý điểm học sinh tại 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  
02 Năm bảo vệ: 2019  
2.1  
Thạc sĩ  
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 năng phần mềm Quản lý đào tạo tại Trường Đại học Tài chính  
– Kế toán  
Người hướng dẫn: TS Nguyễn Trần Quốc Vinh  
Năm bảo vệ: 2019  
III  
Sản phẩm ứng dụng  
Hoạt động tốt  
Mã nguồn mở  
Phân hệ hỗ trợ khung  
nhìn thực được tích  
hợp vào hệ quản trị cơ  
sở dữ liệu PostgreSQL  
Đảm bảo các yêu cầu như đã đặt ra trong mục tiêu của đề tài (cập  
3.1  
01  
nhật gia tăng; cập nhật đồng bộ và bất đồng bộ; truy vấn nối trong,  
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)  
4
6. Phương thức chuyển giao, địa chỉ ứng dụng, tác động và lợi ích mang lại của kết quả nghiên cứu  
Phương thức chuyển giao:  
Sản phẩm ứng dụng dự kiến sẽ được chuyển giao: Phân hệ hỗ trợ khung nhìn thực được tích hợp vào  
PostgreSQL, được cung cấp dưới dạng mã nguồn mở. Phân hệ thực hiện cập nhật gia tăng đồng bộ cũng  
như bất đồng bộ các khung nhìn thực và nhận biết khả năng 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 sẽ được bổ sung vào hệ thống lệnh của PostgreSQL.  
Địa chỉ ứng dụng:  
PostgreSQL được tích hợp khả năng hỗ trợ khung nhìn thực có thể được sử dụng rộng rãi, đặc biệt hữu  
dụng trong các hệ thống thông tin quản lý có yêu cầu xử lý phức tạp trên lượng dữ liệu lớn với thời gian  
thực thi truy vấn thấp thậm chí trong chế độ thời gian thực và yêu cầu giảm tải tài nguyên hệ thống. Tại  
Việt Nam, PostgreSQL ngày càng được sử dụng rộng rãi, đặc biệt trong các cơ quan quản lý Nhà nước và  
hệ thống giáo dục đại học, cao đẳng.  
Tác động và lợi ích mang lại của kết quả nghiên cứu:  
Đối với lĩnh vực giáo dục và đào tạo: Kết quả đề tài tạo ra một sách giáo trình và một 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 trong hệ quản trị cơ sở dữ liệu nói riêng và các  
lĩnh vực liên quan quản trị dữ liệu nói chung. Tài liệu này sẽ được sử dụng để phục vụ đào tạo ở bậc đại  
học và sau đại học, là nguồn tham khảo có giá trị về mặt khoa học và độ tin cậy cao góp phần nâng cao chất  
lượng đào tạo, trước hết là tại Đại học Đà Nẵng, trong lĩnh vực công nghệ thông tin. Ngoài ra, tham gia  
thực hiện đề tài còn có các học viên cao học và các giảng viên trẻ của Đại học Đà Nẵng. Việc tham gia thực  
hiện đề tài sẽ giúp học viên cao học và cán bộ tích lũy thêm được nhiều kinh nghiệm quí báu và góp phần  
rèn luyện kỹ năng nghiên cứu khoa học.  
Đối với lĩnh vực khoa học và 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ꢀ và các cơ sở ứng dụng kết quả nghiên cứu.  
INFORMATION ON RESEARCH RESULTS  
1. 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)  
2. 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).  
3. 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.  
5
 
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.  
4. 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.  
5. Products  
#
Product name  
Scientific results  
Qlty  
Requirements  
I
Papers on international journals /  
conference proceedings  
Textbook  
Book  
Trainning products  
Master  
1 published, Scopus Q3; 1 accepted,  
Scopus Q3  
Accepted by UD-USE and printed  
Printed  
1.1  
02  
1.2  
1.3  
II  
2.1  
III  
01  
01  
02  
Defensed thethises  
Application products  
The sub-systems work well, satisfy all  
the features mentioned above and is  
integrated into PostgreSQL v10 and  
tested  
Sub-systems supporting materialized  
views which is integrated into  
PostgreSQL  
3.1  
01  
6. 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  
1. Tính cấp thiết của đề tài  
Có thể nâng cao hiệu năng của hệ thống thông tin nói chung và hệ quản trị cơ sở dữ liệu nói riêng  
bằng giải pháp đẩy mạnh trang bị phần cứng hoặc áp dụng các giải pháp phần mềm. Tuy nhiên, không phải  
6
   
bao giờ giải pháp phần cứng cũng giúp giải quyết vấn đề vì không thể hoặc quá đắt đỏ, đặc biệt khi yêu cầu  
kết quả xử lý phức tạp trên lượng dữ liệu lớn với thời gian thực thi truy vấn thấp thậm chí trong chế độ thời  
gian thực ngày càng trở nên thường xuyên. Khung nhìn thực là công nghệ rất hữu dụng, có thể giúp tăng  
tốc độ thực thi truy vấn rất nhiều lần, giúp giảm tải cho hệ quản trị cơ sở dữ liệu nói riêng và hệ thống nói  
chung. Cụ thể, khung nhìn thực có thể giúp giảm số lượng các lần đọc/ghi vật lý, bởi vì khối lượng dữ liệu  
cần xử lý giảm; giảm tải bộ vi xử lý trung tâm và tài nguyên nói chung; giảm khối lượng thao tác nối, sắp  
xếp cũng như tính các hàm tổng hợp. Tất nhiên, hệ thống cũng phải trả giá nhất định để thực hiện cập nhật  
khung nhìn thực.  
Khung nhìn thực chỉ được triển khai ứng dụng rất hiệu quả trong bốn hệ quản trị cơ sở dữ liệu  
thương mại hàng đầu thế giới, đó là Oracle, SQL Server, IBM DB2 và SQL Anywhere. Chưa có hệ quản  
trị cơ sở dữ liệu nguồn mở nào hỗ trợ khung nhìn thực.  
Nguyên nhân của việc chậm triển khai ứng dụng một công nghệ hiệu quả như thế trong các hệ quản  
trị cơ sở dữ liệu nguồn mở đó là quá phức tạp về mặt lý thuyết nhưng các 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 bất kỳ lại càng 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 trong các hệ thống thông tin. Nếu các vấn đề cập nhật gia tăng dữ liệu trong  
khung nhìn thực được chú ý khá nhiều trong các công trình khoa học, thì có thể nói chưa có công trꢀnh nào  
nghiên cứu một cách đầy đủ các vấn đề triển khai các thuật toán cập nhật gia tăng trong hệ quản trị cơ sở  
dữ liệu thực tế cho truy vấn đầu vào bất kỳ cũng như 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 trong các hệ quản trị cơ sở dữ liệu  
nguồn mở có thể đòi hỏi nguồn lực rất lớn với nhiều khó khăn nếu chỉ dựa trên các kết quả nghiên cứu đã  
công bố.  
PostgreSQL là hệ quản trị cơ sở dữ liệu nguồn mở hàng đầu hiện nay, thể hiện được hiệu năng cũng  
như tính ổn định vượt trội so với các hệ quản trị cơ sở dữ liệu khác trong quản trị lượng lớn dữ liệu; được  
Bộ Thông tin và 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 các hệ quản trị cơ sở dữ liệu quan hệ nguồn mở và triển khai  
thực tế với PostgreSQL là cấp thiết.  
3. Mục tiêu  
Mục tiêu tổng quát: Xây dựng được 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ục tiêu cụ thể:  
– 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).  
4. Cách tiếp cận  
5. Phương pháp nghiên cứu  
– Phương pháp nghiên cứu lý thuyết: i) Nghiên cứu các tài liệu về hệ quản trị cơ sở dữ liệu nói  
chung và khung nhìn thực nói riêng; kiến trúc xử lý của hệ quản trị cơ sở dữ liệu; cơ chế và 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 năng của hệ quản trị cơ sở dữ liệu. ii) Nghiên cứu các công trꢀnh đã công bố, thực hiện tổng hợp, cải  
tiến các thuật toán cập nhật gia tăng đã công bố cũng như phát triển mới thuật toán cập nhật gia tăng mới.  
iii) Phát triển mới thuật toán sinh mã nguồn tự động, triển khai các thuật toán gia tăng khung nhꢀn thực  
trong cơ chế đồng bộ và bất đồng bộ.  
– Phương pháp nghiên cứu thực nghiệm: Xây dựng các 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 các trigger thực hiện 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 dữ liệu trong cơ sở dữ liệu, sinh tự  
động mã nguồn các mô đun thực hiện cập nhật bất đồng bộ; nghiên cứu tích hợp các phân hệ này vào hệ  
quản trị cơ sở dữ liệu mã nguồn mở PostgreSQL. ii) Xây dựng phân hệ phát hiện và viết lại truy vấn để sử  
dụng khung nhìn thực; tích hợp vào phân hệ này vào hệ quản trị cơ sở dữ liệu mã nguồn mở PostgreSQL.  
6. Đối tượng và phạm vi nghiên cứu  
Đối tượng nghiên cứu của đề tài bao gồm:  
– Các hệ quản trị cơ sở dữ liệu thương mại có hỗ trợ khung nhìn thực.  
– Các hệ quản trị cơ sở dữ liệu mã nguồn mở và kiến trúc của chúng.  
– Truy vấn lựa chọn dữ liệu SQL và đại số quan hệ.  
– Khung nhìn thực, các thuật toá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 được giới hạn:  
– Cập nhật gia tăng đồng bộ và bất đồng bộ.  
7
       
– 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 được xây dựng cho trường hợp của hệ quản trị cơ sở dữ liệu mã nguồn mở  
PostgreSQL.  
7. Nội dung nghiên cứu  
Để đạt được mục tiêu đặt ra, các nội dung nghiên cứu sẽ được triển khai gồm:  
a) Nghiên cứu tổng quan về đề tài  
b) Nghiên cứu đề xuất mô hình và giải pháp  
– Phát triển mô hình biểu diễn các truy vấn. Định nghĩa các phép toán trên các truy vấn. Phát triển  
thuật toán biến đổi và so sánh các biểu thức, chiến lược so sánh truy vấn.  
– Xây dựng các thuật toán cập nhật gia tăng đồng bộ các khung nhìn thực được tạo trên cơ sở các  
truy vấn đầu vào bất kỳ thuộc các lớp truy vấn được hỗ trợ, bao gồm SPJ, nối ngoài, hàm gộp nhóm, truy  
vấn lồng, truy vấn đệ quy trên cơ sở tổng hợp và cải tiến các thuật toán đã được công bố.  
– Xây dựng các thuật toán cập nhật gia tăng bất đồng bộ các khung nhìn thực được tạo trên cơ sở  
các truy vấn đầu vào bất kỳ thuộc các lớp truy vấn được hỗ trợ, bao gồm SPJ, nối ngoài, hàm gộp nhóm,  
truy vấn lồng, truy vấn đệ quy trên cơ sở tổng hợp và cải tiến các thuật toán đã được công bố.  
– Xây dựng các thuật toán sinh tự động mã nguồn cho tất cả các sự kiện cập nhật dữ liệu trên các  
bảng gốc liên quan cho cả trường hợp cập nhật đồng bộ và cập nhật bất đồng bộ. Mã nguồn được sinh ra  
này thực hiện triển khai các thuật toán cập nhật gia tăng khung nhìn thực.  
– Xây dựng các thuật toán sinh mã nguồn các mô-đun thực hiện cập nhật bất đồng bộ.  
– Xây dựng các thuật toán phát hiện và viết lại truy vấn nhằm sử dụng khung nhìn thực trong thực  
thi các truy vấn. Cơ chế kết hợp có tính đến cả các trường sử dụng một phần bảng gốc, một phần khung  
nhìn thực và như thế, nó cho phép mở rộng phạm vi sử dụng khung nhìn thực.  
c) Cài đặt và kiểm thử  
– Cài đặt phân hệ sinh tự động mã nguồn các trigger triển khai các thuật toán cập nhật đồng bộ.  
– Cài đặt phân hệ sinh tự động mã nguồn các trigger thực hiện thu thập thông tin cập nhật dữ liệu  
trong cơ sở dữ liệu; phân hệ sinh tự động các mô-đun triển khai các thuật toán cập nhật bất đồng bộ.  
– Cài đặt mô-đun phát hiện khả năng sử dụng khung nhìn thực và viết lại truy vấn nhằm sử dụng  
khung nhìn thực trong thực thi các truy vấn.  
– Cài đặt, tích hợp và triển khai thành công các phân hệ hỗ trợ khung nhìn thực trong PostgreSQL;  
bổ sung các lệnh vào hệ thống lệnh của PostgreSQL.  
d) Triển khai thử nghiệm, đánh giá phân hệ xây dựng được  
– Thử nghiệm hệ thống  
– Phân tích đánh giá kết quả.  
CHƯƠNG 1  
TỔNG QUAN  
1.1  
Khung nhìn ảo và khung nhìn thực  
Khung nhìn thực là bảng đặc biệt lưu trữ một cách dư thừa kết quả thực thi truy vấn, có thể được sử  
dụng để trả lời các truy vấn tương đương hoặc truy vấn khác xuất hiện sau đó. KNT rất quan trọng và đặt  
ra nhiều câu hỏi nghiên cứu, chẳng hạn như cập nhật KNT bao gồm cập nhật gia tăng (CNGT, incremental  
update, incremental maintenance) và các chiến lược bảo trì, sử dụng KNT để trả lời các truy vấn và tối ưu  
hóa,…trong các lĩnh vực khác nhau, trong các lĩnh vực truyền thống như kho dữ liệu, truyền dữ liệu, web  
và web ngữ nghĩa, hệ thống phân tán và quan tâm đến các định hướng trong tương lai như IoT, thương mại  
thông minh và phân tích, các ứng dụng web mới nổi...  
1.2  
1.3  
Ứng dụng khung nhìn thực  
Cập nhật khung nhìn thực  
Mỗi khi dữ liệu trong các bảng gốc được cập nhật, các KNT sử dụng dữ liệu từ các bảng gốc đó trở  
nên không thực tiễn (not actual, không còn đúng) nữa. Quá trình làm cho dữ liệu trong KNT tương ứng với  
các thay đổi dữ liệu trong các bảng gốc được gọi là cập nhật (actualization, update, maintenance) KNT.  
Nếu như thực thi lại truy vấn và lưu trữ kết quả vào KNT (giống như khi tạo KNT), thì quá trình  
cập nhật được gọi là tính lại hoàn toàn. Nếu như chỉ thay đổi KNT tương ứng chỉ với các phần dữ liệu đã  
thay đổi trong các bảng gốc, thì gọi là CNGT.  
1.4  
1.5  
1.6  
Dùng khung nhìn thực để trả lời truy vấn  
Kiến trúc của PostgreSQL  
Kết chương  
Cần phải có một nhóm các thuật toán CNGT thực hiện hệ thống hoá, tổng hợp các ưu điểm của các  
thuật toán đã được công bố trước đây; thực hiện thống nhất hoá theo một chiến lược; cần thực hiện cải tiến  
chúng và xây dựng các thuật toán sinh mã nguồn tự động để có thể tự động triển khai các thuật toán CNGT  
KNT hoặc viết lại truy vấn để sử dụng KNT trên cơ sở truy vấn đầu vào bất kỳ.  
8
               
CHƯƠNG 2  
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ứ xth là  
mà KNT thứ xth dựa vào bao gồm:  
x
Q
Qx Sx ,T x , J x ,W x .  
(2.1)  
(
)
2.1.2 Truy vấn bao gồm các hàm gộp  
Qx  
xth  
xth  
là một bộ:  
Mỗi truy vấn  
thứ  
có các hàm thống kê trên cơ sở đó ta tạo KNT thứ  
Qx Sx ,T x , J x ,W x ,Gx  
(2.2)  
(
)
2.2  
So sánh biểu thức điều kiện  
2.2.1 Phủ của điều kiện chọn bản ghi  
2.2.2 So sánh dưới 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  
2.4  
Chiến lược so sánh truy vấn  
Kết chương  
Không chỉ trong vấn đề phát hiện và viết lại truy vấn để sử dụng KNT, so sánh truy vấn cũng rất  
quan trọng đối với quá trình cập nhật KNT. Chương này tꢀm hiểu về mô hình biểu diễn truy vấn cho trường  
hợp truy vấn SPJ và truy vấn bao gồm hàm thống kê, đề xuất thuật toán biến đổi các biểu thức điều kiện về  
dạng chính tắc tuyển trong truy vấn thống nhất cả trong quá trình tạo KNT và cả trong quá trình cập nhật  
để tối ưu hoá việc so sánh truy vấn phục vụ việc sử dụng và cả cập nhật KNT. Phần này cũng đề xuất các  
bước của chiến lược so sánh truy vấn SPJ, có thể được phát triển mở rộng cho trường hợp truy vấn bao gồm  
các 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), các mô hình biểu diễn  
truy vấn SPJ và truy vấn bao gồm hàm gộp trong chương này sẽ được điều chỉnh, bổ sung các nhãn của các  
trường/biểu thức trong mệnh đề SELECT. Đó chính là các cột sẽ được lưu trong các bảng KNT.  
CHƯƠNG 3  
CẬP NHẬT GIA TĂNG ĐỒNG BỘ  
3.1  
Truy vấn SPJ  
3.1.1 Một số tính toán  
newM x  
newM x = ( (W x T x  
có dạng biểu thức đại số quan hệ như sau:  
Sx  
(
)
1
)
)
(
(W x T x  
Sx  
)
(
)
1
)
oldM x  
có dạng biểu thức đại số quan hệ như sau:  
oldM x = ( (W x T x  
)
Sx  
(
)
1
)
\
(
(W x T x  
)
Sx  
(
)
1
)
(3.1)  
doldT x  
Q
T x  
dnewT x  
Nếu có một tập các bản ghi  
của  
được cập nhật thành  
, CSDL giờ đây có thể  
i
i
i
x
hiện mới và kết quả thực thi mới của  
là:  
updM x = Sx ,updT x , J x ,W x = Sx ,T x , J x ,W x \ Sx ,doldT x , J x ,W x Sx ,dnewT x , J x ,W x .  
(3.2)  
(
)
(
) (  
)
(
)
(
)
9
             
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 mới dnewT x vào T x  
i
i
3.1.3.2 Sự kiện xoá doldT x từ T x  
i
i
3.1.3.3 Sự kiện cập nhật doldT x sang dnewT x trong bảng T x  
i
i
i
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 rồi thêm mới  
3.2.2.2 Không xem xét cập nhật như là được tách thành xóa và thêm mới  
3.2.2.3 Một khóa của bảng gốc  
T
x nằm trong Gx  
i
3.2.2.4 Một khóa của bảng gốc T x khác nằm trong Gx  
i
3.2.2.5 Một trường hợp thêm mới khác không liên quan đến KNT  
3.3  
Truy vấn đệ quy  
3.3.1 Truy vấn SQL đệ quy  
v = M n = Sn ,Tn , Jn ,W n  
k = 0  
Mk = v  
1:  
1: R:  
WITH RECURSIVE R AS  
(
)
2:  
3:  
4:  
5:  
6:  
7:  
(
2:  
3:  
4:  
5:  
6:  
nrt_query  
UNION  
rt_query  
WHILE (  
{
is not empty)  
Mk  
)
SELECT * FROM R  
Mk+1 = M r = Sr ,Tr , Jr ,W r  
(
)
7:  
8:  
9:  
v = vMk+1  
k = k +1  
}
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 cây 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 toàn vẹn tham chiếu  
3.3.3.1.1 Thêm mới  
T n T r  
Input: M, dnewT x  
,
,
i
dnewv  
Output:  
1:  
dnewM n = Sn ,dnewT n , J n ,W n = Sn , T n ,..,dnewT x ,..T n , J n ,W n  
(
)
(
)
1
i
n
2:  
k = 0  
dnewM r = Sr ,dnewT r , J r ,W r = Sr , T r ,..,dnewT x ,..T r , M , J r ,W r  
(
)
(
)
1
i
n
dnewv = Mk = dnewM n dnewM r  
3:  
4:  
5:  
6:  
WHILE (  
Begin  
is not empty)  
Mk  
Mk+1 = M r = Sr ,newTr , Jr ,W r  
(
)
= Sr , Tr ,Tr ,.. T x dnewT x ,..Tr ,M , J r ,W r  
(
)
k
  
(
)
1
2
i
i
n
7
8:  
9:  
10:  
dnewv = dnewvMk+1  
k = k +1  
End  
Return  
dnewv  
Hꢀnh 3.3 CNGT cho sự kiện thêm mới trong trường hợp không cần đảm bảo tính toàn vẹn tham chiếu  
10  
                   
3.3.3.1.2 Xóa  
Input: doldT x ,Tn ,M  
i
doldv  
Output:  
1:  
doldM n = Sn ,doldT n , J n ,W n = id , T n ,..,doldT x ,..T n , J n ,W n  
(
)
(
)
1
i
n
M n = Sn ,T n , J n ,W n = id , T n ,..,T x ,..T n , J n ,W n  
2:  
3:  
(
)
(
)
1
i
n
dRootId = M.id , M, M n , M.id = M n.Id ,{}  
   
(
)
M.id , M ,doldM n , M.id = doldM n.Id ,{}  
\
   
(
)
doldM r = M.id ,oldTr , Jr ,W r  
4:  
5:  
(
)
= M.id , T r ,..,doldT x ,..T r , M , J r ,W r M.id NOT IN dRootId  
(
)
1
i
n
doldv = M.id , M,doldM n , M.id = doldM n.Id , M.id NOT IN dRootId  
   
(
)
doldM r  
6:  
7:  
k = 0  
Mk = doldv  
8:  
WHILE (  
is not empty)  
Mk  
9: Begin  
10:  
Mk+1 = M r  
= M.id , M,M , M.parentId =M .id , M.id NOT IN dRootId  
  k      
(
)
k
11: doldv = doldvMk+1  
12:  
k = k +1  
13: End  
14:  
doldv  
Return  
Hꢀnh 3.4 CNGT cho sự kiện xóa trong trường hợp không cần đảm bảo tính toàn vẹn tham chiếu  
3.3.3.2 Đảm bảo ràng buộc tham chiếu  
dnewT x ,M,Tn \ T x ,Tr \ T x  
Input:  
i
i
i
Output:  
1:  
dnewv  
dnewM n = Sn ,dnewTn , Jn ,Wn  
(
)
2:  
k = 0  
dnewM r = Sr , T r ,..,dnewT x ,..T r , M , J r ,W r  
(
)
1
i
n
dnewv = Mk = dnewM n dnewM r  
3:  
4:  
5:  
6:  
WHILE (  
Begin  
is not empty)  
Mk  
Mk+1 = M r = Sr , T r ,..,dnewT x ,..T r , R , J r ,W r  
(
)
1
i
n
7:  
8:  
9:  
10:  
dnewv = dnewvMk+1  
k = k +1  
End  
dnewv  
Return  
Hꢀnh 3.5 CNGT cho sự kiện xóa trong trường hợp phải đảm bảo tính toà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 con có nhiều nút cha  
doldT x ,Tn ,M  
Input:  
i
Output:  
1:  
doldv  
doldM n = Sn ,doldT n , J n ,W n = id , T n ,..,doldT x ,..T n , J n ,W n  
(
)
(
)
1
i
n
11  
   
M n = Sn ,Tn , Jn ,W n = id ,Tn , Jn ,W n  
2:  
3:  
(
)
(
)
dRootId = M.id , M , M n , M.id = M n.id ,{}  
   
(
)
\ M.id , M,doldM n , M.id = doldM n.Id ,{}  
   
(
)
4:  
5:  
k = 0  
doldIdk = doldM n  
doldArcsk =   
doldv =   
6:  
7:  
8:  
9:  
10:  
WHILE (  
Begin  
is not empty)  
doldIdk  
doldArcsk+1 = M r = M.oid,M.id,M.parentId , M,M ,  
(
   
k   
M.parentId =M .id , M.id NOT IN dRootId  
   
)
)
k
11:  
doldParentsCnt = id,count parentId ascntOldParents ,  
(
)
(
doldArcs ,{}, id  
k+1  
   
)
12:  
13:  
dParentsCnt = id,count parentId ascntParents , M ,{}, id  
(
)
   
   
(
doldIdk+1 = doldParentsCnt.id , doldParentsCnt,dParentsCnt ,  
(
   
doldParentsCnt.id = dParentsCnt.id , cntOldParents = cntParents  
   
)
14:  
doldv = doldvdoldArcsk+1  
k = k +1  
15:  
16:  
17:  
End  
Return  
Hꢀnh 3.6 CNGT trong trường hợp không cần đảm bảo tính toàn vẹn tham chiếu cho sự kiện xóa  
Input: doldT x ,Tn ,M  
doldv  
i
doldv  
Output:  
1:  
doldM n = Sn ,doldTn , Jn ,W n  
(
)
= id, parentId , T n ,..,doldT x ,..T n , J n ,W n  
n
  
(
)
1
i
M n = Sn ,Tn , Jn ,W n = id, parentId ,Tn , Jn ,W n  
2:  
3:  
(
)
(
)
n
n
{M.oid},{M , M },{M.id = M .Id  
dRootOid =  
n
M.parentId = M .parentId},{}  
n
M.id = doldM .Id  
M.parentId = doldM n.parentId  
M.oid , M,doldM n  
,
,{}  
\
4:  
5:  
k = 0  
doldParentsCnt  
= id,count parentId ascntOldParents , doldM n ,{}, id  
(
)
   
(
)
6:  
7:  
dParentsCnt = id,count parentId ascntParents , M ,{}, id  
(
)
   
   
(
)
doldId = doldParentsCnt.id , doldParentsCnt,dParentsCnt ,  
(
   
k
doldParentsCnt.id = dParentsCnt.id , cntOldParents = cntParents  
doldArcs = M.oid, M.id, M.parentId , M ,doldM n  
M.id = doldM n.Id M.parentId = doldM n.parentId ,{}  
   
)
8:  
,
(
k
)
12  
 
9:  
doldv = doldArcsk  
10:  
11:  
12:  
WHILE (  
Begin  
is not empty)  
doldIdk  
doldArcsk+1 = M r = M.oid,M.id,M.parentId , M,M ,  
(
  k   
M.parentId =M .id , M.oid NOT IN dRootOid  
   
)
)
k
13:  
doldParentsCnt = id,count parentId ascntOldParents ,  
(
(
doldArcs ,{}, id  
k+1  
   
)
)
14:  
15:  
dParentsCnt = id,count parentId ascntParents , M ,{}, id  
(
   
   
(
)
doldIdk+1 = doldParentsCnt.id , doldParentsCnt,dParentsCnt ,  
(
   
doldParentsCnt.id = dParentsCnt.id , cntOldParents = cntParents  
   
)
16:  
doldv = doldvdoldArcsk+1  
k = k +1  
17:  
18:  
19:  
End  
Return  
doldv  
Hꢀnh 3.7 Trường hợp khi nrt_query trả về các cung của cây  
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 các thuật toán CNGT KNT  
3.4  
cho các loại truy vấn tương ứng.  
3.5  
Kết chương  
Với KNT trên cơ sở truy vấn SPJ, chúng ta đã đề xuất điều chỉnh biến đổi truy vấn ban đầu bằng  
cách thêm các trường bổ sung, đặc biệt là tối thiểu một khoá từ mỗi bảng gốc để tạo bảng KNT. Điều này  
giúp cho quá trꢀnh CNGT KNT được đơn giản hơn.  
Với thuật toán CNGT đồng bộ KNT trên cơ sở truy vấn bao gồm hàm gộp, ngoài trường hợp chung,  
đã tích hợp một số ưu điểm của các thuật toán trước đó và thực hiện bốn trường hợp tối ưu hóa khi xem xét  
trường hợp trong đó i) một số cột tạo ra khóa cho bảng gốc 푇푥 tham gia trong 퐺푥; ii) một số cột của 푇푥 chỉ  
tham gia vào 퐺푥 và một số cột tạo ra khóa cho 푇푥 và tham푖gia trong 퐺푥; iii) 푇푥 có vai trò đặc biệt 푖trong  
푙
푖
mệnh đề from; cũng như iv) thực hiện tối ưu hóa bằng cách đề xuất các phương thức bao gồm tách cập nhật  
thành xóa và thêm mới với các truy vấn bao gồm các hàm gộp MIN(E), MAX(E) và thực hiện tương tự cho  
các truy vấn không có hàm gộp.  
Với hầu hết các trường hợp truy vấn lồng, ta đề xuất các cách thức biến đổi khác nhau về các dạng  
truy vấn mà từ đó ta có thể áp dụng các thuật toán CNGT đã xây dựng cho các loại truy vấn tương ứng.  
Với truy vấn đệ quy, chúng ta đã đề xuất chuyển các truy vấn đệ quy vào quy trình lặp và sau đó đề  
xuất các thuật toán cho việc CNGT đồng bộ KNT với truy vấn SQL đệ quy bằng việc xem xét kết hợp các  
trường hợp: i) có thực thi tính toàn vẹn tham chiếu của dữ liệu hay không; ii) các loại mối quan hệ giữa các  
thực thể trong thế giới thực – một – nhiều và nhiều – nhiều; iii) xử lý các bản ghi mô tả các nút cây hoặc  
các cung của cây. Các thuật toán để CNGT KNT với truy vấn SQL đệ quy được xây dựng dựa trên đại số  
quan hệ.  
CHƯƠNG 4  
CẬP NHẬT GIA TĂNG BẤT ĐỒNG BỘ  
4.1  
4.2  
Cập nhật gia tăng KNT và lỗi trạng thái  
Thuật toán cập nhật gia tăng bất đồng bộ  
4.2.1 Xử lý rút gọn  
4.2.2 Truy cập trạng thái trước cập nhật của các bảng gốc  
postT x = (preT x \ doldT x )dnewT x ,  
(4.1)  
(4.2)  
i
i
i
i
preT x = (postT x \ dnewT x )doldT x.  
và  
i
i
i
i
T x postT x  
Ở trạng thái sau cập nhật của  
,
đã có trong cơ sở dữ liệu.  
i
i
13  
           
4.2.3 Biểu thức cập nhật  
dnewM x = ( (W x (dnewT x  
Tnx   
)
Sx  
1
)
postT x  
nx   
1
(4.3)  
...  
postT x  
nx )  
1
và  
doldM x = ( (W x (doldT x  
Tnx   
)
Sx  
1
)
preT x  
nx   
1
(4.4)  
...  
preT x  
preT x..  
ldTnx ).  
x
1
i
Các biểu thức cho KNT dựa trên tru1 y vấn với các hàm gộp là khác nhau nhưng có thể đượ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 bộ đã sử dụng  
4.3  
Kết chương  
Trong khuôn khổ chương này, chúng ta chỉ ra một cách chính quy lỗi trạng thái khi áp dụng các  
biểu thức để CNGT KNT ở trạng thái trước cập nhật của các bảng gốc, được sử dụng để cập nhật đồng bộ  
cho trạng thái sau cập nhật của các bảng gốc, được yêu cầu trong cập nhật bất đồng bộ.  
Chúng ta cũng đã đề xuất một giải pháp để CNGT bất đồng bộ KNT với kỹ thuật mới cho việc truy  
cập trạng thái trước của các bảng gốc. Vì vậy, các biểu thức thực hiện tính toán các thay đổi đối với KNT  
thường được sử dụng trong CNGT đồng bộ có thể được áp dụng một cách chính xác cho cập nhật bất đồng  
bộ. Chúng ta khai thác ý tưởng của các thao tác rút gọn và mô tả chúng một cách chi tiết để chứng minh  
tính đúng đắn của đề xuất kỹ thuật truy cập trạng thái trước của bảng gốc. Thuật toán CNGT được thực  
hiện từ các công trꢀnh đã xuất bản khác của chúng ta áp dụng các biểu thức cập nhật và đặc biệt cho cập  
nhật bất đồng bộ.  
CHƯƠNG 5 SINH MÃ NGUỒN TỰ ĐỘNG ĐỂ THỰC HIỆN CẬP NHẬT GIA TĂNG  
Một số tính năng của trigger trong PostgreSQL  
Một số kỹ thuật chung  
5.1  
5.2  
5.2.1 Biến  
5.2.2 Kiểm tra các thay đổi không liên quan  
5.2.3 Các phép toán trên các tập các bản ghi  
5.2.4 Giải pháp với kết quả của các câu truy vấn bên trong  
5.3  
5.4  
Truy vấn SPJ  
Truy vấn bao gồm hàm gộp  
5.4.1 Các phép toán trên các tập các bản ghi  
5.4.2 Giải pháp với các bản ghi đã thêm mới và đã xóa  
5.4.2.1 Sự kiện thêm mới  
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 các trigger cho mỗi bảng gốc  
5.4.3.2 Sinh hàm trigger cho trường hợp khung nhìn thực có các hàm gộp  
Các trigger được sinh để kiểm soát tất cả các sự kiện thay đổi dữ liệu trên tất cả bảng gốc. Các trigger  
trên bảng gốc khác nhau là độc lập. Quá trình lặp lại theo thủ tục sau cho mỗi bảng gốc.  
B1. Sinh mã để kiểm tra xem sự thay đổi dữ 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) trong mệnh đề FROM, sinh mã PL/pgSQL cho sự  
푖
kiện thêm mới thực hiện thuật toán được đề cập trong phần 3.2.2.1. Ngược lại, bỏ qua nó.  
B3. Nếu tất cả các cột của khóa chính hoặc bất kỳ khóa duy nhất nào của 푇푥 đều nằm trong 퐺푥 (phần  
푖
3.2.2.3), sinh mã cho sự kiện xóa mà thực hiện thuật toán được đề cập trong phần 3.2.2.3. Ngược lại, sang  
B5.  
B4. Nếu không có cột nào trong 푇푥 tham gia vào E, sinh mã cho sự kiện cập nhật mà thực hiện thuật  
푖
toán được đề cập trong phần 3.2.2.3, sau đó chuyển đến B10. Ngược lại, sang B9.  
14  
           
B5. Nếu một số cột của 푇푥 chỉ tham gia vào 퐺푥 và một số cột tạo một khóa của 푇푥 và 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 nhất giữa 푇푥 và 푇푥, và sau đó sinh mã cho sự kiện xóa (phần 3.2.2.4).  
푖
푙
B7. Nếu không có cột nào của 푇푥 tham gia vào E, sinh mã cho sự kiện xóa (phần 3.2.2.4) và sang B10.  
푖
B8. Sinh mã cho sự kiện xóa trong trường hợp chung (phần 3.2.2.1).  
B9. Nếu không có MIN(E), MAX(E) sinh mã cho sự kiện cập nhật mà thực hiện thuật toán được đề cập  
trong phần 3.2.2.2 Ngược lại, sinh mã cho sự kiện xóa trong 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 được xây dựng được kiểm tra với truy vấn phổ biến để tính tổng số tiền nhận được từ mỗi  
khách hàng được đề cập trong phần Error! Reference source not found.. Các trigger được tạo đáp ứng tất c  
ả các yêu cầu, hoàn toàn trùng khớp với các trigger được viết thủ công. Họ thực hiện các thuật toán CNGT  
đã đề cập.  
5.5  
Truy vấn đệ quy  
Input: Truy vấn SQL đệ quy, metadata của các bảng gốc  
Output: Mã khai báo các trigger và mã các hàm trigger  
Foreach bảng gốc T x  
1.  
i
2. Begin  
3.  
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 trên Hꢀnh 3.5  
else  
Sinh mã triển khai thuật toán trên Hꢀnh 3.3  
End  
Begin //trigger function for delete event  
If (loại mối quan hệ là one – many)  
Sinh mã triển khai thuật toán trên Hꢀnh 3.4  
else  
4.  
5.  
6.  
7.  
8.  
9.  
10.  
11.  
12.  
13.  
14.  
15.  
16.  
17.  
18.  
19.  
20.  
21.  
22.  
23.  
24.  
25.  
26. End  
Begin  
If (nrt_query trả lại tập các nút cây)  
Sinh mã triển khai thuật toán trên Hꢀnh 3.6  
Else  
Sinh mã triển khai thuật toán trên in Hꢀnh 3.7  
End  
End  
Begin //trigger function for update event  
Sinh mã triển khai thuật toán cho sự kiện delete  
Sinh mã triển khai thuật toán cho sự kiện insert  
End  
Sinh các script để biên dịch các hàm trigger  
Sinh các script để đăng ký các trigger cho tất cả các sự kiện  
Hꢀnh 5.1 Thủ tục sinh mã nguồn trigger  
15  
   
5.6  
Cập nhật bất đồng bộ  
5.6.1 Mô hình hệ thống  
5.6.2 Nguyên mẫu  
Truy vấn  
KNT  
Qu
ả
n tr
ị
viênKNT  
Máy phân  
Quản trị viên  
Cập nhật cấu  
Máy sinh mã  
Mã trigger và cập nhật  
hình KNT, tạo  
b
ả
ng  
KNT  
Đăng ký trigger  
Siêu dữ liệu bảng  
Biên d
ị
ch  
Mã máy trigger và  
cập nhật KNT  
Yêu cầu  
c
ậ
p nh
ậ
t  
Thư việ
n  
Thu g
ọ
n b
ả
n ghi  
Cập nhật gia tăng  
Qu
ả
n tr
ị
viên CNGT b
ất đồ
ng b
ộ  
Trình c
ậ
p  
Trình rút gọn  
Hꢀnh 5.2 Mô hình nguyên mẫu hệ thống cập nhật bất đồng bộ  
Thực nghiệm và thảo luận  
5.7  
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 và thao tác dữ liệu trong bảng gốc (ms)  
Bảng gốc Cấu hình / SQL  
SELECT  
223,853  
80  
INSERT DELETE  
UPDATE  
Không KNT  
KNT  
13  
27  
11  
19  
16  
11  
25  
82 110  
110  
13  
61  
21  
11  
715  
sales  
177  
34  
88  
55  
12  
Không KNT  
customers KNT  
223,853  
80  
KNT – trigger được cải tiến  
Không KNT  
223,853  
KNT  
1799  
countries  
80  
KNT – trigger được 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  
Thao tác nút  
Loại quan hệ  
Một – Nhiều  
Thao tác cung  
KNT/ Không  
KNT  
Không  
KNT  
KNT  
KNT Không KNT  
KNT  
Không KNT  
Chọn  
Xóa  
Cập nhật  
603  
1,642  
3,685  
5,682  
183 5,808  
531 6,593  
715  
3,825  
193  
390  
715  
2,014  
2,796  
3,825  
284  
329  
Đảm bảo tính toàn vẹn  
tham chiếu  
Thêm mới  
797  
Không đảm bảo tính toàn vẹn tham chiếu  
16  
         
CÓ  
KHÔNG  
1,967  
2,584  
401  
3,590  
228  
1,249  
Khi CNGT KNT được thiết lập, chắc chắn các trigger cho mỗi câu lệnh thực hiện CNGT cơ bản sẽ  
được kích hoạt tương ứng và nó ảnh hưởng đến hiệu suất của thao tác dữ liệu các phép toán.  
5.7.2.2 Thảo luận  
5.7.3 Cập nhật bất đồng bộ  
5.7.3.1 Thực nghiệm  
Bảng 5.3 Thời gian CNGT bất đồng bộ (ms)  
Đồng bộ  
Bất đồng bộ  
Table  
Insert Delete Update Insert  
Delete  
Update  
Kết hợp  
108  
1 bản ghi / lệnh / hành động / bảng gốc  
Sales  
Customers  
22  
15  
90  
56  
138  
77  
29  
28  
55  
47  
75  
71  
10 bản ghi / lệnh / hành động / bảng gốc  
Sales  
Customers  
211  
139  
925  
612  
1174  
757  
40  
28  
66  
54  
89  
77  
117  
5.7.3.2 Thảo luận  
5.8  
Kết chương  
Với KNT trên cơ sở truy vấn bao gồm hàm gộp, ta đã xây dựng một chương trꢀnh tự động sinh mã cho  
các trigger cho tất cả các sự kiện đến tất cả các bảng liên quan đến bất kỳ truy vấn tạo KNT nào. Các  
trigger đã sinh thực hiện đồng bộ thuật toán CNGT đã xây dựng như một phần của giao tác thực hiện thay  
đổi dữ liệu trong bảng gốc. Chúng tôi cũng đã thử nghiệm các trigger đã sinh cho tính chính xác và so sánh  
thời gian cần thiết để thực hiện cập nhật dữ liệu trong bảng gốc.  
Chúng ta đã đề xuất một giải pháp để CNGT bất đồng bộ KNT với kỹ thuật mới cho việc truy cập  
trạng thái trước của các bảng gốc. Vì vậy, các biểu thức thực hiện tính toán các thay đổi đối với KNT  
thường được sử dụng trong CNGT đồng bộ có thể được áp dụng một cách chính xác cho cập nhật bất đồng  
bộ. Chúng ta khai thác ý tưởng của các thao tác rút gọn và mô tả chúng một cách chi tiết để chứng minh  
tính đúng đắn của đề xuất kỹ thuật truy cập trạng thái trước của bảng gốc. Thuật toán CNGT được thực  
hiện từ các công trꢀnh đã xuất bản khác của chúng ta áp dụng các biểu thức cập nhật và đặc biệt cho cập  
nhật bất đồng bộ. Chúng ta đã xây dựng một nguyên mẫu có thể tổng hợp mã nguồn theo cách tự động để  
hỗ trợ CNGT bất đồng bộ và cung cấp thử nghiệm để đảm bảo tính chính xác của giải pháp đề xuất.  
CHƯƠNG 6  
VIẾT LẠI TRUY VẤN ĐỂ SỬ DỤNG KHUNG NHÌN THỰC  
6.1  
6.2  
6.3  
Nghiên cứu mã nguồn của PostgreSQL  
Lưu trữ thông tin khung nhìn thực  
Truy vấn SPJ  
6.3.1 Kết quả thực thi truy vấn có thể được tính hoàn toàn từ KNT  
푅
푀
푈
푈
푈
푀
(
)
푄 = ({푓 퐿 |푖 = 1. . |푆 |}, 퐿 , {푇mv}, 휙, 푊 \푊 ).  
푖
6.3.2 Kết quả thực thi truy vấn chứa KNT  
Từ hai trường hợp này có thể suy ra 푄푅 cho trường hợp chung, đó là 푆푀 ⊂ 푆푈, 푇푀 ⊆ 푇푈, 퐽푀 ⊆ 퐽푈,  
푊푀 phủ 푊푀푈, các cột thuộc các bảng trong 푇푀 tham gia vào phép nối giữa 푇푈\푇푀 và 푇푀 có mặt trong 푆푀  
푅
푈
푀
푈
1
푈
푀
1
(
và không tạo thành khoá trong các bảng đó: 푄 = 푆 \푆 ∪ 퐿 , 퐿 , {Tmv} ∪ 푇 ∪ (푇 \푇 ), 퐽 ∪  
퐽2, 푊푈\푊푀  
.
)
6.4  
Truy vấn với hàm gộp  
6.4.1 Truy vấn người dùng có thể được tính hoàn toàn từ KNT  
6.4.1.1 Trường hợp: 푆푈 ⊆ 푆푀 (퐶푈 ⊆ 퐶푀, 퐴푈 ⊆ 퐴푀) và 퐺푈 ⊆ 퐺푀.  
푈
푀
푈
푀
푈
푀
Vậy, với 푆푈 ⊆ 푆푀 (퐶 ⊆ 퐶 , 퐴 = 퐴 = SUM E , COUNT E , MIN E , MAX E ) và 퐺 ⊆ 퐺 ,  
{
( )  
( )  
( )  
( )}  
푅
푈
푈
{
(
)
(
)
(
)
(
)}  
{
}
푄 = (퐿퐶 , SUM sum , SUM count , MIN min , MAX max , 휙, 퐿퐴 , Tmv , 휙,  
휙, 퐺푈).  
푆푈 ⊂ 푆푀 (퐶푈 ⊂ 퐶푀 và/hoặc 퐴푈 ⊂ 퐴푀) là trường hợp riêng của 푆푈 ⊆ 푆푀. Truy vấn viết lại sẽ là:  
푄푅2 = (퐶푅2 ⊆ 퐶푅, 퐴푅2 ⊆ 퐴푅, 퐿푈, {Tmv}, 휙, 휙, 퐺푈).  
Nếu 푆푈 = 푆푀 (퐶푈 = 퐶푀, 퐴푈 = 퐴푀) và 퐺푈 = 퐺푀, 푄푈 tương đương với 푄푀. Truy vấn viết lại trong  
trường hợp này sẽ 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 푆푖푈 = 푓(푆푀) và 퐺푛 ⊆ 퐺푘  
17  
               
6.4.2 Kết quả thực thi truy vấn người dùng chứa KNT  
Từ hai trường hợp này có thể suy ra 푄푅 cho trường hợp chung, đó là 퐶푀 ⊂ 퐶푈, 퐴푈 ⊆ 퐴푀, 푇푀 ⊆  
푇푈, 퐽푀 ⊆ 퐽푈, 푊푀 = 푊푈, 퐺푀 ⊂ 퐺푈, các cột thuộc các bảng trong 푇푀 tham gia vào phép nối giữa 푇푈\푇푀  
푅
푈
푀
và 푇푀 có mặt trong 퐶푀 và không tạo thành khoá trong các bảng đó: 푄 = 퐶 \퐶 ∪  
퐿퐶 , 휙, 퐿퐴 , 휙, {Tmv} ∪ 푇 ∪ (푇 \푇 ), 퐽 ∪ 퐽 , 휙, 휙 .  
(
푀
푅
1
푈
푀
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 và điều chỉnh ANY, ALL  
6.5.1.4 Truy vấn lồng như là biểu thức  
6.5.1.5 Truy vấn lồng như là 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ừ quá trình xử lý truy vấn bên trong mã nguồn của PostgreSQL, tác giả điều chỉnh  
mã nguồn để xây dựng và tích hợp mô-đun viết lại. Mô-đun viết lại truy vấn hỗ trợ KNT phải được chèn  
vào vị trí trước khi PostgreSQL viết  
lại truy vấn theo các luật của hệ  
thống tức là sau vị trí (A5), trước vị  
trí (A6). Nếu có KNT có thể (B3) thì  
truy vấn sẽ được viết lại tới KNT đó  
(B4) và gọi lại hàm thực thi với tham  
số đầu vào là truy vấn tới KNT (B5).  
Ngược lại, nếu không có KNT có thể  
thì truy vấn người dùng nhập vào sẽ  
tiếp tục được xử lý viết lại theo các  
luật (A6) mà PostgreSQL đưa ra.  
Mô-đun viết lại sẽ có tham số  
là chuỗi truy vấn người dùng nhập  
vào và cây truy vấn (Query Tree) –  
kết quả của giai đoạn phân tích cú  
pháp (A4). Kết quả trả về của mô-  
đun là chuỗi truy vấn được viết lại tới  
KNT nếu có (B5) hoặc là NULL nếu  
không. Sau đó chuỗi truy vấn qua  
KNT (B5) được thực thi như một  
truy vấn thông thường bằng cách  
truyền chuỗi truy vấn (B5) đến hàm  
thực thi truy vấn trong PostgreSQL  
(A3).  
Hꢀnh 6.1 Quá trình xử lý truy vấn  
của PostgreSQL và mô-đun viết lại  
truy vấn  
6.8  
Thử nghiệm và đánh giá  
6.8.1 Truy vấn SPJ và truy vấn lồng  
6.8.1.1 Thử nghiệm  
Bảng 6.1 Đánh giá hiệu quả mô-đun viết lại truy vấn  
Đã tích hợp mô-đun  
Thời gian, chưa tích  
hợp mô-đun (T1, ms)  
푸푼  
T1/T2  
Hiệu quả  
Thời gian  
(T2, ms)  
180  
Dùng KNT  
1
2
3
4
1041  
3540  
7572  
Có  
Có  
5.8  
16.6  
Có  
Có  
Có  
213  
Có  
114  
66.4  
Không  
~0.993  
Không  
18  
           
Tải về để xem bản đầy đủ
pdf 22 trang yennguyen 16141 Free
Bạn đang xem 20 trang mẫu của tài liệu "Báo cáo tóm tắt Đề tài 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ở", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbao_cao_tom_tat_de_tai_nghien_cuu_xay_dung_he_thong_ho_tro_k.pdf