Tải bản đầy đủ (.pdf) (85 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.92 MB, 85 trang )

Đ I H C ĐÀ N NG
TR

NGăĐ IăH CăS ăPH M

LểăTH ăTHANHăCHỂU

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

LU NăVĔNăTH CăSĨ
H ăTH NGăTHỌNGăTIN

ĐƠăN ngă- 2019


Đ I H C ĐÀ N NG
TR

NGăĐ IăH CăS ăPH M

LểăTH ăTHANHăCHỂU

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



ChuyênăngƠnh:ăH ăth ngăthôngătin
Mưăs : 848.01.04

LU NăVĔNăTH CăSĨ

Ng

iăh

ngăd năkhoaăh c: TS.ăNGUY NăTR NăQU CăVINH

ĐƠăN ngă- 2019





iv

M CL C
L IăCAMăĐOAN ...........................................................................................................i
TịMăT T ..................................................................................................................... ii
M CăL C .....................................................................................................................iv
DANHăM CăVI TăT T ..............................................................................................vi
DANHăM CăCỄCăB NG.......................................................................................... vii
DANHăM CăCỄCăBI UăĐ ă .................................................................................. viii
DANHăM CăCỄCăHỊNH ............................................................................................ix
M ăĐ U ......................................................................................................................... 1
1. Tính cấp thiết c a đề tài ........................................................................................ 1

2. Mục tiêu và nhiệm vụ đề tài ..................................................................................3
3. Đối tượng và ph m vi nghiên c u ........................................................................3
4. Phương pháp nghiên c u ...................................................................................... 4
5. Kết quả đ t được ...................................................................................................4
6. Bố cục luận văn .....................................................................................................4
CH
NGă1.ăNGHIểNăC UăT NGăQUAN .............................................................. 6
1.1. Tổng quan về khung nhìn thực .................................................................................6
1.1.1. Tổng quan về khung nhìn thực .......................................................................6
1.1.2. Phân lo i KNT ................................................................................................ 9
1.2. Các cơ chế và phương pháp cập nhật KNT ............................................................ 10
1.2.1. Các cơ chế cập nhật KNT .............................................................................10
1.2.2. Các phương pháp cập nhật KNT...................................................................11
1.3. Khung nhìn thực trong PostgreSQL .......................................................................11
1.3.1. Tổng quan về PostgreSQL ............................................................................11
1.3.2. Khái niệm về trigger ..................................................................................... 12
1.3.3. Trigger trong PostgreSQL.............................................................................13
1.3.4. Hàm trigger ...................................................................................................14
Kết luận Chương 1.........................................................................................................14
CH
NGă2.ăTHI TăK ăH ăTH NG ......................................................................15
2.1. Mô tả cơ sở dữ liệu hiện t i .................................................................................... 15
2.1.1. Yêu cầu hệ thống .......................................................................................... 15
2.1.2. Mơ hình ER ...................................................................................................15
2.1.3. Mơ hình quan hệ ........................................................................................... 16
2.1.4. Mô tả chi tiết thiết kế các bảng .....................................................................16
2.2. Mô tả các ch c năng c a hệ thống .........................................................................18


v

2.2.1. Sơ đồ ch c năng tổng quát ............................................................................18
2.2.2. Mô tả chi tiết các ch c năng .........................................................................19
2.3. Các ch c năng sẽ ng dụng KNT ...........................................................................26
2.3.1. Đăng ký h c phần ......................................................................................... 26
2.3.2. H y đăng ký h c phần ..................................................................................29
2.3.3. Xem điểm ......................................................................................................30
2.3.4. L c danh sách xét h c bổng ..........................................................................32
2.3.5. L c danh sách nợ h c phần ...........................................................................34
2.4. Thiết kế KNT hỗ trợ cho các ch c năng đã đề xuất ...............................................36
2.4.1. KNT hỗ trợ ch c năng xem bảng điểm mv3 ................................................37
2.4.2. KNT hỗ trợ ch c năng h y đăng kí h c phần mv2......................................37
2.4.3. KNT hỗ trợ ch c năng thống kê điểm mv4 ..................................................38
2.4.4. KNT hỗ trợ ch c năng đăng kí tín chỉ mv1, mv1a, mv1b ............................ 38
Kết luận Chương 2.........................................................................................................41
CH
NGă3.ăCÀIăĐ T,ăTH ăNGHI MăVÀăĐỄNHăGIỄ ......................................42
3.1. Cài đặt KNT............................................................................................................42
3.1.1. KNT hỗ trợ ch c năng xem bảng điểm mv3 ................................................42
3.1.2. KNT hỗ trợ ch c năng h y đăng kí h c phần mv2......................................43
3.1.3. KNT thống kê các lớp h c phần được mở trong kì hiện t i mv1a ...............45
3.1.4. KNT thống kê danh sách môn h c sinh viên được đăng ký mv1b ...............46
3.1.5. KNT danh sách lớp h c phần sinh viên được phép đăng ký mv1 ................48
3.2. Thử nghiệm và kết quả ........................................................................................... 50
3.2.1. Cấu hình hệ thống, số lượng dữ liệu test ...................................................... 50
3.2.2. Kết quả truy vấn ch n dữ liệu .......................................................................50
3.2.3. Kết quả truy vấn cập nhật dữ liệu .................................................................54
3.3. So sánh, đánh giá ....................................................................................................60
3.3.1. So sánh, đánh giá các truy vấn ch n dữ liệu .................................................60
3.3.2. So sánh, đánh giá các truy vấn cập nhật dữ liệu ...........................................60
Kết luận Chương 3.........................................................................................................62

K TăLU N ..................................................................................................................63
TÀIăLI UăTHAMăKH O........................................................................................... 64
QUY TăĐ NHăGIAOăĐ ăTÀIăLU NăVĔNă(B năsao)


