Xây dựng chương trình sinh tự động mã các trigger thực hiện cập nhật gia tăng các bảng khung nhìn thực nối ngoài

26 43 0
Xây dựng chương trình sinh tự động mã các trigger thực hiện cập nhật gia tăng các bảng khung nhìn thực nối ngoài

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC ĐÀ NẴNG TRẦN NGỌC HIẾN LÊ XÂY DỰNG CHƯƠNG TRÌNH SINH TỰ ĐỘNG MÃ CÁC TRIGGER THỰC HIỆN CẬP NHẬT GIA TĂNG CÁC BẢNG KHUNG NHÌN THỰC NỐI NGỒI Chun ngành : Khoa học máy tính Mã số : 60.48.01.01 TĨM TẮT LUẬN VĂN THẠC SĨ KỸ THUẬT Đà Nẵng - Năm 2015 Chương trình hồn thành ĐẠI HỌC ĐÀ NẴNG Người hướng dẫn khoa học: TS NGUYỄN TRẦN QUỐC VINH Phản biện 1: TS Huỳnh Công Pháp Phản biện 2: GS.TS Nguyễn Thanh Thủy Luận văn bảo vệ trước Hội đồng chấm Luận văn tốt nghiệp Thạc sĩ Kỹ thuật họp Đại học Đà Nẵng vào ngày 18 tháng năm 2015 Có thể tìm hiểu luận văn tại: - Trung tâm Thông tin - Học liệu, Đại học Đà Nẵng - Trung tâm Học liệu, Đại học Đà Nẵng MỞ ĐẦU Tính cấp thiết đề tài Khung nhìn thực đối tượng sở liệu chứa kết truy vấn, giúp trả lời truy vấn nhanh chóng thay lấy liệu từ bảng gốc xử lý Trong kho liệu, liệu biên niên sử hệ thống ngân hàng, bán lẻ tốn; ứng dụng ảo hóa; hệ thống di động; kiểm soát ràng buộc tồn vẹn; tối ưu hố truy vấn, hiệu việc sử dụng KNT thể rõ Một ví dụ điển hình tính hiệu việc ứng dụng KNT Một tập đồn có nhiều đại diện nhiều vùng thuộc nhiều quốc gia cung cấp cho nhiều khách hàng khác số lượng lớn sản phẩm Như vậy, CSDL trung tâm tập đoàn chứa hàng triệu nhiều dòng liệu chi tiết bán hàng Bây giờ, người ta cần thống kê số lượng sản phẩm bán tổng doanh thu cho loại sản phẩm vùng theo quốc gia Truy vấn thực thi kết trả lại sau khoảng thời gian T1 Kết lưu lại bảng – KNT bao gồm 200 dòng liệu Sau này, xuất truy vấn đó, thay thực thi lại từ đầu việc quét xử lý hàng triệu dòng liệu, HQT CSDL đọc bảng KNT chứa 200 dòng liệu trả lại kết khoảng thời gian T2 (thường nhỏ so với T1), thường vài ms Thậm chí, KNT dùng để trả lời truy vấn tương tự cho trường hợp giới, vài vùng đó, trường hợp cần tính doanh thu số lượng sản phẩm Tính gọi viết lại truy vấn (query rewrite) [4] Tuy nhiên, KNT không cho phép nâng cao suất tất trường hợp, hiệu ứng dụng chúng giảm rõ rệt thường xuyên xảy thay đổi liệu bảng gốc sử dụng để tạo KNT (hay KNT sử dụng) Khung nhìn thực ứng dụng từ năm 1980, nhiên đến có HQTCSDL hàng đầu giới Oracle, IBM DB2 MS SQL Server triển khai thành cơng Còn HQTCSDL khác, HQTCSDL mã nguồn mở PostgeSQL khó khăn xác định bước thực cập nhật gia tăng cho KNT Trước có nghiên cứu việc sử dụng trigger mã nguồn PL/pgSQL để cập nhật gia tăng đồng KNT PostgreSQL, dừng lại KNT kiểu SPJ (Select – Project Join), KNT dựa truy vấn chứa phép chọn, phép chiếu phép nối trong, không bao gồm phép toán thống kê SUM, COUNT, AVG, MIN, MAX,… Tuy nhiên, mã nguồn PL/pgSQL đánh giá có hiệu chưa cao số xử lý (ví dụ xử lý vòng lặp) PostgreSQL viết hồn tồn ngơn ngữ C, có cấu trúc liệu C tương ứng với kiểu liệu SQL giao diện lập trình giúp cho hàm trigger thực truy vấn đến CSDL dễ dàng Vì vậy, việc thực thi phần mở rộng PostgreSQL thực nhanh khó đạt cách sử dụng ngơn ngữ khác ngồi C Viết mã ngơn ngữ C cách nhanh việc thực thi tính năng, việc thực hàm không bị ảnh hưởng nhiều mà ngôn ngữ lập trình khác gây Xuất phát từ lý trên, đề xuất chọn đề tài luận văn tốt nghiệp thạc sỹ ngành khoa học máy tính: “Xây dựng chương trình sinh tự động mã trigger thực cập nhật gia tăng bảng khung nhìn thực nối ngoài” Mục tiêu nghiên cứu Mục tiêu chung đề tài là: Xây dựng chương trình sinh tự động mã trigger thực cập nhật gia tăng bảng khung nhìn thực nối ngồi nhằm làm tăng tốc độ thực thi truy vấn Để đạt mục tiêu chung đó, tác giả nghiên cứu mục tiêu cụ thể sau: - Nghiên cứu tổng quan KNT - Nghiên cứu sở lý thuyết cập nhật gia tăng, đồng KNT nối - Nghiên cứu tổng quan trigger C PostgreSQL - Xây dựng thuật toán cập nhật gia tăng KNT nối - Xây dựng module sinh mã tự động trigger Đối tượng phạm vi nghiên cứu 3.1 Đối tượng nghiên cứu - Khung nhìn thực - Trigger 3.2 Phạm vi nghiên cứu - Cập nhật gia tăng, đồng khung nhìn thực nối ngồi - Hệ quản trị sở liệu PostgreSQL - Trigger ngôn ngữ C Phương pháp nghiên cứu 4.1 Phương pháp lý thuyết Thu thập, chọn lọc, phân loại, ghi nghiên cứu tài liệu (sách, báo, luận văn, trang web) có liên quan đến khung nhìn thực, HQTCSDL PostgreSQL, cập nhật gia tăng KNT, đồng KNT, sinh mã trigger ngôn ngữ C 4.2 Phương pháp thực nghiệm Dựa lý thuyết nghiên cứu, tiến hành xây dựng chương trình sinh tự động mã trigger thực cập nhật gia tăng khung nhìn thực nối ngồi hệ sở liệu PostgreSQL; thử nghiệm máy đơn đánh giá tốc độ cập nhật liệu BG có trigger cập nhật KNT Ý nghĩa khoa học thực tiễn đề tài 5.1 Ý nghĩa khoa học - Đề xuất thuật toán cập nhật gia tăng KNT nối ngồi - Đề xuất thuật tốn sinh tự động mã nguồn trigger ngôn ngữ C phục vụ cập nhật gia tăng bảng khung nhìn thực nối hệ quản trị sở liệu PostgreSQL 5.2 Ý nghĩa thực tiễn Áp dụng chương trình vào sở liệu PostgreSQL nhằm làm tăng tốc độ thực thi truy vấn liệu mà đảm bào ràng buộc tồn vẹn liệu Chương trình sinh tự động mã trigger C thực CNGT KNT có tính ứng dụng cao, giúp tiết kiệm thời gian công sức người quản trị CSDL làm việc với HQTCSDL PostgreSQL HQTCSDL mã nguồn mở có hỗ trợ trigger ngơn ngữ C Chương trình sinh tự động mã nguồn trigger hỗ trợ lập trình viên sinh mã trigger Lập trình viên cần điều chỉnh trigger sinh theo ý muốn thay phải lập trình từ đầu Bố cục đề tài Ngoài phần mở đầu kết luận, cấu trúc nội dung luận văn bao gồm chương: Chương 1: Tổng quan nghiên cứu, chương giới thiệu tổng quan KNT; cập nhật gia tăng, đồng KNT Trình bày vấn đề liên quan đến trigger C PostgreSQL Chương 2: Cập nhật gia tăng khung nhìn thực nối ngồi, chương trình bày thuật tốn cập nhật gia tăng KNT nối ngồi; xây dựng thuật tốn sinh tự động mã nguồn trigger Chương 3: Xây dựng chương trình sinh tự động mã nguồn trigger thực cập nhật gia tăng khung nhìn thực nối ngồi, chương trình bày giao diện chương trình xây dựng; đánh giá kết đạt CHƯƠNG TỔNG QUAN NGHIÊN CỨU 1.1 TỔNG QUAN VỀ KHUNG NHÌN THỰC 1.1.1 Giới thiệu chung Một khung nhìn cụ thể hóa cách lưu trữ liệu khung nhìn sở liệu, gọi khung nhìn thực KNT thân tự nhiên ý tưởng tính tốn lại nhớ đệm sở liệu Thay tính tốn truy vấn từ đầu từ liệu bản, hệ thống sở liệu sử dụng kết tính tốn, lưu trữ trì Giống nhớ cache (bộ nhớ đệm – nơi lưu trữ liệu nằm chờ ứng dụng hay phần cứng xử lý), KNT cung cấp truy cập liệu nhanh; khác biệt tốc độ quan trọng ứng dụng mà tốc độ truy vấn cao khung nhìn phức tạp khơng thể tính tốn lại khung nhìn cho lần truy vấn KNT hữu ích ứng dụng kho liệu, máy chủ chép, biên niên sử hệ thống ghi liệu, trực quan liệu hệ thống điện thoại di động Kiểm tra tính ràng buộc tồn vẹn tối ưu hóa truy vấn lợi ích từ KNT [5, tr.1] Tuy nhiên, việc sử dụng KNT có nhược điểm; là: KNT làm tiêu tốn không gian lưu trữ phải cập nhật bảng chi tiết sửa đổi 1.1.2 Phân loại khung nhìn thực a KNT (snapshot materialized view) b KNT hăm hở (eager materialized view) c KNT lười (very lazy materialized view) d KNT lười (lazy materialized view) 1.2 TỔNG QUAN VỀ CẬP NHẬT GIA TĂNG, ĐỒNG BỘ KHUNG NHÌN THỰC 1.2.1 Tổng quan cập nhật gia tăng Có ba phương pháp cập nhật KNT, hồn tồn (COMPLETE), gia tăng (FAST hay gọi INCREMENTAL) ép buộc (FORCE) Để trì bảng KNT trạng thái thực tiễn, cần phải cập nhật chúng có thay đổi liệu bảng gốc Phụ thuộc vào thời hạn đưa thay đổi vào bảng KNT, chế cập nhật phân đồng không đồng 1.2.2 Đồng khung nhìn thực Cập nhật đồng thực thi khơng chậm trễ có thay đổi liệu bảng gốc phần giao tác thực thay đổi Ngược lại, cập nhật khơng đồng thực vào thời điểm sau giao tác sửa đổi liệu bảng gốc cố định Cập nhật không đồng khai thác thời gian trì hỗn cho phép cập nhật liệu xác định công nghệ xử lý liệu hệ thống thông tin ý nghĩa toán giải [3] 1.3 CẬP NHẬT KHUNG NHÌN THỰC BẰNG TRIGGER TRÊN C TRONG POSTGRESQL 1.3.1 Khái niệm trigger Trigger thủ tục đặc biệt mà việc thực thi tự động có kiện xảy ra, kiện gọi thủ tục đặc biệt định nghĩa câu lệnh, thông thường thực với kiện liên quan đến Insert, Update, Delete liệu Trigger sử dụng việc bảo đảm toàn vẹn liệu theo quy tắc xác định, quản lý theo bảng liệu khung nhìn 1.3.2 Thủ tục tạo trigger ngôn ngữ C HQT CSDL PostgreSQL 1.3.3 Ví dụ tạo trigger C PostgreSQL 1.4 MỞ RỘNG POSTGRESQL VỚI HÀM TÙY CHỌN 1.4.1 Hàm ngôn ngữ truy vấn 1.4.2 Hàm sử dụng ngơn ngữ lập trình C 1.5 TIỂU KẾT CHƯƠNG Trong phần này, tập trung trình bày tổng quan vấn đề khung nhìn thực, phương pháp tạo khung nhìn thực phân loại theo cấu trúc loại khung nhìn thực HQT CSDL Ngồi ra, chúng tơi trình bày tổng quan cập nhật gia tăng HQT CSDL khái niệm đồng khung nhìn thực Cuối chương 1, nghiên cứu vấn đề trigger, phương pháp tạo trigger C PostgreSQL trình bày ví dụ ngơn ngữ C cho phép tạo trigger Phần luận văn này, nghiên cứu giải thuật cập nhật gia tăng khung nhìn thực nối ngồi 10 cách hiệu Luận văn mơ tả cách ràng buộc khóa ngồi khai thác để giảm thiểu chi phí trì 2.1.2 Cơ sở lý thuyết KNT nối a Một số định nghĩa ký hiệu b Dạng thức thông thường kết nối – phân ly c Biểu đồ gộp d Cơ chế đóng góp số hạng kiểu mạng lưới 2.1.3 Phương pháp trì khung nhìn thực a Các số hạng bị ảnh hưởng cập nhật b Phương pháp trì KNT Giả sử bảng T cập nhật cần trì khung nhìn V tham chiếu đến T Đầu tiên tính tốn đồ thị trì phân loại số hạng mà bị ảnh hưởng trực tiếp, bị ảnh hưởng gián tiếp không bị ảnh hưởng Khơng tính tổng qt, giả định khung nhìn có n số hạng, số hạng 1, 2, · · · , k bị ảnh hưởng trực tiếp, số hạng k + , k + , · · · , k + m bị ảnh hưởng gián tiếp , số hạng k + m +1, k + m + , · · · , n không bị ảnh hưởng Sau viết lại biểu thức khung nhìn dạng thức sau: V = VD VI VU , k +m i = k +1 Di , VU = VD = k i =1 Di , VI = n i = k + m +1 Di Từ dạng thức biểu thức, rõ ràng để cập nhật khung nhìn cần tính tốn hai biểu thức delta D VD = ik=1 D Di , D VI = ik=+km+1 D Di , Chúng ta gọi D VD delta D VI delta thứ cấp Tóm lại, trì khung nhìn V sau cập nhật bảng sở thực theo hai bước: 11 v Nếu có số hạng ảnh hưởng trực tiếp, tính delta D VD áp dụng đến khung nhìn v Nếu có số hạng bị ảnh hưởng gián tiếp, tính delta thứ cấp ΔVI áp dụng đến khung nhìn Nếu cập nhật việc chèn (xóa), delta chèn vào (xóa từ) khung nhìn delta thứ cấp bị xóa từ (đưa vào) khung nhìn Trong phần tiếp theo, mô tả cách hiệu để tính tốn delta delta thứ cấp, tương ứng 2.1.4 Phương pháp tính tốn delta Thuật tốn: Xây dựng biểu thức ΔV D Đầu vào: Biểu thức khung nhìn V ban đầu, bảng cập nhật T Đầu ra: Biểu thức để tính tốn ΔV D Xét kỹ tồn tốn tử cho V dọc theo đường từ T đến gốc Trên toán tử kết nối gặp phải, áp dụng quy tắc giao hoán để đảm bảo đầu vào tham chiếu T bên trái Xét kỹ toàn đường từ T đến gốc V Chuyển đổi toán tử phép kết ngoại đầy đủ thành phép kết ngoại bên trái toán tử phép kết ngoại bên phải thành phép kết nội Thay T ΔT Bước cách viết lại thơng thường biểu thức khung nhìn khơng làm thay đổi kết Bước chỉnh sửa biểu thức để loại bỏ tất dòng liệu mà trở thành phần VD Sau Bước 2, toán tử đường từ T đến gốc bao gồm phép chọn, phép kết nội phép kết ngoại bên trái biểu thức delta luôn đầu vào bên trái Sự xác Bước theo sau từ quy tắc lan truyền delta sau sp(e1 ± De1) = spe1 ± spDe1 12 (e1 ± De1) (e1 ± De1) p e = e1 l = e1 e p e e ± De1 p p l l0 e ± De1 e2 p p Trong ± đại diện cho hợp hiệu Các quy tắc cho phép chọn phép kết nội hiển nhiên Quy tắc cho phép kết ngoại bên trái tìm thấy [9] a Phép kết ngoại bên trái chuyển đổi sang sâu – trái b Luật kết hợp cho phép kết ngoại trái 2.1.5 Phương pháp tính tốn delta thứ cấp a Rút delta số hạng từ ΔVD b Tính tốn ΔVI sử dụng khung nhìn 2.1.6 Phương pháp khai thác khóa ngoại CSDL a Đơn giản hóa việc tính ΔVD b Đơn giản hóa việc tính ΔVI 2.2 PHÂN TÍCH THUẬT TỐN CẬP NHẬT GIA TĂNG KHUNG NHÌN THỰC NỐI NGỒI Để hiểu rõ thuật tốn cập nhật gia tăng khung nhìn thực nối ngồi, xem xét lại ví dụ mục 1 Gán bảng Customer, Orders, Employee tương ứng với C, O, E Khung nhìn oj_view viết lại sau: V = (E fo lo O) C p (e, o) p (o , c ) Chúng ta chèn liệu vào bảng orders với dòng liệu chứa bảng new_orders 13 2.2.1 Biểu đồ gộp Chuyển biểu thức khung nhìn V đến dạng thức thơng thường: V = ( s p (e ,o ) (E x O) E) fo C p (o , c ) Bởi kết nối phép kết ngoại đầy đủ, thêm số hạng từ đầu vào bên trái bên phải Điều tạo dạng thức thông thường sau: V = ( s p (e ,o ) (E x O) E) E p (o , c ) C s p (e,o ) (E x O) C Vì E mở rộng rỗng O (vì E lo O) kết p (e, o) nối thuộc tính p(o,c) từ chối rỗng nên dòng liệu từ C khơng thể kết nối với E, ta có dạng thức kết nối – phân ly bằng: V = ( s p (e ,o )Lp ( o ,c ) (E x O x C) s p (e,o ) (E x O) E Hình 2.4 Đồ thị Gộp Duy trì cho khung nhìn V (cập nhật O) C 14 2.2.2 Tính delta lo O tạo ba loại dòng liệu: p (e, o) Kết nối E EO, E Tất dòng liệu E mở rộng rỗng O đó, khơng trở thành phần V liệu V D D khơng có dòng mở rộng rỗng O Loại bỏ dòng liệu E cách thay đổi kết nối trái kết nối trong: V = (O p ( e, o ) E) Kết nối đường fo C p (o , c ) fo Bởi vì, kết nối p(o, c) phép kết ngoại đầy đủ, trì dòng liệu khơng phù hợp từ đầu vào phải Tuy nhiên, chúng mở rộng rỗng O đó, khơng thể trở thành phần VD Chúng ta loại bỏ dòng liệu không phù hợp cách thay đổi kết nối từ phép kết ngoại đầy đủ thành phép kết ngoại bên trái Khi O cập nhật, thuật toán cập nhật gia tăng khung nhìn thực nối ngồi tạo biểu thức sau cho DVD = (DO p (e, o) E) DVD: lo C p (o, c) 2.3 THUẬT TOÁN SINH MÃ TỰ ĐỘNG TRIGGER Mã nguồn trigger chia làm phần, phần mã cố định phần mã tùy biến Mã cố định dòng mã giống cho trigger, xây dựng thành khung (frame) viết thẳng vào file trình sinh mà khơng cần phân tích Phần mã tùy biến phần q trình sinh tự động mã trigger Để xác định phần này, cần thực phân tích câu truy vấn gốc (TVG – câu 15 truy vấn ban đầu cần tạo KNT), từ xác định thông tin cần thiết cho việc sinh mã CNGT a Mã cố định Mã cố định bao gồm số dòng mã sau: · Khai báo thư viện · Khai báo biến điều khiển · Chạy thủ tục, macro quy ước khai báo hàm ngôn ngữ C chạy PostgreSQL (kiểm tra lời gọi hàm, dòng liệu NULL, giá trị trả về…) · Kết nối/ngắt kết nối đến SPI (Server Programming Interface – cho phép trigger chạy truy vấn thân hàm) b Mã tùy biến Trước tiên ta cần phải phân tách TVG thành thành phần nhỏ, sau thực phân tích thơng tin danh sách trường khóa, kiểu liệu trường, vị trí trường bảng…(nhờ vào giao diện lập trình mà PostgreSQL cung cấp để truy vấn đến CSDL), từ xác định biến liệu biểu thức điều kiện ban đầu cho bảng tham gia vào truy vấn, áp dụng khn mẫu CNGT từ thuật tốn đề cập [4] để sinh mã trigger cho kiện bảng Ø Danh sách biến liệu Ø Điều kiện ban đầu Ø Các khuôn mẫu CNGT cho kiện Điều quan trọng việc dùng trigger để CNGT phải xác định thời gian gọi trigger cho kiện tương ứng Đối với kiện insert, trigger phải gọi sau kiện xảy ra; kiện delete, trigger phải gọi trước kiện xảy (và 16 gọi lại sau kiện xảy trường hợp có xuất hàm thống kê max, theo thuật toán CNGT đồng KNT [4]); nhiên kiện update, thuật toán CNGT đồng KNT [4] xem kiện thao tác delete insert riêng biệt, nên trigger cho kiện update phải gọi trước sau kiện xảy Dựa theo thông tin phân tích thuật tốn CNGT đồng KNT [4], giả sử phần khung mã cứng có, kiện ta sinh mã mềm sau: v Sự kiện Insert Khai báo biến liệu Gán giá trị cho biến ứng với cột dòng thêm Kiểm tra biểu thức điều kiện ban đầu Chạy lại TVG với mệnh đề where có thêm vào trường khóa với liệu cụ thể Cấp phát nhớ lưu kết truy vấn bước (4), với dòng liệu lưu, thực bước (6) Truy vấn đến bảng KNT lấy giá trị trường COUNT(*) Nếu truy vấn khơng trả dòng kết nào, tức giá trị nhóm liệu chưa xuất KNT, thực thêm dòng liệu vào KNT, trường COUNT(*) có giá trị Ngược lại, truy vấn trả dòng kết quả, thực bước 7 Thực cập nhật KNT, trường có chứa biểu thức thống kê cần cập nhật giá trị phù hợp với thuật toán CNGT, trường COUNT(*) cập nhật tăng lên v Sự kiện delete 17 Khai báo biến liệu Gán giá trị cho biến ứng với cột dòng xóa Kiểm tra biểu thức điều kiện ban đầu Đối với trường hợp khơng có xuất hàm thống kê và/hoặc max, thực sinh mã từ bước đến bước Ngược lại, có, thực sinh mã từ bước đến bước với thời gian gọi trigger trước kiện xảy ra, thực sinh mã từ bước đến 11 với thời gian gọi trigger sau kiện xảy Chạy lại TVG với mệnh đề where có thêm vào trường khóa với liệu cụ thể Cấp phát nhớ lưu kết truy vấn bước (5), với dòng, thực bước (6) Truy vấn đến bảng KNT lấy giá trị trường COUNT(*) Trong trường hợp delete, xem ln có dòng liệu KNT, so sánh trường đếm COUNT(*) KNT, gọi x giá trị trường đếm bước (5) gọi y, x = y thực xóa dòng liệu KNT, x > y thực bước (8) Thực cập nhật KNT, trường có chứa biểu thức thống kê cần cập nhật giá trị phù hợp với thuật toán CNGT, trường đếm COUNT(*) KNT cập nhật x = x-y Thực lại TVG với mệnh đề where thêm vào cặp điều kiện trường – giá trị thỏa điều kiện: trường thêm vào phải có mặt BG mệnh đề group by TVG 18 10 Cấp phát nhớ lưu kết truy vấn bước (9), với dòng, thực bước (11) 11 Cập nhật lại trường thống kê min/max từ kết truy vấn có v Sự kiện update Khai báo biến liệu Kiểm tra thời điểm gọi trigger, trigger gọi trước kiện update thực bước (3), trigger gọi sau kiện update thực bước (4) Trigger gọi trước (before update): thực tương tự cho trường hợp delete đề cập từ bước (2) trở Trigger gọi sau (after update): thực tương tự cho trường hợp insert đề cập từ bước (2) trở (và với phần trigger delete có xuất hàm thống kê min/max, phần này, có, đặt trước đoạn mã trigger cho kiện insert) 2.4 TIỂU KẾT CHƯƠNG Trong phần này, chúng tơi trình bày tổng quan KNT, phương pháp để tính delta delta thứ cấp, phương pháp khai thác khóa ngoại HQT CSDL để đơn giản hóa việc tính delta delta thứ cấp Đặc biệt, chương chúng tơi phân tích chi tiết thuật tốn cập nhật gia tăng KNT nối ngồi qua việc minh họa ví dụ thực tế Dựa thuật tốn cập nhật gia tăng KNT nối ngồi trình bày, chúng tơi xây dựng thuật tốn sinh mã tự động trigger cho kiện insert, delete update 19 CHƯƠNG XÂY DỰNG CHƯƠNG TRÌNH SINH TỰ ĐỘNG MÃ NGUỒN CÁC TRIGGER THỰC HIỆN CẬP NHẬT GIA TĂNG KHUNG NHÌN THỰC NỐI NGỒI Trên sở tìm hiểu thuật tốn cập nhật gia tăng KNT nối ngồi xây dựng thuật tốn sinh mã tự động trigger trình bày, triển khai xây dựng chương trình sinh tự động mã nguồn trigger thực cập nhật gia tăng KNT nối ngồi 3.1 XÂY DỰNG ỨNG DỤNG 3.1.1 Cơng cụ ngơn ngữ lập trình Chương trình viết ngôn ngữ C Visual Studio 12.0, sử dụng hệ quản trị sở liệu PostgreSQL 9.3 3.1.2 Mơ hình hoạt động ứng dụng 3.1.3 Cài đặt ứng dụng Ứng dụng cài đặt máy đơn chạy hệ điều hành Windows 7, cài đặt Visual Studio 12.0, sử dụng hệ quản trị sở liệu PostgreSQL 9.3 3.1.4 Giao diện ứng dụng Hình 3.3 Màn hình chương trình sau nhập đường dẫn thư mục chứa ouput, tên bảng KNT CSDL, tên file sinh 20 3.2 ĐÁNH GIÁ KẾT QUẢ THỰC NGHIỆM 3.2.1 Tạo sở liệu thực nghiệm Từ thư mục lưu file QLSV.sql, ta mở file chương trình Notepad, copy tồn nội dung file Khởi động PostgreSQL, chọn sở liệu, chọn Execute arbitrary SQL queries Tool bar, chép toàn nội dung vừa copy vào cửa sổ SQL Editor Sau thực thi lệnh Execute query, bảng bao gồm: KHOA, LOP, SV cài đặt hệ quản trị sở liệu PostgreSQL 3.2.2 Chương trình sản phẩm Mở file sln chương trình Visual Studio 12.0, thực build chương trình Chương trình có giao diện console a Input Đầu vào nhập luồng input chuẩn bao gồm: - Truy vấn gốc: select ten_khoa, ten_lop, count(ma_sv) from khoa, lop, sv where khoa.ma_khoa = lop.ma_khoa and lop.ma_lop = sv.ma_lop and que_quan = 'Da Nang' group by ten_khoa, ten_lop - Đường dẫn thư mục chứa ouput: D:\testmvgen - Tên bảng KNT CSDL:mv1 - Tên file sinh ra: mv1 - Tên CSDL chứa TVG: QLSV - Username password tài khoản quản trị HQTCSDL PostgreSQL: + Username: postgres + Password: 011184 b Output Sau nhập đầy đủ thông tin đầu vào, chương trình tự động sinh file nằm thư mục D:\testmvgen mà người dùng 21 định sẵn input Chúng dùng để cài đặt KNT trigger cập nhật nó: - mv1_mvsrc.sql: file mã SQL - ctrigger.h: file header định nghĩa thủ tục macro dùng trigger - mv1_triggersrc.c: file mã nguồn C trigger c Cài đặt KNT dựa output Từ file sinh ra, ta thực cài đặt KNT trigger để cập nhật sau: - Biên dịch file mã nguồn C (*.c) thành file thư viện chia sẻ (*.dll hệ điều hành Windows *.so cho hệ điều hành Linux) - Đặt file thư viện vào thư mục \lib thư mục cài đặt PostgreSQL máy tính (thường nằm thư mục C:\Program Files\PostgreSQL9.3\) - Chạy mã file SQL HQTCSDL PostgreSQL để tạo KNT khai báo trigger cho BG liên quan 3.2.3 Đánh giá kết thực nghiệm a Chương trình sản phẩm Chương trình viết C nên dễ dàng tích hợp vào HQTCSDL PostgreSQL dạng module Ngồi thơng tin TVG phân tích thành kiểu cấu trúc, thuận tiện cho việc xây dựng thêm module tổng hợp kết cho truy vấn liên quan từ liệu KNT Chương trình đáp ứng vấn đề đặt sinh mã nguồn trigger ngôn ngữ C thực CNGT KNT Tuy nhiên, thời gian hạn chế, nên kiểu liệu hàm xử lí thơng tin SQL chưa hỗ trợ đầy đủ 22 chương trình Trong tương lai, chương trình tự động hóa q trình cài đặt KNT CSDL b Đánh giá tốc dộ cập nhật liệu BG có trigger cập nhật KNT TVG thay câu lệnh select đơn giản truy vấn đến bảng KNT nên tốc độ thực TVG xem đạt đến mức tối đa Tuy vậy, BG, trigger cập nhật gia tăng đồng cho KNT làm cho thao tác cập nhật KNT trở thành phần trình cập nhật liệu BG, cho nên, thao tác cập nhật liệu BG bị chậm tỉ lệ thuận với khối lượng liệu BG, độ phức tạp TVG số lượng KNT sử dụng Phần đánh giá giúp ước lượng phần thời gian bị chậm cập nhật liệu BG có trigger cập nhật KNT Ø TVG: SELECT "KHOA"."MA_KHOA","KHOA"."TEN_KHOA", "LOP"."TEN_LOP","LOP"."NIEN_KHOA","SV"."MA_SV ", SV"."HO_TEN", "SV"."NGAY_SINH", "SV"."QUE_QUAN" FROM "KHOA", "LOP", "SV" WHERE "KHOA"."MA_KHOA" = "LOP"."MA_KHOA" AND "LOP"."MA_KHOA" = "SV"."MA_KHOA" GROUP BY "SV"."QUE_QUAN" Ø Số lượng dòng liệu bảng tham gia truy vấn: KHOA: LOP: 100 SV: 5000 23 Ø Đánh giá thời gian thực thi thao tác cập nhật BG Đối với lệnh insert/delete: Thời gian thực thi khơng có trigger trung bình dao động từ 20-25 ms/1 lệnh; thời gian thực thi có trigger cập nhật KNT trung bình dao động từ 30-50ms/1 lệnh Đối với lệnh update: Thời gian thực thi trigger trung bình dao động từ 260ms – 280s/1 lệnh; thời gian thực thi có trigger cập nhật KNT dao trung bình dao động từ 270ms – 280ms/1 lệnh Các thông số kĩ thuật máy đánh giá: Phiên HQTCSDL: PostgreSQL 9.3 (32-bit) CPU: Intel core i3 RAM: 2GB HĐH: Windows 64-bit 3.3 TIỂU KẾT CHƯƠNG Trong chương này, luận văn trình bày trình xây dựng module sinh tự động mã nguồn trigger thực cập nhật gia tăng khung nhìn thực cho kiện thêm mới, xóa, cập nhật bảng sở Từ xây dựng chương trình sinh tự động mã nguồn trigger ngơn ngữ C Chúng tơi đưa số hình ảnh chạy chương trình cách cài đặt chương trình 24 KẾT LUẬN KẾT LUẬN Luận văn trình bày kết nghiên cứu chúng tơi khung nhìn thực nối ngồi phương pháp luận để cập nhật gia tăng khung nhìn thực nối ngồi Hệ quản trị CSDL PostgreSQL ngôn ngữ C Qua đó, chúng tơi trình bày tổng quan nghiên cứu liên quan đến khung nhìn thực, phương pháp để cập nhật gia tăng, trình bày sâu phương pháp để tính tốn delta delta thứ cấp, phương pháp khai thác khóa ngoại HQT CSDL Kết luận văn này, xây dựng module hỗ trợ sinh mã tự động trigger thực cập nhật gia tăng bảng khung nhìn thực nối liên quan đến truy vấn INSERT, UPDATE, DELETE HƯỚNG PHÁT TRIỂN - Chương trình phát triển cho khung nhìn thực nối ngồi dựa thuật tốn trình bày - Tự động hóa q trình cài đặt khung nhìn thực CSDL ... tốn cập nhật gia tăng KNT nối ngồi; xây dựng thuật toán sinh tự động mã nguồn trigger Chương 3: Xây dựng chương trình sinh tự động mã nguồn trigger thực cập nhật gia tăng khung nhìn thực nối. .. tốn cập nhật gia tăng KNT nối ngồi xây dựng thuật tốn sinh mã tự động trigger trình bày, triển khai xây dựng chương trình sinh tự động mã nguồn trigger thực cập nhật gia tăng KNT nối ngồi 3.1 XÂY... tính: Xây dựng chương trình sinh tự động mã trigger thực cập nhật gia tăng bảng khung nhìn thực nối ngồi” Mục tiêu nghiên cứu Mục tiêu chung đề tài là: Xây dựng chương trình sinh tự động mã trigger

Ngày đăng: 26/05/2020, 17:32

Từ khóa liên quan

Mục lục

  • BIA TT.docx

  • TOM TAT GHI DIA.doc

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

Tài liệu liên quan