2. Cấu trúc luận văn
3.1.2. Các truy cập dữ liệu từ các trường
Dữ liệu thử nghiệm tập hợp từ các cơ sở đào tạo, tạo nên quan hệ cần được phân đoạn.
Liên quan đến luận văn, trong chương này, bài toán đề cập là phân đoạn dọc.
Quan hệ được xét có n thuộc tính. Thử nghiệm hiện tại n <= 15. Tuy nhiên, số lượng các thuộc tính của quan hệ tổng quát có thể chỉnh lí được.
Một số thuộc tính là: 1. Họ và tên học sinh;
2. Ngày tháng năm sinh của học sinh; 3. Giới tính, nam hoặc nữ, của học sinh;
4. Tên trường, tức cơ sở đào tạo trung học cơ sở; 5. Điểm trung học cơ sở;
6. Điểm ưu tiên, đối với khu vực, gia đình thương binh, liệt sĩ, dộc tộc thiểu số… 7. Điểm khuyến khích; 8. Điểm văn; 9. Điểm toán; 10.Điểm trung bình cộng. 3.2. Phân đoạn dọc 3.2.1. Đặt vấn đề
Với hình dạng của cơ sở dữ liệu phân tán đề xuất, luận văn đặt ra yêu cầu đối với thiết kế cơ sở dữ liệu phân tán theo phân đoạn dọc với các nhiệm vụ sau:
1. Tại mỗi trường THPT, cán bộ giáo dục thu thập thông tin về các thí sinh. Thông tin này được tổ chức theo bảng 2 chiều (i) dòng ứng với thí sinh; (ii) cột ứng với thuộc tính;
2. Sở GDDT thu thập tất cả nguồn dữ liệu từ các cơ sở đào tạo, tức các trường. Có thể hình dung thấy tại Sở có một bảng dữ liệu tổng quát, có nhiều cột, ứng với các thuộc tính khác nhau;
3. Công nghệ thông tin và truyền thông tại Sở sẽ thu thập tần suất truy cập đến kho dữ liệu tổng quát, theo các câu hỏi Qi khác nhau. Các câu Qi ứng với bộ thuộc tính khác nhau. Đó là cơ sở để phân đoạn dọc bảng tổng quát thành các bảng dữ liệu nhỏ hơn. Người ta cần sử dụng thuật toán BEA và thuâ ̣t toán phân đoạn dọc;
4. Kết quả thu được sau khi phân đoạn sẽ hình nên các cơ sở dữ liệu tại mỗi cơ sở đào tạo.
3.2.2. Áp dụng thuật toán tụ năng lượng BEA
3.2.2.1. Giới thiệu thuật toán
Thuật toán tụ năng lượng đã được trình bày trong chương 2 [6, 10]. Chương này áp dụng thuật toán đối với bài toán thực tế tuyển sinh trung học phổ thông.
3.2.2.2. Quá trình phân đoạn dọc với thuật toán BEA
Theo [6, 10], thuật toán phân đoạn dọc trong quá trình thiết kế cơ sở dữ liệu phân tán được trình bày lại như sau.
Dữ liệu đầu vào:
Bảng dữ liệu R(A1, …, An)
Kết quả:
Các Ri, là bảng dữ liệu phân đoạn. Đối với một lần phân đoạn, có R1 (A1, …, Ai) và Rp (A#, Ai+1, …, An), trong đó A# là các thuộc tính khóa của bảng R.
Thuật toán:
1. Xác định lại tên các cột của bảng dữ liệu: chuyển sang các {Ci}
2. Lập bảng thống kê, cho biết Pi truy cập các cột Cj. Kết quả như bảng 2.
3. Dựa vào bảng thống kê, tính mức hấp dẫn của các Pj: AFF j = REF (Pj) * ACC (Pj); trong đó REF (Pj) lấy là 1, như trong thí dụ; ACC (Pj) là số các truy cập của Pj đến R. Nếu có nhiều trạm trong cơ sở dữ liệu phân tán, AFFj cần là tổng các AFF trên các trạm. Gọi các giá trị này là AFF(Pj) hay AFFj..
4. Xây dựng ma trận hấp dẫn xếp cụm:
Dựa trên bảng thống kê về mức hấp dẫn của các Pj, xác định ma trận A n*n của các dòng C1, … Cn và cột C1, …, Cn. Giá trị Aij là mức hấp dẫn của Pj trên thuộc tính Ci, Cj.
Tính giá trị trên đường chéo chính
n k ki ii A A 1 .
Xác định các mức liên hệ Bond (Ci, Cj) với mọi i, j, ij.
n k kj ki j i C A A C Bond 1 * ) , (
Bắt đầu từ hai cột đầu C1, Cp, tức danh sách có thứ tự S. Xét lần lượt các cột khác {C3, …, Cn}: giả sử xét cột Cj: xét các khả năng đặt Cj vào danh sách S. Đối với mỗi khả năng Cx, Cj, Cx, cần xét
CONT (Cx, Cj, Cx) = 2 * (BOND(Cx, Cj) + BOND (Cj, Cx) - BOND(Cx, Cx)). Khả năng có giá trị đóng góp cao nhất được chọn. Bổ sung Cj vào danh sách S.
Sắp xếp lại ma trận hấp dẫn A theo dòng, để thứ tự các dòng như thứ tự các cột.
5. Phân đoạn ma trận hấp dẫn xếp cụm A:
Trên ma trận (Aij), xét vị trí x ứng với tọa độ An-1, n-1. Điểm x chia ma trận thành khối trái trên và khối phải dưới. Tìm các phần từ của tập (i) PCTQ gồm các quá trình Pj chỉ truy cập các thuộc tính ứng với các cột trong khối trái trên; (ii) PCBQ gồm các quá trình Pj chỉ truy cập các thuộc tính ứng với các cột trong khối phải dưới; và (iii) PCTBQ gồm các quá trình truy cập các thuộc tính ứng các cột thuộc cả hai khối.
Dựa vào bảng các giá trị AFF(Pj) để tính giá ứng với ba tập trên: Giá là tổng các AFF (Pj), Pj thuộc vào tập. Ứng với ba tập có các giá G1, Gp, G3, tương ứng.
Tính giá cực đại G= G1 * Gp - G32.
Lặp lại đối với các điểm x, từ tọa độ An-2, n-2 đến A1, 1: (i) sử dụng ba tập; (ii) tính giá G1, Gp, G3; (iii) tính G; (iv) chuyển vị ma trận: dòng dưới cùng chuyển lên đầu, cột đầu chuyển về cuối.
Xác định vị trí x trong ma trận A để giá trị G cực đại.
6. Phân đoạn bảng quan hê ̣ theo hai khối, ứng với tọa độ x có G đạt giá trị cực đại. Bổ sung thuật toán khóa vào đoạn chưa chứa thuộc tính khóa. Các thuộc tính ứng với các cột trong các khối này tạo nên quan hệ R1, Rp.
3.2.3. Thực hiện với dữ liệu cụ thể
3.2.3.1. Dữ liệu
Hình 3.2. Các trạm phân tán được xét trong bài toán tuyển sinh.
Hình 3.3. Các thuộc tính của dữ liệu trong bảng cơ sở dữ liệu sẽ phân rã.
Bài toán về thông tin tuyển sinh được xác định tạm thời với: 1. Bảng quan hệ phổ quát có 10 thuộc tính dữ liệu, N=10; 2. Xét trên các trạm, M=4;
3. Thống kê thấy có các câu hỏi thường dùng, ứng với các quá trình truy cập đến cơ sở dữ liệu, theo các trạm phân tán, L = 8.
3.2.3.2. Các dữ liệu thống kê
Hình 3.5. Tần suất truy cập đến cơ sở dữ liệu từ 4 trạm theo 8 dạng câu hỏi.
3.2.3.3. Tính ma trận hấp dẫn
Dựa theo dữ liệu thống kê trên các trạm, về số câu hỏi truy cập cơ sở dữ liệu tập trung, bài toán tính ma trận hấp dẫn. Nó được dùng lặp đi lặp lại, để phân đoạn dọc cơ sở dữ liệu, theo hấp dẫn của các thuộc tính.
Hình 3.6. Ma trận hấp dẫn cụm trước khi tính toán phân đoạn
3.2.3.2. Mô tả biến trong chương trình
Trong phần phụ lục đã liệt kê chương trình. Dưới đây là mô tả các biến trong chương trình đó.
tpe
vect = array [1..17] of integer; var
fpc, facc, fkq, fthtinh: text;
MAX, i, j, k, l, m, n, w, w1, w2, i_tach: integer; pc: array [1..10, 1..2] of integer;
acc: array [1..10, 1..10] of integer; aff, tg: array [1..10] of integer;
hd, hd2: array [1..15, 1..15] of integer; thtinh: array [1..15] of integer;
ten_tht: array [1..15] of string; bXYZ, bXY, bYZ, bXZ: integer; R1, R2, chiso: vect;
b_trai, b_phai: boolean;
p_tren, p_duoi, p_hai: vect; {cac cot TREN, DUOI} gia_t, gia_d, gia_h: integer; {gia cua TREN, DUOI}
3.3. Các sơ đồ thuật toán
3.3.1. Chương trình chính
Chương trình chính nhập các danh mục về:
Tên đơn vị phân tán, ứng với các trạm;
Tên các thuộc tính của quan hệ cần phân đoạn dọc;
Dữ liệu thống kê về truy cập của các quá trình, tức các câu hỏi quan hệ, trên các trạm khác nhau của hệ thống.
Bắt đầu chương trình
chính
Nhập dữ liệu Tên thuộc tính
Tên trạm làm việc (Đồng Hỷ, Đại từ, Phú Bình, Lương Phú)
Đọc các dữ liệu thống kê về:
Các quá trình truy cập cột thuộc tinh PC Tần số truy cập theo các trạm phân tán ACC
Tính ma trận hấp dẫn xếp cụm HD Tính ma trận hấp dẫn có đường chéo HD2 Phân đoạn ma trận hấp dẫn Kết thúc Được quan hệ phân tách R1, R2
Hình 3.7. Chương trình chính của bài toán phân đoạn quan hệ
3.3.2. Thuật toán phân đoạn ma trận hấp dẫn phân cụm
Đầu vào: Ma trận HD2, kích thược nxn;
Đầu ra: Điểm phân tách. Dựa vào đó, chương trình sẽ tách được hai quan hệ.
Chương trình phân
đoạn dọc
i:= n-1, MAX := số nhỏ
Tìm P_trên, P_dưới, P_hai
Giá := Trên * dưới – hai*hai
Cập nhật MAX, i_tách I <> n-1 Chuyển vị dòng, cột HD2 (dòng n thành dòng 1; cột 1 thành cột n) Cập nhật tham số dòng, cột I := i+1 I < 2 đ s đ s Xét HD2, i_tách, cột: Tách được R1, R2 tại vị trí i_tách
Kết thúc
Hình 3.8. Thuật toán tụ năng lượng BEA theo [6. 10], dùng trong phân đoạn dọc
3.3.3. Thuật toán tìm phần trên, phần dưới trong ma trận hấp dẫn
Thuật toán tìm các phần trên, dưới và quá trình sử dụng các thuộc tính của trên, dưới và cả hai phần trên dưới, sẽ được sử dụng trong thuật toán phân đoạn, vừa trình bày trong 3.3.2.
Tìm điểm tách ma trận
hấp dẫn
Lấy giá trị khởi đầu cho Dưới, Trên, Trái, Phải… i_dưới :=1
i_trên := 1;
Dưới (i_dưới) := tổng các giá trị cột i+1 đến n Trên (i_trên) := tổng các giá cột từ 1 đến i
s
K:=1
PC(k, 1) hay PC(k,2) có trong TRÊN
PC(k, 1) và PC(k,2) không có trong DƯỚI
P_trên tăng thêm một phần tử PC(k, 1) hay PC(k,2) có trong DƯỚI đ đ s
P_dưới tăng thêm một phần tử K:= k+1
K < = l
P_hai tăng thêm một phần tử đ Kết thúc s đ s
Hình 3.9. Thuật toán tìm các phần, dùng để phân đoạn dọc.
1. Đầu vào:
Ma trận hấp dẫn nxn HD2;
Vecto thống kê số các truy cập của các quá trình theo các thuộc tính PCk, k=1..l;
2. Đầu ra: điểm x trên đường chéo, mà tại đó giá của các quá trình
đạt cực đại. kết quả ra được biểu diễn theo phần TRÊN, DƯỚI.
Hình 3.10. Minh họa hình của chương 2.
3.4. Kết luận chương
Chương trên đã trình bày thuật toán phân đoạn dọc, với các thuật toán chi tiết:
1. Thuật toán tìm phần trên, dưới, trong ma trận hấp hẫn; 2. Thuật toán tìm điểm tách trên ma trận hấp dẫn;
3. Thuật toán phân đoạn, dựa vào ma trận hấp dẫn đã sắp xếp lại. Các chương trình kèm theo cho thấy kết quả xuất trên tệp ngoài, tên là fketqua.txt. Chương trình được viết bằng ngôn ngữ lập trình Pascal 7.0, phù hợp với môi trường đang được sử dụng tại cơ sở đào tạo của học viên.
KẾT LUẬN
Kết quả luận văn đạt được
Qua việc thực hiện luận văn tốt nghiệp cao học công nghệ thông tin, học viên sẽ hiểu sâu hơn về quá trình cơ sở dữ liệu phân tán, từ đó có những thay đổi cho phù hợp để khai thác cơ sở dữ liệu tại các cơ sở giáo dục đạt kết quả tốt.
Dựa trên thực tế về vấn đề tuyển sinh THPT tỉnh Thái Nguyên, căn cứ nhu cầu và điều kiện thực tiễn, từ đó đề xuất các giải pháp trong công tác quản lý thi tuyển sinh, nâng cao hiệu quả xử lý và khai thác dữ liệu đối với các cấp quản lý cũng như tại các nhà trường.
Việc nghiên cứu và thử nghiệm thuật toán tụ năng lượng sẽ tạo điều kiện cho học viên hoàn thành luận văn tốt nghiệp, đồng thời tăng cường năng lực nghiên cứu về thuật toán trong công nghệ thông tin, cụ thể trong thiết kế cơ sở dữ liệu.
Trong thời gian thực hiện tìm hiểu lí thuyết và ứ ng du ̣ng, luận văn đạt được một số kết quả sau:
Tìm hiểu vai trò của cơ sở dữ liệu phân tán, với các dạng phân đoạn; đặc biệt tìm hiểu về ứng du ̣ng cần đến phân đoạn dọc;
Tìm hiểu vai trò của thuật toán tụ năng lượng BEA trong quá trình thiết kế cơ sở dữ liệu phân tán với phân đoạn dọc;
Thử nghiệm các đoạn chương trình, cho phép phân đoạn dọc đối với cơ sở dữ liệu thử nghiệm và cơ sở dữ liệu thực tế. Bài toán thử nghiệm với hệ thống cơ sở dữ liệu về tuyển sinh THPT tại Sở GDDT tỉnh Thái Nguyên.
Riêng đối với bản thân học viên, luận văn là cơ hội để học viên rà soát kiến thức về cơ sở dữ liệu nói chung và cơ sở dữ liệu phân tán nói riêng; đặc biệt hệ thống xử lí dữ liệu, phục vụ công tác quản lý giáo dục tại đơn vị công tác.
Phương hướng tìm hiểu và thực nghiệm tiếp theo của luận văn
Sau khi kết thúc chương trình đào tạo cao học về công nghệ thông tin, luận văn còn phải tiếp tục hoàn thiện, để phục vụ công tác quản lý giáo dục trong thực tế. Một số phương hướng đặt ra là:
Thu thập dữ liệu, hoàn thiện hệ thống dữ liệu về công tác tuyển sinh THPT, không chỉ trong một năm tuyển sinh, mà trong một thời kì, nhằm có dữ liệu so sánh;
Hoàn thiện chương trình phân đoạn dọc cơ sở dữ liệu phân tán, áp dụng cho bài toán khác về công tác quản lý trong ngành GDDT tại Thái Nguyên.
TÀI LIỆU THAM KHẢO
Tiếng Việt
[1]. Đỗ Trung Tuấn, Cơ sở dữ liệu nâng cao, NXB. Đại học Quốc gia Hà Nội, 2015.
[2]. Phạm Thế Quế, “Giáo trình Cơ sở dữ liệu: Lý thuyết và thực hành”, Nhà xuất bản Bưu điện, Hà Nội, 2004.
[3]. Website Cổng thông tin điện tử tỉnh Thái Nguyên, http://www.thainguyen.gov.vn/wps/portal/vb1
[4]. Website Sở GD-ĐT Thái Nguyên, http://thainguyen.edu.vn/
Tiếng Anh
[5]. Abram Siberschatz, Henry F.Korth, S.Sudarshan “Database Systems Concepts”, Published by McGaw-Hill/ Irwin, New York, 2002.
[6]. Angelo R. Bobak, Distributed and Multi-Database Systems, Ed. Artech House, 1998.
[7]. Donald Knuth, The Art of Computer Programming Volumes 1, 2, 3, NXB. Addison Wesley, 1968.
[8]. M. Tamer Ozsu And Patricle Valduriez, “Principles of Distributed Database Systems”, Second Edition, Prentive Hall Upper Saddle River, New Jersy, 1999.
[9]. Michanel V.Mannino, “Database Application Development & Design”, Published by McGraw-Hill/ Irwin, New York, 2001. [10].W. T. McCormick Jr., P. J. Schweitzer, T. W. White, Problem
PHỤ LỤC
Chương trình phân đoạn
program phandoan; uses CRT;
{ chuong trinh phan doan doc, voi bang R (C1,..., Cn) Ci, i=1, n } { cac qua trinh P1,..., Pk truy cap R Pk, k=1, l }
{ Cac tram phan tan la S1,..., Sm Sj, j=1, m }
{ muc dich cua chuong trinh la tach R thanh R1, R2... } type
vect = array [1..17] of integer; var
fpc, facc, fkq, fthtinh: text;
MAX, i, j, k, l, m, n, w, w1, w2, i_tach: integer; pc: array [1..10, 1..2] of integer;
acc: array [1..10, 1..10] of integer; aff, tg: array [1..10] of integer;
hd, hd2: array [1..15, 1..15] of integer; thtinh: array [1..15] of integer;
ten_tht: array [1..15] of string; bXYZ, bXY, bYZ, bXZ: integer; R1, R2, chiso: vect;
b_trai, b_phai: boolean;
p_tren, p_duoi, p_hai: vect; {cac cot TREN, DUOI} gia_t, gia_d, gia_h: integer; {gia cua TREN, DUOI}
procedure xep (var chiso: vect; p, q:integer);
{chuong trinh xu li day n vi tri; chuyen vi tri q vao sau vi tri p}
var
chiso2: vect; i: integer; begin
for i:=1 to p do chiso2[i]:=chiso[i]; chiso2[p+1]:=chiso[q];
for i:= p+2 to q do chiso2[i]:= chiso[i+1]; for i:= q+1 to n do chiso2 [i]:= chiso[i]; for i:=1 to n do chiso[i]:= chiso2[i]; {cap nhat vecto thtinh}
for i:=1 to n do thtinh[i]:= chiso[i+1]; end; {CTC}
procedure vitri (var chiso: vect; d: integer);
{kiem tra vi tri d+1 co xem vao d vi tri da co, roi thay doi. Lam dau d=2 }
var
begin max:= 0; {lan dau d=4} j:=1; repeat ix:= chiso [j]; {C0}
iy:= chiso [d]; {C duoc xet} iz:= chiso [j+1]; {C1}
if (j = d) then iz:= chiso[d+2]; {truong hop cuoi cung} {tinh bxy}
if (ix= 0) or (iz= n+1) then bxy:=0 else begin
bxy:= 0;
for i:=1 to n do bxy:= bxy + hd [i, ix] * hd [i, iy]; end;
{tinh byz}
if (iy= 0) or (iz=n+1) then bxz:=0 else begin
byz:= 0;
for i:=1 to n do byz:= byz + hd [i, iy] * hd [i, iz]; end;
{tinh bxz}
if (ix= 0) or (iz= n+1) then bxz:=0 else begin
bxz:= 0;
for i:=1 to n do bxz:= bxz + hd [i, ix] * hd [i, iz]; end;
{tinh CONT}
CONT:= 2 *(bxy+byz-bxz); if (max < CONT) then Begin
max:= CONT; ix_new:= ix; iy_new:= iy; end;
{sang luot sau} ix:= ix +1; iz:= iz +1;
{xet bo ba tiep theo} j:= j+1;
until (j > d);
{doi vi tri tren vecto chiso } xep (chiso, ix_new, iy_new); end; {CTC vitri}
procedure tim_P (x: integer; var p_tren, p_duoi, p_hai: vect); { dua tren vi tri x tren duong cheo, xac dinh cac tap qua trinh