vi

DANH M C VI TăT T
BG

Bảng gốc

CNGT
CNTT
CSDL

Cập nhật gia tăng
Công nghệ thông tin
Cơ sở dữ liệu

CSDL QH
CT HSSV

Cơ sở dữ liệu quan hệ
Công tác H c sinh sinh viên

HTQ CSDL
HTTT

Hệ quản tr cơ sở dữ liệu

Hệ thống thông tin

I/O
IS

Input-Output
Information System

IU
KNT

Incremental Update
Khung nhìn thực

MV
QH
SPJ

Materialized Views
Quan hệ
Select-Project-Join

TGV

Truy vấn gốc


vii

DANHăM CăCÁC B NG

S ăhi uă
b ng

Tênăb ng

Trang

1.1.

Danh sách lớp

6

1.2.

Danh sách sinh viên

6

1.3.

Khung nhìn danh sách sinh viên

7

2.1.

Mơ tả chi tiết các bảng trong CSDL quản lý đào t o

16


2.1.

Cấu trúc bảng KNT mv3

37

2.2.

Cấu trúc các KNT mv2

37

2.3.

Cấu trúc các KNT mv1a, mv1b, mv1

39

3.1.

Số lượng dữ liệu test

50

3.2.

So sánh kết quả truy vấn ch n (select) dữ liệu

60


3.3.

So sánh kết quả truy vấn cập nhật dữ liệu

61


viii

DANHăM CăCỄCăBI UăĐ
S ăhi uă
bi uăđ

Tênăbi uăđ

Trang

3.1.

So sánh kết quả truy vấn ch n (select) dữ liệu

60

3.2.

So sánh kết quả truy vấn cập nhật dữ liệu

61



ix

DANHăM CăCÁC HÌNH
S ăhi uă
hình

Tên hình

Trang

1.1.

CSDL quản lý đặt hàng

8

1.2.

Ho t động c a HQT CSDL khi yêu cầu dữ liệu từ nhiều bảng

8

1.3.

CSDL quản lý đặt giao hàng dùng KNT

9

1.4.


Q trình CNGT KNT bằng trigger

13

2.1.

Mơ hình ER c a hệ thống

15

2.2.

Mơ hình quan hệ

16

2.3.

Ch c năng hệ thống

18

2.4.

Biểu đồ tuần tự t o lớp h c phần

19

2.5.


Biểu đồ tuần tự đăng ký h c phần

20

2.6.

Biểu đồ tuần tự h y đăng ký h c phần

21

2.7.

Biểu đồ tuần tự nhập điểm thành phần

22

2.8.

Biểu đồ tuần tự nhập điểm thi

23

2.9.

Biểu đồ tuần tự xem điểm

24

2.10.


Biểu đồ tuần tự l c danh sách xét h c bổng

25

2.11.

Biểu đồ tuần tự l c danh sách nợ h c phần

25

3.1.

Kết quả truy vấn gốc lớp h c phần có thể đăng ký dựa trên
mv3

51

3.2.

Kết quả truy vấn sử dụng KNT lớp h c phần có thể đăng ký

51

3.3.

Kết quả truy vấn gốc h c phần được h y

52


3.4.

Kết quả truy vấn sử dụng KNT h c phần được h y

52

3.5.

Kết quả truy vấn gốc điểm sinh viên

52

3.6.

Kết quả truy vấn sử dụng KNT điểm sinh viên theo

53

3.7.

Kết quả truy vấn gốc lấy danh sách xét h c bổng

53

3.8.

Kết quả truy vấn sử dụng KNT lấy danh sách xét h c bổng

53


3.9.

Kết quả truy vấn gốc l c danh sách nợ h c phần

54

3.10.

Kết quả truy vấn sử dụng KNT l c danh sách nợ h c phần

54

3.11.

Thời gian truy vấn chèn không dùng KNT

55

3.12.

Thời gian truy vấn xóa khơng dùng KNT

55

3.13.

Thời gian truy vấn sửa không dùng KNT

55


3.14.

Thời gian truy vấn chèn dùng KNT mv3

56


x
S ăhi uă

Tên hình

hình

Trang

3.15.

Thời gian truy vấn xóa dùng KNT mv3

56

3.16.

Thời gian truy vấn sửa dùng KNT mv3

56

3.17.


Thời gian truy vấn chèn dùng KNT mv3 và mv2

57

3.18.

Thời gian truy vấn xóa dùng KNT mv3 và mv2

57

3.19.

Thời gian truy vấn sửa dùng KNT mv3 và mv2

57

3.20.

Thời gian truy vấn chèn dùng KNT mv3, mv2, mv1a, mv1b,
mv1 (gia tăng)

58

3.21.

Thời gian truy vấn xóa dùng KNT mv3, mv2, mv1a, mv1b,
mv1 (gia tăng)

58


3.22.

Thời gian truy vấn sửa dùng KNT mv3, mv2, mv1a, mv1b,
mv1 (gia tăng)

58

3.23.

Thời gian truy vấn chèn dùng KNT mv3, mv2, mv1a, mv1b,
mv1 (tồn phần)

59

3.24.
3.25.

Thời gian truy vấn xóa dùng KNT mv3, mv2, mv1a, mv1b,
mv1 (toàn phần)
Thời gian truy vấn sửa dùng KNT mv3, mv2, mv1a, mv1b,
mv1 (toàn phần)

59
59


1

M ăĐ U
1.ăTínhăc păthi tăc aăđ ătƠiă

Hiện nay, cơng nghệ thông tin (CNTT) đang ngày càng phát triển. Con người
đã ng dụng CNTT vào công việc cũng như các ho t động hàng ngày. Các hệ thống
thông tin (HTTT) đã được triển khai trong hầu hết các lĩnh vực: kinh doanh, giải trí,
quản tr , hành chính... Các hệ thống này có thể ho t động 24/7 và có nhiều ch c năng
được thực hiện tự động mà không cần sự kiểm soát c a con người.
T i Trường Đ i h c Tài chính - Kế tốn, HTTT cũng được triển khai trong các
ho t động: quản lý, d y h c, quảng bá... Trong số các HTTT này, HTTT quản lý đào
t o là hệ thống quan tr ng và có sự tương tác cao. HTTT quản lý đào t o đã giúp cho
quá trình đào t o được diễn ra sn sẻ, nhanh chóng và dễ kiểm sốt.
Ngồi những kết quả đáng tin cậy, HTTT quản lý đào t o vẫn còn một số vấn
đề về hiệu năng mà tồn t i lớn nhất là ch c năng đăng ký lớp h c phần (đăng ký tín
chỉ). Ch c năng này vừa yêu cầu dữ liệu được trích xuất ph c t p từ cơ sở dữ liệu
(CSDL) vừa có một lượng lớn sinh viên truy cập đồng thời. Để có được danh sách lớp
h c phần mà sinh viên có thể đăng ký, chương trình phải tính nhiều dữ liệu trung gian,
đặc biệt là tính các môn h c: sinh viên đã h c, sinh viên còn nợ hoặc được phép h c
cải thiện và các môn h c được phép h c vượt… Các phép tính này dùng nhiều phép
nối (). Vì thế thời gian phản hồi c a hệ thống b chậm và nhiều lúc quá tải, không
phản hồi. Hay ch c năng xét h c bổng, ch c năng này chỉ l c danh sách điểm c a
những sinh viên đ tiêu chí xét h c bổng h c tập trong năm h c cụ thể. Từ danh sách
này, Khoa, Phòng CT HSSV sẽ xem xét l i, cân đối, ch n l c để cấp h c bổng h c tập.
Để có được bảng điểm, chương trình phải thực hiện 08 phép nối, lấy dữ liệu từ nhiều
bảng; Để có được danh sách xét cấp h c bổng cuối cùng, chương trình phải thực hiện
thêm 05 phép thống kê (Sum, Min, Average). Và còn một số ch c năng cần phải nâng
cao tốc độ thực thi truy vấn để đ t được hiệu quả tốt nhất.
Trong thời gian h c tập khóa h c cao h c c a mình, tơi đã được tiếp cận với kỹ
thuật khung nhìn thực (KNT) - một kỹ thuật giúp cải thiện và nâng cao tốc độ thực thi
cho các truy vấn ph c t p. KNT là một đối tượng trong CSDL dùng để lưu trữ kết quả
thực thi c a một truy vấn, giúp cải thiện và nâng cao tốc độ thực thi đối với các truy
vấn ph c t p, có tần suất sử dụng cao trên một lượng dữ liệu lớn. Ý tưởng c a KNT là
dựa trên các bảng kết quả s n có để trả lời truy vấn một cách nhanh chóng mà khơng

cần thực thi l i truy vấn. Đối với những truy vấn ph c t p bao gồm nhiều phép nối và
các hàm thống kê, hiệu quả sử dụng KNT càng rõ rệt đặc biệt khi áp dụng trên một
lượng dữ liệu đ lớn, do đã bỏ qua các bước thực thi phép nối và các hàm thống kê,


2
đây là những thành phần chiếm nhiều chi phí tài nguyên trong quá trình thực thi truy
vấn.
ng dụng KNT sử dụng chiến lược cập nhật gia tăng (CNGT) đồng bộ bằng
cách sử dụng các trigger, chiến lược cập nhật toàn phần đồng bộ cho thấy hiệu quả khi
viết l i truy vấn để sử dụng KNT - tăng tốc độ thực thi c a truy vấn lên nhiều lần, đặc
biệt là các truy vấn ph c t p sử dụng lượng dữ liệu lớn, đáp ng được tính t c thời đối
với kết quả thực thi truy vấn trong HTTT. Ngoài ra cập nhật toàn phần là một phương
pháp được sử dụng hi sinh thời gian update, delete để đảm bảo việc thực hiện select
trong mùa đăng kí tín chỉ được diễn ra nhanh chóng; Khơng phụ thuộc vào lượng dữ
liệu, diễn ra với một tốc độ cố đ nh, và không mắc phải vấn đề như ở CNGT khi các
KNT cập nhật lẫn nhau.
Cùng với đó, tơi cũng được tiếp cận hệ quản tr cơ sở dữ liệu (HQT CSDL)
PostgreSQL - một HQT CSDL nguồn mở cho phép tích hợp kỹ thuật KNT vào để
nâng cao hiệu năng. PostgreSQL là một HQT CSDL mã nguồn mở, được phát triển
dựa trên mã nguồn c a trường Đ i h c Berkeley, hỗ trợ đầy đ các thành phần phổ
biến c a một HQT CSDL như các truy vấn ph c hợp, bẫy sự kiện, khung nhìn, tính
tồn vẹn c a giao d ch,... và có thể ch y trên m i hệ điều hành. Được phát triển hơn 20
năm qua bởi đội ngũ kĩ sư giàu kinh nghiệm, PostgreSQL đã t o được lòng tin về độ
tin cậy cũng như tính đúng đắn, tồn vẹn dữ liệu. PostgreSQL khơng chỉ là cơ sở dữ
liệu quan hệ (CSDLQH), nó là quan hệ hướng đối tượng. Điều này cung cấp cho nó
một vài lợi thế so với các CSDL SQL mã nguồn mở khác như MySQL, MariaDB và
Firebird.
KNT giống như các view thơng thường trong việc trình diễn tập kết quả c a
một truy vấn mà b n muốn sử dụng thường xuyên, ngo i trừ tập kết quả thực sự được

lưu trữ trên ổ đĩa giống như các bảng thông thường. KNT cũng có thể được đánh chỉ
mục, khơng giống các views thông thường được t o ra mỗi lần chúng được g i, KNT
là các ảnh chụp t i một thời điểm. Chúng không được làm mới (refreshed) ngo i trừ
được chỉ đ nh. Điều này có thể tăng đáng kể tốc độ với các truy vấn sử dụng KNT.
Trigger là một th tục đặc biệt mà việc thực thi c a nó tự động khi có sự kiện
xảy ra, các sự kiện g i th tục đặc biệt này được đ nh nghĩa trong câu lệnh, thông
thường được thực hiện với các sự kiện liên quan đến Insert, Update, Delete dữ liệu.
Trigger được sử dụng trong việc bảo đảm toàn vẹn dữ liệu theo quy tắc xác đ nh, được
quản lý theo bảng dữ liệu hoặc khung nhìn. Sử dụng trigger một cách hợp lý trong
CSDL sẽ có tác động rất lớn trong việc tăng hiệu năng c a CSDL.
Từ vấn đề đang tồn t i trong HTTT quản lý đào t o t i trường và kiến th c
được tiếp cận trong khóa h c, tơi ch n đề tài “Nghiên cứu ứng dụng khung nhìn


3
thực để nâng cao hiệu năng hệ thống thông tin quản lý đào tạo tại Trường Đại học
Tài chính - Kế tốn” để làm luận văn tốt nghiệp.
Mục đích c a luận văn là nghiên c u áp dụng KNT vào hệ thống thông tin quản
lý đào t o c a trường Đ i h c Tài chính - Kế tốn nhằm tăng tốc hệ thống. Điều này
có nghĩa rằng đối tượng nghiên c u c a luận văn là HTTT quản lý đào t o c a trường.
Trên cơ sở đó, ph m vi nghiên c u c a luận văn là việc áp dụng KNT cho một số truy
vấn có độ ph c t p tương đối cao. Trong đó, các cài đặt sẽ được triển khai trên HQT
CSDL PostgreSQL - một HQT CSDL.
Luận văn sử dụng hai phương pháp nghiên c u: nghiên c u tài liệu và thực
nghiệm. Trong đó:
- Nghiên c u tài liệu: Tìm hiểu, phân tích, tổng hợp các tài liệu có liên quan từ
các sách, giáo trình, các bài báo.
- Thực nghiệm: Xây dựng các truy vấn gốc, KNT, truy vấn dựa trên KNT.
2.ăM cătiêuăvƠănhi măv ăđ ătƠi
- Nghiên c u tổng quan về KNT.

- Nghiên c u ng dụng KNT trong các HQT CSDL.
- Nghiên c u ng dụng KNT nhằm đẩy nhanh các thực thi các truy vấn trên một
số lượng bản ghi lớn.
- Nghiên c u hệ thống quản lý đào t o t i Trường Đ i h c Tài chính - Kế tốn.
- Khai thác các thuật tốn CNGT đồng bộ, CNGT tồn phần đã có để ng dụng
vào đề tài.
- ng dụng KNT vào phần mềm quản lý đào t o t i Trường Đ i h c Tài chính Kế tốn để nâng hiệu năng.
3.ăĐ iăt

ngăvƠăph măviănghiênăc u

3.1. Đối tượng nghiên cứu
- HQT CSDL PostgreSQL
- KNT
- Thuật tốn CNGT đồng bộ, CNGT tồn phần.
- Hệ thống thông tin quản lý đào t o.
3.2. Phạm vi nghiên cứu
- ng dụng KNT trong HQT CSDL PostgreSQL.
- ng dụng KNT nhằm đẩy nhanh các thực thi các truy vấn.
- Nghiên c u hệ thống quản lý đào t o t i Trường Đ i h c Tài chính - Kế toán.
- Khai thác các thuật toán CNGT KNT để có để ng dụng vào phần mềm quản
lý đào t o t i Trường Đ i h c Tài chính - Kế tốn, đặc biệt là thuật tốn CNGT KNT
với truy vấn lồng.


4
4.ăPh ngăphápănghiênăc uă
Về phương pháp nghiên c u, tôi sử dụng hai phương pháp chính là nghiên c u
lý thuyết và nghiên c u thực nghiệm.
4.1. Phương pháp lý thuyết

Thu thập, ch n l c, phân lo i, ghi chú và nghiên c u các tài liệu (sách, bài báo,
luận văn, trang web) có liên quan đến KNT, HQT CSDL PostgreSQL, CNGT KNT,
đồng bộ KNT, CNGT toàn phần KNT.
4.2. Phương pháp thực nghiệm
- Nghiên c u các ch c năng cần thiết nâng cao tốc độ thực thi truy vấn c a
Phần mềm Quản lý đào t o Trường Đ i h c Tài chính - Kế tốn.
-

ng dụng KNT để nâng cao hiệu năng.

5.ăK tăqu ăđ tăđ

c

5.1. Lý thuyết
- Hiểu thêm về HQT CSDL PostgreSQL, ng dụng KNT trong các HQT CSDL
PostgreSQL, cách sử dụng các trigger, CNGT đồng bộ, CNGT tồn phần.
- Phân tích được các ch c năng cần thiết để ng dụng KNT nhằm nâng cao tốc
độ thực thi truy vấn c a Phần mềm Quản lý đào t o Trường Đ i h c Tài chính - Kế
tốn.
5.2. Thực tiễn
- Đề tài sẽ ng dụng KNT trong HQT CSDL PostgreSQL, cách sử dụng các
trigger CNGT đồng bộ, CNGT toàn phần để nâng cao hiệu năng c a phần mềm Quản
lý đào t o t i Trường Đ i h c Tài chính - Kế tốn.
- Tiến hành kiểm thử so sánh đánh giá tốc độ thực thi truy vấn c a ng dụng.
6.ăB ăc călu năvĕnă
Luận văn bao gồm các phần: Mở đầu, các chương, Kết luận và Tài liệu tham
khảo. Trong đó, các chương gồm:
+ Ch ngă 1ă - Nghiênă c uă t ngă quan. Chương này trình bày tổng quan các
kiến th c cơ sở về KNT. Đầu tiên là giới thiệu về KNT. Sau đó là phân lo i KNT.

Tiếp theo là các phương pháp cập nhật KNT được sử dụng hiện nay. Tiếp đến, phần
giới thiệu HQT CSDL PostgreSQL được trình bày. Cuối chương là các kiến th c liên
quan đến KNT trong HQT CSDL PostgreSQL như trigger và hàm trigger.
+ Ch ngă2ă - Thi tă k ă h ă th ng. Chương này trình bày các kết quả thiết kế
CSDL, các ch c năng ng dụng KNT. Đầu tiên, chương trình bày kết quả phân tích
u cầu hệ thống quản lý đào t o t i Trường Đ i h c Tài chính - Kế tốn. Sau đó là
thiết kế mơ hình dữ liệu ở m c khái niệm - mơ hình ER và mơ hình dữ liệu quan hệ.
Tiếp đó là phân tích thiết kế biểu đồ tuần tự và câu lệnh truy vấn cho các ch c năng hệ


5
thống có kết nối ph c t p hay thường được truy cập đồng thời cần ng dụng KNT để
nâng cao hiệu năng. Sau cùng là thiết kế KNT hỗ trợ cho các ch c năng được nêu ra.
+ Ch ngă3ă- CƠiăđ t,ăth ănghi măvƠăđánhăgiá. Chương này trình bày các kết
quả cài đặt, thử nghiệm KNT và đánh giá. Đầu tiên là cài đặt các KNT được thiết kế ở
Chương 2. Sau đó là ch y thử nghiệm một số truy vấn đối ch ng cho các KNT được
cài đặt. Cuối cùng là các so sánh, đánh giá về kết quả thử nghiệm.


6

CH
NGă1
NGHIểNăC UăT NGăQUAN
1.1. T ng quan v khung nhìn th c
1.1.1. Tổng quan về khung nhìn thực
Một khung nhìn (view) có thể được xem như là một bảng “ảo” trong CSDL có
nội dung được đ nh nghĩa thơng qua một truy vấn (câu lệnh SELECT). Điểm khác biệt
giữa khung nhìn và bảng là khung nhìn khơng được xem là một cấu trúc lưu trữ dữ
liệu tồn t i trong CSDL. Thực chất dữ liệu quan sát được trong khung nhìn được lấy từ

các bảng thông qua câu lệnh truy vấn dữ liệu.
Để hình dung về khung nhìn, ta xét trường hợp dữ liệu sau. Một trường cần
quản lý danh sách sinh viên theo lớp nên lập một CSDL gồm 02 bảng. Bảng th nhất
mô tả về lớp như Bảng 1.1. Bảng th hai mô tả về sinh viên như Bảng 1.2.
Bảng 1.1. Danh sách lớp
malop

tenlop

KT15

Kế tốn khóa 15

KT16

Kế tốn khóa 16

KT17

Kế tốn khóa 17

Bảng 1.2. Danh sách sinh viên
masv

hodem

ten

ngaysinh


malop

1501002

Lê Thanh

An

07/05/1997

KT15

1501003

Trần Văn

Bình

22/02/1997

KT15

1502001

Võ Văn

Kiệt

14/02/1998


KT16

1502002

Lê Hồng

Mến

08/03/1998

KT16

1503001

Tr nh Thanh

Bình

20/11/1999

KT17

Yêu cầu thực tế phát sinh là cần một danh sách sinh viên gửi lên Ban quản lý ký
túc xá. Thông tin bao gồm: mã sinh viên, h tên, tuổi và tên lớp c a sinh viên. Với yêu
cầu này, nếu chỉ dùng một trong hai bảng trên thì chưa đ thơng tin. Cách làm ở đây là
ta t o ra một khung nhìn bằng cách nối bảng lớp và bảng sinh viên l i rồi bỏ bớt các
đặc tính khơng cần thiết. Và việc bỏ bớt này khơng ảnh hưởng gì đến CSDL thật.
Khung nhìn kết quả có được như Bảng 1.3.



7
Cấu trúc khung nhìn danh sách sinh viên:
CREATE VIEW DSSV(masv,hodem,ten,tuoi,tenlop) AS
SELECT masv, hodem, ten,DATEDIFF(YY, ngaysinh, GETDATE()),
tenlop
FROM sinhvien, lop
WHERE sinhvien.malop = lop.malop

Bảng 1.3. Khung nhìn danh sách sinh viên
masv

hodem

ten

tuoi

tenlop

1501002

Lê Thanh

An

22 Kế tốn khóa 15

1501003

Trần Văn


Bình

22 Kế tốn khóa 15

1502001

Võ Văn

Kiệt

21 Kế tốn khóa 16

1502002

Lê Hồng

Mến

21 Kế tốn khóa 16

1503001

Tr nh Thanh

Bình

20 Kế tốn khóa 17

Khi khung nhìn đã được đ nh nghĩa, ta có thể sử dụng câu lệnh SELECT để truy

vấn dữ liệu từ khung nhìn như đối với các bảng. Khi trong câu truy vấn xuất hiện
khung nhìn, HQT CSDL sẽ dựa vào đ nh nghĩa c a khung nhìn để chuyển yêu cầu truy
vấn dữ liệu liên quan đến khung nhìn và việc truy vấn dữ liệu được thực hiện bởi yêu
cầu tương đương trên các bảng.
Việc sử dụng khung nhìn trong cơ sở dữ liệu đem l i các lợi ích sau đây: bảo
mật dữ liệu, đơn giản hoá các thao tác truy vấn dữ liệu, tập trung và đơn giản hóa dữ
liệu, độc lập dữ liệu.
Tuy nhiên, việc sử dụng khung nhìn cũng tồn t i một số nhược điểm:
Do HQT CSDL thực hiện việc chuyển đổi các truy vấn trên khung nhìn thành
những truy vấn trên các bảng cơ sở nên nếu một khung nhìn được đ nh nghĩa bởi một
truy vấn ph c t p thì sẽ dẫn đến chi phí về mặt thời gian khi thực hiện truy vấn liên
quan đến khung nhìn sẽ lớn.
Mặc dù thơng qua khung nhìn có thể thực hiện được thao tác bổ sung và cập
nhật dữ liệu cho bảng cơ sở nhưng chỉ h n chế đối với những khung nhìn đơn giản.
Đối với những khung nhìn ph c t p thì thường khơng thực hiện được; hay nói cách
khác là dữ liệu trong khung nhìn là chỉ đ c.
Một khung nhìn có thể được cụ thể hóa bằng cách lưu trữ các bộ dữ liệu c a các
khung nhìn trong cơ sở dữ liệu, được g i là khung nhìn thực (KNT - Materialized
view).
KNT là một đối tượng trong CSDL dùng để lưu trữ kết quả thực thi c a một


8
truy vấn, giúp cải thiện và nâng cao tốc độ thực thi đối với các truy vấn ph c t p, có
tần suất sử dụng cao trên một lượng dữ liệu lớn. Ý tưởng c a KNT là dựa trên các
bảng kết quả s n có để trả lời truy vấn một cách nhanh chóng mà khơng cần thực thi
l i truy vấn. Đối với những truy vấn ph c t p bao gồm nhiều phép nối và các hàm
thống kê, hiệu quả sử dụng KNT càng rõ rệt đặc biệt khi áp dụng trên một lượng dữ
liệu đ lớn, do đã bỏ qua các bước thực thi phép nối và các hàm thống kê, đây là
những thành phần chiếm nhiều chi phí trong q trình thực thi truy vấn.

Giả sử ta có CSDL quản lý việc mua bán hàng hóa, với các bảng Đơn hàng, Đặt
hàng và Khách hàng được mơ tả như Hình 1.1.

Hình 1.1. CSDL quản lý đặt hàng
Truy vấn tính tổng số tiền bán được c a mỗi sản phẩm cũng như tổng số lượng
khách hàng đặt mua từng sản phẩm thuộc từng danh mục thuộc d ng ph c t p. Lúc
này cần thực hiện phép nối giữa 3 bảng liên quan đồng thời phải thực thi các hàm
thống khê SUM (trường hợp tính tổng tiền) và COUNT (trường hợp đếm số lượng
khách hàng). Thời gian thực thi truy vấn tỉ lệ thuận với độ lớn c a dữ liệu từ mỗi bảng.
Dữ liệu từ các bảng gốc (BG) càng tăng theo thời gian, tốc độ thực hiện c a truy vấn
càng chậm.

Hình 1.2. Hoạt động của HQT CSDL khi yêu cầu dữ liệu từ nhiều bảng


9
Tuy nhiên, thông qua việc triển khai lưu trữ bằng KNT, người dùng có thể dễ
dàng có được kết quả và sử dụng nó một cách trực tiếp hoặc kết hợp nó với các truy
vấn khác. Lúc này, hiệu quả truy vấn xem như đ t m c tối đa, vì HQT CSDL chỉ cần
đ c từ bảng KNT kết quả c a truy vấn thay vì phải thực hiện phép nối và tính tốn các
biểu th c thống kê, vốn là các thao tác chiếm nhiều chi phí. Lúc này, CSDL như Hình
1.3.

Hình 1.3. CSDL quản lý đặt giao hàng dùng KNT
Tuy nhiên, việc sử dụng KNT cũng có những nhược điểm, đó là: KNT làm tiêu
tốn khơng gian lưu trữ và phải được cập nhật khi các bảng chi tiết cơ bản được sửa
đổi.
1.1.2. Phân loại KNT
KNT được chia làm 04 lo i: bản sao, hăm hở, rất lười và lười.
a) KNT bản sao (snapshot materialized view):

Chiến lược cập nhật: kiểu KNT được cập nhật theo yêu cầu.
Cài đặt: KNT bản sao được cài đặt khá dễ dàng bằng cách g i hàm sau:
refresh_matview(). Khi g i hàm refresh_matview(), HQT CSDL sẽ tự động xóa nội
dung c a KNT trước đó, rồi thực hiện truy vấn khung nhìn và điền kết quả vào l i
KNT với nội dung hiện t i c a khung nhìn đó.
b) KNT hăm hở (eager materialized view):
Chiến lược cập nhật: Chúng được cập nhật ngay sau khi có bất kỳ thay đổi nào
được thực hiện với CSDL đó mà sẽ ảnh hưởng đến nó. Điều này được thực hiện với
một hệ thống kích ho t trên tất cả các bảng cơ sở. Phụ thuộc vào hàm thay đổi được
(như now()) sẽ gây ra cho KNT trở nên sai lệch, nhưng có thể được sửa chữa với


10
những làm mới nhỏ, mà chỉ ảnh hưởng đến các hàng.
Cài đặt: Việc thực thi KNT hăm hở được thực hiện qua hai hàm sau:
mv_refresh_row(PK): cập nhật bộ giá tr với khóa chính PK
mv_refresh(): sử dụng nếu khung nhìn dựa vào hàm thay đổi được như “now()”
Khi đó, các trigger với các bẫy sự kiện trong các HQT CSDL tương ng với các
truy vấn INSERT, UPDATE và DELETE sẽ được g i thơng qua hàm
mv_refresh_row() một cách thích hợp.
c) KNT rất lười (very lazy materialized view):
Mô tả KNT rất lười như sau:
Chiến lược cập nhật: Chúng sẽ ghi l i các hàng trong KNT cần phải được cập
nhật, nhưng sẽ không cập nhật cho đến khi hướng đến. Điều này sẽ rất hữu ích nếu b n
đang cam kết nhiều giao d ch mà ảnh hưởng đến KNT đó, nhưng không muốn thực sự
cập nhật KNT cho đến sau này. Chúng có ch c năng tương đương với các KNT bản
sao.
Cài đặt: Việc cài đặt KNT kiểu rất lười qua các bước sau:
Ghi tất cả những thay đổi trên các bảng cơ sở trong một bản ghi (sử dụng một
số trigger và hàm)

Cài đặt một hàm "matview_refresh()" mà đ c bản ghi đó và cập nhật KNT theo
danh sách các thay đổi trong bản ghi
d) KNT lười (lazy materialized view):
Chiến lược cập nhật: Chúng sẽ ghi l i các hàng trong KNT cần phải được cập
nhật, và cập nhật chúng khi giao d ch được thực hiện. Điều này hữu ích nếu nhiều sự
thay đổi sẽ ảnh hưởng đến các hàng giống nhau và cũng sẽ cho phép những thay đổi
được thực hiện nhanh hơn nhiều.
Cài đặt: Tương tự như KNT rất lười, việc g i và thực thi KNT thơng qua hàm
“matview_refresh()”, trong đó cơ chế g i sẽ được g i theo cam kết và không theo yêu
cầu.
1.2. Các c ăch và ph

ngăphápăc p nh t KNT

1.2.1. Các cơ chế cập nhật KNT
Dựa vào thời h n cập nhật các thay đổi vào các bảng KNT, người ta chia làm 02
cơ chế cập nhật KNT: đồng bộ và bất đồng bộ.
a) Cập nhật đồng bộ: Là cập nhật đồng bộ được thực thi khơng chậm trễ ngay
khi có thay đổi dữ liệu trong bảng gốc như một phần c a giao tác thực hiện thay đổi
đó.
b) Cập nhật bất đồng bộ: là cập nhật được thực hiện vào một thời điểm nào đó
sau khi các giao tác sửa đổi dữ liệu trong bảng gốc đã được cố đ nh. Cập nhật bất đồng


11
bộ khai thác thời gian trì hỗn cho phép trong cập nhật dữ liệu được xác đ nh bởi công
nghệ xử lý dữ liệu trong các hệ thống thông tin và ý nghĩa c a các bài toán giải quyết
trong đó.
1.2.2. Các phương pháp cập nhật KNT


Các q trình cập nhật dữ liệu cho một KNT để đáp ng với những thay
đổi trong dữ liệu cơ bản được g i là cập nhật KNT. Có 03 phương pháp cập nhật
KNT: toàn phần, gia tăng và ép buộc.
a) Cập nhật toàn phần (COMPLETE): là cập nhật làm mới l i bảng dữ liệu
KNT. Tương tự việc xóa tất cả dữ liệu đã có và thêm dữ liệu mới. Thực hiện phương
pháp này tốn nhiều thời gian.
b) CNGT (FAST hay còn g i là INCREMENTAL): là cập nhật chỉ sửa đổi nội
dung KNT tương ng với các thay đổi trong các BG. Thực hiện phương pháp này rất
tiết kiệm thời gian. Tuy nhiên, không phải trường hợp cập nhật dữ liệu KNT nào cũng
dễ/có thể thực hiện theo phương pháp này.
c) Cập nhật ép buộc (FORCE): là cập nhật xem xét khi có khả năng thì thực
hiện CNGT, cịn nếu khơng thì sử dụng cập nhật tồn phần.
1.3. Khung nhìn th c trong PostgreSQL
1.3.1. Tổng quan về PostgreSQL
PostgreSQL là một HQT CSDL mã nguồn mở, được phát triển dựa trên mã
nguồn c a trường Đ i h c Berkeley, hỗ trợ đầy đ các thành phần phổ biến c a một
HQT CSDL như các truy vấn ph c hợp, bẫy sự kiện, khung nhìn, tính tồn vẹn c a
giao d ch,... và có thể ch y trên m i hệ điều hành. Được phát triển hơn 20 năm qua bởi
đội ngũ kĩ sư giàu kinh nghiệm, PostgreSQL đã t o được lòng tin về độ tin cậy cũng
như tính đúng đắn, tồn vẹn dữ liệu.
PostgreSQL không chỉ là cơ sở dữ liệu quan hệ (CSDLQH), nó là quan hệ
hướng đối tượng. Điều này cung cấp cho nó một vài lợi thế so với các CSDL SQL mã
nguồn mở khác như MySQL, MariaDB và Firebird.
Một đặc điểm cơ bản c a CSDLQH hướng đối tượng là hỗ trợ các đối tượng
người dùng tự đ nh nghĩa và các hành vi c a chúng bao gồm các kiểu dữ liệu, các hàm,
các thao tác, các tên miền và các chỉ mục. Điều này làm cho PostgreSQL cực kỳ m nh
và linh ho t. Trong những cái khác, các cấu trúc dữ liệu ph c t p có thể được t o ra,
lưu trữ, và truy xuất.
PosgreSQL cũng là HQT CSDL đóng vai trị tiên phong trong việc đưa ra
những khái niệm quan tr ng mà các HQT CSDL thương m i khác rất lâu sau mới có.

Là một HQT CSDL mã nguồn mở hàng đầu trên thế giới và KNT đã được triển khai
trên PostgreSQL ở các phiên bản 9.3.4, 9.4, 10…. KNT giống như các view thông


12
thường trong việc trình diễn tập kết quả c a một truy vấn mà b n muốn sử dụng
thường xuyên, ngo i trừ tập kết quả thực sự được lưu trữ trên ổ đĩa giống như các bảng
thông thường. KNT cũng có thể được đánh chỉ mục, khơng giống các views thông
thường được t o ra mỗi lần chúng được g i, KNT là các ảnh chụp t i một thời điểm.
Chúng không được làm mới (refreshed) ngo i trừ được chỉ đ nh. Điều này có thể
tăng đáng kể tốc độ với các truy vấn ch y sử dụng KNT. Thay vì sử dụng các views
thơng thường hoặc phải làm các join ph c t p trên các bảng hoặc thực hiện các hàm
tập hợp (aggregation funcitons) trong truy vấn, sử dụng materialized views với các
dữ liệu cần thiết s n sàng và chờ đợi trên ổ đĩa để tăng hiệu quả. Khi b n s n sàng
cập nhật dữ liệu trong materialized view, nó có thể làm mới sử dụng lệnh REFRESH,
tuy nhiên KNT trong PostgreSQL vẫn chưa hỗ trợ vấn đề cập nhật đồng bộ gia tăng.
Do vậy, việc nghiên c u các kỹ thuật CNGT cho KNT trên PostgesSQL đang rất
được quan tâm.
1.3.2. Khái niệm về trigger
Trigger là một th tục đặc biệt mà việc thực thi c a nó tự động khi có sự kiện
xảy ra, các sự kiện g i th tục đặc biệt này được đ nh nghĩa trong câu lệnh, thông
thường được thực hiện với các sự kiện liên quan đến Insert, Update, Delete dữ liệu.
Trigger được sử dụng trong việc bảo đảm toàn vẹn dữ liệu theo quy tắc xác đ nh, được
quản lý theo bảng dữ liệu hoặc khung nhìn.
Điểm khác biệt giữa th tục lưu trữ và trigger là: các th tục lưu trữ được thực
thi khi người sử dụng có lời g i đến chúng cịn các trigger l i được “g i” tự động khi
xảy ra những giao tác làm thay đổi dữ liệu trong các bảng hoặc khung nhìn.
Mỗi một trigger được t o ra và gắn liền với một bảng hoặc một khung nhìn nào
đó trong CSDL. Khi dữ liệu trong bảng hoặc khung nhìn b thay đổi (t c là khi bảng
hoặc khung nhìn ch u tác động c a các câu lệnh INSERT, UPDATE hay DELETE) thì

trigger sẽ được tự động kích ho t.
Sử dụng trigger một cách hợp lý trong CSDL sẽ có tác động rất lớn trong việc
tăng hiệu năng c a CSDL. Các trigger thực sự hữu dụng với những khả năng sau:
Một trigger có thể nhận biết, ngăn chặn và huỷ bỏ được những thao tác làm thay
đổi trái phép dữ liệu trong cơ sở dữ liệu.
Các thao tác trên dữ liệu (xố, cập nhật và bổ sung) có thể được trigger phát
hiện ra và tự động thực hiện một lo t các thao tác khác trên CSDL nhằm đảm bảo tính
hợp lệ c a dữ liệu.
Thơng qua trigger, ta có thể t o và kiểm tra được những mối quan hệ ph c t p
hơn giữa các bảng trong CSDL mà bản thân các ràng buộc không thể thực hiện được.
Có thể đ nh nghĩa nhiều trigger cho một sự kiện trên một bảng. Lúc đó, chúng


13
sẽ được thực thi theo th tự alphabet theo tên c a trigger.
Có thể xác đ nh sự kiện insert, update hay delete cũng như thời điểm g i trigger
là trước (before) hay sau (after) từ bên trong trigger, nên ta có thể sinh mã một trigger
cho tất cả các sự kiện trên mỗi bảng.
1.3.3. Trigger trong PostgreSQL
PostgreSQL hỗ trợ 2 lo i trigger là trigger viết bằng ngôn ngữ PL/pgSQL và
trigger viết bằng ngơn ngữ C. Có nghiên c u đã ch ng minh được trigger viết bằng
ngôn ngữ C cho hiệu suất cao hơn trigger viết bằng ngôn ngữ PL/pgSQL (khoảng
13%), mặc dù việc triển khai C trigger trên PostgreSQL được cho là rất ph c t p và
không được khuyến ngh . Tuy nhiên, đề tài vẫn sử dụng trigger viết bằng ngôn ngữ C
với hy v ng tối ưu hóa hiệu suất cập nhật, một bước quan tr ng trong q trình CNGT.
Trigger trên PostgreSQL có thể xử lý một tập các bản ghi, hoặc chỉ xử lý một
bản ghi. Chỉ trigger xử lý một bản ghi mới có thể nhìn thấy dữ liệu đang được thao tác.
Vì vậy đề tài thực hiện sinh mã nguồn trigger bắt sự kiện thay đổi dữ liệu trên các BG
theo cơ chế xử lý từng bản ghi một trong tập các bản ghi được cập nhật. Việc xử lý
từng bản ghi là không năng suất so với xử lý một tập các bản ghi, nên trong tương lai

nếu PostgreSQL hỗ trợ khả năng đ c được tập dữ liệu đang xử lý trong thân hàm
trigger, hiệu suất cập nhật sẽ được gia tăng đáng kể.
Một bảng có thể được khai báo nhiều trigger, vì vậy các trigger thực hiện
CNGT có thể được cài đặt song song với các trigger khác c a người dùng. Quá trình
cập nhật KNT bằng trigger được thể hiện như Hình 1.4.
S ăKI N:ăINSERT,ăDELETE,ăUPDATE

B NGăC ăS
TRIGGER
TRIGGER

TRIGGER

KHUNGăNHỊNăTH C

Hình 1.4. Quá trình CNGT KNT bằng trigger


×