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

Xây dựng hệ thống thông tin sinh viên trong trường đại học: luận văn thạc sĩ

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 (9.9 MB, 74 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC LẠC HỒNG
***

TRẦN THUẬN HÒA

XÂY DỰNG HỆ THỐNG THÔNG TIN SINH VIÊN
TRONG TRƯỜNG ĐẠI HỌC

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

Đồng Nai, Năm 2016


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC LẠC HỒNG
***

TRẦN THUẬN HÒA

XÂY DỰNG HỆ THỐNG THÔNG TIN SINH VIÊN
TRONG TRƯỜNG ĐẠI HỌC

Chuyên ngành: Công nghệ thông tin
Mã số: 60480201
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC:
PGS.TS. ĐẶNG TRẦN KHÁNH

Đồng Nai, Năm 2016



i

LỜI CẢM ƠN
Em xin chân thành cảm ơn các Thầy, Cô khoa Công nghệ thông tin Trường
Đại học Lạc Hồng cùng các Thầy cô tham gia giảng dạy cho lớp Cao học khóa 5 đã
hết lòng truyền đạt kiến thức cho chúng em trong quá trình học tập tại trường. Đặc
biệt, em xin chân thành cảm ơn Thầy PGS. TS. Đặng Trần Khánh, người thầy đã
tận tình hướng dẫn em thực hiện đề tài.
Xin chân thành cảm ơn gia đình và bạn đồng nghiệp đã giúp đỡ, động viên
tinh thần, đóng góp nhiều ý kiến để giúp cho em hoàn thành luận văn này.
Học viên

Trần Thuận Hòa


ii

LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi, các tài liệu và kết
quả nghiên cứu trong luận văn là trung thực.
Học viên

Trần Thuận Hòa


iii

TÓM TẮT LUẬN VĂN
Thiết bị di động thông minh đang càng ngày càng được sử dụng rộng rãi, nhất

là giới trẻ học sinh sinh viên. Chúng không chỉ phục vụ nhu cầu giải trí, mà còn bao
gồm cả hỗ trợ học hành. Riêng sinh viên, các ứng dụng phục vụ giải trị phổ biến,
trong khi các ứng dụng phục vụ cho học tập lại hạn chế. Họ cần có thông báo tin tức
kip thời, có thông tin sự kiện, hội nghị, tuyển dụng để kịp thời đăng ký và tham gia
chúng. Do đó, đề tài tập trung xây dựng hệ thống phục vụ nhu cầu thông tin của
sinh viên thông qua ứng dụng trên thiết bị di động kết nối với thông tin cập nhật
nhất từ máy chủ. Những tính năng chính của ứng dụng này bao gồm quản lý thông
tin cá nhân, tin tức, sự kiện, phản hồi và quan trọng nhất là sinh viên 5 tốt. Thông
qua chức năng quan trọng, sinh viên 5 tốt, người quản trị có thể chủ động tiếp cận
sinh viên, động viên, khích lệ, tạo điều kiện để sinh viên có thể đạt được danh hiệu
cao quý này. Kết quả của đề tài là một ứng dụng di động chạy trên hệ điều hành
Android và đã được phân phối đến người dùng thông qua Google Play.


iv

MỤC LỤC
LỜICẢMƠN...............................................................................................................................................I
LỜICAMĐOAN.........................................................................................................................................II
CHƯƠNG1.MỞĐẦU................................................................................................................................1
1.1.GIỚITHIỆUĐỀTÀI.......................................................................................................................................1
1.2.LÝDOCHỌNĐỀTÀI.....................................................................................................................................1
1.3.MỤCTIÊUTHỰCHIỆN..................................................................................................................................2
CHƯƠNG2.TỔNGQUANVẤNĐỀ.............................................................................................................3
2.1GIỚITHIỆUTỔNGQUÁTVỀCỔNGTHÔNGTIN....................................................................................................3
2.2HỆTHỐNGCŨ.............................................................................................................................................4
HÌNH1.GIAODIỆNTRANGTUOITREBACHKHOA(CŨ)1.............................................................................4
HÌNH2.GIAODIỆNTRANGTUOITREBACHKHOA(CŨ)2.............................................................................4
HÌNH3.GIAODIỆNTRANGTUOITREBACHKHOA(CŨ)3.............................................................................5
2.3GIỚITHIỆUVỀCÁCHSẢNPHẨMTIẾPCẬNVỚINGƯỜIDÙNG.................................................................................5

2.4

HỆQUẢNTRỊCƠSỞDỮLIỆUNOSQL..........................................................................................................6

2.4.1TổngquanvềNoSQL......................................................................................................................6
HÌNH4.ĐẶCĐIỂMDỮLIỆULỚN-5VS.......................................................................................................6
2.4.1.1Khốilượngdata(Volume)........................................................................................................................6
2.4.1.2Tốcđộxửlýdata(Velocity)......................................................................................................................7
2.4.1.3Đadạngdata(Variety).............................................................................................................................7
2.4.1.4Tínhxácthực(Veracity)...........................................................................................................................7
2.4.1.5Giátrị(Value)...........................................................................................................................................7

2.4.2ApacheHadoop..............................................................................................................................7
2.4.2.1ThànhphầnchínhcủanềntảngHadoop.................................................................................................8
2.4.2.2KiếntrúccụmHadoopnhiềunode..........................................................................................................8

HÌNH5.KIẾNTRÚCCỤMHADOOPNHIỀUNODE........................................................................................8
2.4.2.3CácđiểmthuậnlợikhidùngHadooop.....................................................................................................9

2.4.3MapReduce....................................................................................................................................9
HÌNH6.CÁCHTHỨCMAPREDUCEHOẠTĐỘNG.........................................................................................9
2.4.3.1CácthuậnlợicủacácthủtụcMapReduce...............................................................................................9
2.4.3.2QuátrìnhhoạtđộngcủaMapReduce....................................................................................................10

2.4.4KiếntrúcHDFS..............................................................................................................................11
HÌNH7.KIẾNTRÚCHDFS.........................................................................................................................12


v
2.4.4.1Tínhsẵnsàngcaokhicóthảmhoạ........................................................................................................12

2.4.4.2MôhìnhHadooptrêncómộtsốvấnđề................................................................................................13

2.4.5HệquảntrịcơsởdữliệulớnNoSQL............................................................................................13
2.4.5.1DạngdữliệulớnKey-Value....................................................................................................................13

HÌNH8.DẠNGDỮLIỆULỚNKEY–VALUE...............................................................................................14
2.4.5.2Dạngdữliệulớnhướngtàiliệu(Document-based)...............................................................................14

HÌNH9.DẠNGDỮLIỆULỚNHƯỚNGTÀILIỆU.........................................................................................14
2.4.5.3Dạngdữliệulớnhướngcột(Column-based).........................................................................................14

HÌNH10.DẠNGDỮLIỆULỚNHƯỚNGCỘT.............................................................................................15
2.4.5.4Dạngdữliệulớnhướngđồthị(GraphDatabase)..................................................................................15

HÌNH11.DẠNGDỮLIỆULỚNHƯỚNGĐỒTHỊ.........................................................................................15
2.4.6HệquảntrịcơsởdữliệuMongoDB.............................................................................................15
HÌNH13.PHÂNTÁNDỮLIỆUTRONGMONGODB....................................................................................17
2.4.7CấutrúcdữliệuMongoDB...........................................................................................................18
HÌNH14.CẤUTRÚCDỮLIỆUMONGODB.................................................................................................18
2.4.7.1ƯuđiểmcủaMongoDB..........................................................................................................................18
2.4.7.2KhinàosửdụngMongoDB.....................................................................................................................19
2.4.7.3MôhìnhdữliệuMongoDB.....................................................................................................................19

HÌNH15.MÔHÌNHDỮLIỆUTHAMCHIẾU...............................................................................................20
HÌNH16.MÔHÌNHDỮLIỆUNHÚNG.......................................................................................................20
2.4.7.4KiểudữliệutrongMongoDB..................................................................................................................20
2.4.7.5CơchếhoạtđộngcủaMongoDB...........................................................................................................21

HÌNH17.CƠCHẾHOẠTĐỘNGMONGODB..............................................................................................21
2.5


TỔCHỨCTƯƠNGTÁCPHÍANGƯỜIDÙNGANGULARJS(CLIENT-SIDE)..............................................................22

2.5.1GiớithiệuvềAngularJs.................................................................................................................22
2.5.2Dữliệuhaichiều(Two-waydatabinding)...................................................................................22
2.5.3CácđặctínhcủaAngularJs...........................................................................................................23
2.5.4CáctínhnăngcốtlõicủaAngularJs..............................................................................................23
HÌNH19.CÁCTHÀNHPHẦNCỦAANGULARJS..........................................................................................24
2.5.5ƯuđiểmcủaAngularJs................................................................................................................24
2.5.6NhượcđiểmcủaAngularJS..........................................................................................................24
2.6

TỔCHỨCTƯƠNGTÁCPHÍAMÁYCHỦ(SERVER-SIDE)....................................................................................24

2.6.1NodeJs..........................................................................................................................................24
2.6.1.1GiớithiệuvềNodeJs..............................................................................................................................24


vi
2.6.1.2ƯuđiểmcủaNodeJs..............................................................................................................................26
2.6.1.3

NhượcđiểmcủaNodeJs...................................................................................................................26

HÌNH21.MỨCĐỘRỦIROKHISỬDỤNGNODEJS....................................................................................27
2.6.2ExpressJs.......................................................................................................................................27
2.7CÂNNHẮCGIỮAMEANVÀLAMP..............................................................................................................27
2.7.1GiớithiệuvềLAMP.......................................................................................................................27
HÌNH22.CÁCTHÀNHPHẦNCẤUTHÀNHLAMP.......................................................................................28
_WAMP.............................................................................................................................................................28

_WIMP...............................................................................................................................................................28
_LAPP................................................................................................................................................................28
_MAMP.............................................................................................................................................................28
_XAMP...............................................................................................................................................................28

2.7.2GiớithiệuvềMEAN......................................................................................................................29
HÌNH23.CÁCTHÀNHPHẦNCẤUTHÀNHMEAN......................................................................................29
2.7.3SosánhLAMPvàMEAN...............................................................................................................30
HÌNH24.TỐCĐỘINSERTDỮLIỆUGIỮASQLVÀMONGO........................................................................31
HÌNH25.TỐCĐỘTRUYVẤNDỮLIỆUGIỮASQLVÀMONGO..................................................................31
HÌNH26.TỐCĐỘTRUYVẤNDỮLIỆUCÓKHOÁNGOẠIGIỮASQLVÀMONGO........................................32
2.7.4SƠĐỒTỔCHỨCDỮLIỆU..........................................................................................................................34
HÌNH27.SƠĐỒTỔCHỨCDỮLIỆUCỦAUSER.........................................................................................34
HÌNH28.SƠĐỒTỔCHỨCDỮLIỆUCỦANEWS........................................................................................35
HÌNH29.SƠĐỒTỔCHỨCDỮLIỆUCỦAEVENT.......................................................................................35
HÌNH30.SƠĐỒTỔCHỨCDỮLIỆUCỦAFILE...........................................................................................36
CHƯƠNG3.HIỆNTHỰC..........................................................................................................................37
3.1CÁCCÔNGCỤSỬDỤNGTRONGXÂYDỰNGSẢNPHẨM......................................................................................37
3.1.1Web..............................................................................................................................................37
3.1.2Android.........................................................................................................................................37
3.2

XÂYDỰNGSẢNPHẨM............................................................................................................................37

3.2.1

Xâydựnggiaodiện................................................................................................................37

3.2.1.1Web........................................................................................................................................................37
3.2.1.2Android..................................................................................................................................................37


HÌNH31.THIẾTKẾVIEWĐĂNGNHẬPCỦAMOBILE.................................................................................38
HÌNH32.THIẾTKẾVIEWĐĂNGKÝCỦAMOBILE......................................................................................39


vii
HÌNH33.THIẾTKẾMENUVIEWCỦAMOBILE..........................................................................................40
HÌNH34.THIẾTKẾVIEWHỒSƠCƠBẢNCỦAMOBILE.............................................................................41
HÌNH35.THIẾTKẾVIEWHỒSƠNÂNGCAOCỦAMOBILE........................................................................42
HÌNH36.THIẾTKẾVIEWDANHSÁCHSỰKIỆNCỦAMOBILE....................................................................43
HÌNH37.THIẾTKẾVIEWLỌCSỰKIỆNCỦAMOBILE.................................................................................44
HÌNH38.THIẾTKẾVIEWXEMCHITIẾTSỰKIỆNCỦAMOBILE..................................................................45
HÌNH39.THIẾTKẾFLOATBUTTONSỰKIỆNCỦAMOBILE........................................................................46
HÌNH40.THIẾTKẾVIEWDANHMỤCCỦAMOBILE..................................................................................47
HÌNH41.THIẾTKẾVIEWDANHSÁCHTINTỨCCỦAMOBILE....................................................................48
HÌNH42.THIẾTKẾVIEWXEMCHITIẾTTINTỨCCỦAMOBILE..................................................................49
HÌNH43.THIẾTKẾFLOATBUTTONTINTỨCCỦAMOBILE........................................................................50
HÌNH44.THIẾTKẾREPLYVIEWCHOMOBILE...........................................................................................51
HÌNH45.THIẾTKẾVIEWSINHVIÊN5TỐTCHOMOBILE..........................................................................52
3.2.2Quảnlýsourcecode.....................................................................................................................52
3.2.2.1CentralizeVersionControlSystem.........................................................................................................52

HÌNH46.CENTRALIZEVERSIONCONTROLSYSTEM..................................................................................52
3.2.2.2DistributedVersionControlSystem.......................................................................................................53

HÌNH47.DISTRIBUTEDVERSIONCONTROLSYSTEM................................................................................53
3.2.2.3BitbucketvàSourceTree........................................................................................................................53

HÌNH48.BITBUCKET................................................................................................................................54
HÌNH49.SOURCETREE.............................................................................................................................54

3.2.3Kiểmthử.......................................................................................................................................54
3.2.3.1Xemsựkiệnchitiếtvàbìnhluận...........................................................................................................54

HÌNH50.CÁCBƯỚCKIỂMTHỬXEMSỰKIỆNVÀBÌNHLUẬN..................................................................55
3.2.3.2Xembàibáo...........................................................................................................................................55

HÌNH51.CÁCBƯỚCKIỂMTHỬXEMNỘIDUNGBÀIBÁO........................................................................55
3.2.3.3Xemthíchvàhủythíchmộtbàibáo.......................................................................................................56

HÌNH52.CÁCBƯỚCKIỂMTHỬCHỨCNĂNGTHÍCHVÀHỦYTHÍCHBÀIBÁO...........................................56
3.2.3.4Bìnhluậnvềmộtbàibáo.......................................................................................................................56

HÌNH53.CÁCBƯỚCKIỂMTHỬCHỨCNĂNGBÌNHLUẬNBÀIBÁO...........................................................57


viii
3.2.3.5Đăngkýthôngtincánhânđểtrởthànhsinhviên5tốt.........................................................................57

HÌNH54.CÁCBƯỚCKIỂMTHỬCHỨCNĂNGĐĂNGKÝTHÔNGTINCÁNHÂNĐÊTRỞTHÀNHSINHVIÊN5
TỐT.........................................................................................................................................................58
3.2.3.6Đăngkýnănglựcđểtrởthànhsinhviên5tốt.......................................................................................58

HÌNH55.CÁCBƯỚCKIỂMTHỬCHỨCNĂNGĐỂTRỞTHÀNHSINHVIÊN5TỐT........................................58
3.2.3.7Phảnhồi.................................................................................................................................................59

HÌNH56.CÁCBƯỚCKIỂMTHỬCHỨCNĂNGPHẢNHỒI..........................................................................59
CHƯƠNG4.KẾTLUẬN.............................................................................................................................60
4.1.HOÀNTHÀNH..........................................................................................................................................60
4.2.HẠNCHẾ................................................................................................................................................61
4.3.HƯỚNGPHÁTTRIỂN..................................................................................................................................61

TÀILIỆUTHAMKHẢO..............................................................................................................................62


ix

DANH MỤC HÌNH
Hình 1. Giao diện trang tuoitrebachkhoa (cũ) 1 .........................................................4
Hình 2. Giao diện trang tuoitrebachkhoa (cũ) 2 .........................................................4
Hình 3. Giao diện trang tuoitrebachkhoa (cũ) 3 .........................................................5
Hình 4. Đặc điểm dữ liệu lớn - 5Vs ............................................................................6
Hình 5. Kiến trúc cụm Hadoop nhiều node ................................................................8
Hình 6. Cách thức MapReduce hoạt động ..................................................................9
Hình 7. Kiến trúc HDFS ...........................................................................................12
Hình 8. Dạng dữ liệu lớn Key – Value .....................................................................14
Hình 9. Dạng dữ liệu lớn hướng tài liệu ...................................................................14
Hình 10. Dạng dữ liệu lớn hướng cột .......................................................................15
Hình 11. Dạng dữ liệu lớn hướng đồ thị ...................................................................15
Hình 12. MongoDB .................................................. Error! Bookmark not defined.
Hình 13. Phân tán dữ liệu trong MongoDB ..............................................................17
Hình 14. Cấu trúc dữ liệu MongoDB........................................................................18
Hình 15. Mô hình dữ liệu tham chiếu .......................................................................20
Hình 16. Mô hình dữ liệu nhúng ...............................................................................20
Hình 17. Cơ chế hoạt động MongoDB .....................................................................21
Hình 18. AngularJS ................................................... Error! Bookmark not defined.
Hình 19. Các thành phần của AngularJS ..................................................................24
Hình 20. NodeJS ....................................................... Error! Bookmark not defined.
Hình 21. Mức độ rủi ro khi sử dụng NodeJS ............................................................27
Hình 22. Các thành phần cấu thành LAMP ..............................................................28
Hình 23. Các thành phần cấu thành MEAN .............................................................29
Hình 24. Tốc độ insert dữ liệu giữa SQL và Mongo ................................................31

Hình 25. Tốc độ truy vấn dữ liệu giữa SQL và Mongo ............................................31
Hình 26. Tốc độ truy vấn dữ liệu có khoá ngoại giữa SQL và Mongo.....................32
Hình 27. Sơ đồ tổ chức dữ liệu của user ...................................................................34
Hình 28. Sơ đồ tổ chức dữ liệu của news .................................................................35
Hình 29. Sơ đồ tổ chức dữ liệu của event .................................................................35
Hình 30. Sơ đồ tổ chức dữ liệu của file ....................................................................36


x
Hình 31. Thiết kế View đăng nhập của Mobile ........................................................38
Hình 32. Thiết kế View đăng ký của Mobile ............................................................39
Hình 33. Thiết kế Menu View của Mobile ...............................................................40
Hình 34. Thiết kế View hồ sơ cơ bản của Mobile ....................................................41
Hình 35. Thiết kế View hồ sơ nâng cao của Mobile.................................................42
Hình 36. Thiết kế View danh sách sự kiện của Mobile ............................................43
Hình 37. Thiết kế View lọc sự kiện của Mobile .......................................................44
Hình 38. Thiết kế View xem chi tiết sự kiện của Mobile .........................................45
Hình 39. Thiết kế Float Button sự kiện của Mobile .................................................46
Hình 40. Thiết kế View danh mục của Mobile .........................................................47
Hình 41. Thiết kế View danh sách tin tức của Mobile .............................................48
Hình 42. Thiết kế View xem chi tiết tin tức của Mobile ..........................................49
Hình 43. Thiết kế Float Button tin tức của Mobile ...................................................50
Hình 44. Thiết kế Reply View cho Mobile ...............................................................51
Hình 45. Thiết kế View Sinh viên 5 tốt cho Mobile .................................................52
Hình 46. Centralize Version Control System ...........................................................52
Hình 47. Distributed Version Control System ..........................................................53
Hình 48. Bitbucket ....................................................................................................54
Hình 49. SourceTree .................................................................................................54
Hình 50. Các bước kiểm thử xem sự kiện và bình luận ............................................55
Hình 51. Các bước kiểm thử xem nội dung bài báo .................................................55

Hình 52. Các bước kiểm thử chức năng thích và hủy thích bài báo. ........................56
Hình 53. Các bước kiểm thử chức năng bình luận bài báo .......................................57
Hình 54. Các bước kiểm thử chức năng Đăng ký thông tin cá nhân đê trở thành sinh
viên 5 tốt ...................................................................................................................58
Hình 55. Các bước kiểm thử chức năng để trở thành sinh viên 5 tốt .......................58
Hình 56. Các bước kiểm thử chức năng Phản hồi ....................................................59


1

CHƯƠNG 1. MỞ ĐẦU
1.1. Giới thiệu đề tài
Hiện nay, đối với các nước đang phát triển, việc áp dụng những công nghệ
tiên tiến vào trong đời sống là một nhu cầu tất yếu, trong đó có cả việc cung cấp và
trao đổi thông tin. Như chúng ta đã biết, theo truyền thống, việc cung cấp hoặc trao
đổi thông tin với mọi người thường thông qua radio, tivi hoặc sách báo… nơi mà
người dùng không thể chủ động cập nhật thông tin vào thời điểm cụ thể. Bên cạnh
đó, các cách thức trên đều hoạt động dựa theo định kỳ, nghĩa là lượng thông tin mới
chỉ được thông báo với người dùng đúng vào thời điểm đã được định sẵn trong
tương lai và thông tin ngay tại thời điểm phát tán có thể không còn giá trị như lúc
hoạt động vừa xảy ra. Chính vì vậy, việc cung cấp một phương tiện giúp người
dùng nói chung và sinh viên nói riêng có thể kiểm soát được thông tin ở bất cứ thời
điểm nào là hết sức cần thiết.
Hệ thống gồm website kết hợp với ứng dụng điện thoại thông minh có thể
đáp ứng được nhu cầu này. Hệ thống là một cổng thông tin, hoạt động dựa theo mô
hình client-server 24/24, người dùng có thể truy cập dữ liệu bất kì lúc nào miễn là
thiết bị của họ có kết nối internet. Bên cạnh đó, với việc sử dụng framework tiên
tiến (MEAN STACK), kèm theo đó, dữ liệu được phía server lưu trữ bằng định
dạng NoSQL mang lại tốc độ truy xuất nhanh hơn hẳn so với cách lưu trữ dữ liệu
truyền thống sẽ mang lại cho người dùng cảm giác thoải mái nhất kể cả khi truy cập

thông tin bằng đường truyền có tốc độ thấp.
Chính vì vậy, cổng thông tin sẽ giúp sinh viên dễ dàng cập nhật được tất cả
thông tin của hoạt động, sự kiện mọi lúc, mọi nơi mà không bị ràng buộc về thời
gian, địa điểm. Đồng thời trong tương lai, nó cũng là nơi chính thức để thông báo
đến sinh viên về mọi hoạt động cũng như sự kiện diễn ra sắp tới, giúp sinh viên có
một nơi đáng tin cậy hơn để khai thác thông tin từ Đoàn Hội trường Đại học một
cách tốt nhất.
1.2. Lý do chọn đề tài
Vào năm 2016, đã có hơn 46% dân số trên thế giới biết sử dụng internet
(tăng 3% so với cùng kỳ năm ngoái), trong số đó có 48% là người châu Á (bao gồm
cả Việt Nam). Chính vì vậy, việc lựa chọn đề tài liên quan đến việc sử dụng internet


2
là hết sức cần thiết. Bên cạnh đó, tôi quyết định chọn đề tài này vì nó giúp mang lại
nhiều thông tin hữu ích cho sinh viên, nhất là việc quản lý các nhóm công tác xã hội
khi tham gia hoạt động tình nguyện. Cụ thể hơn, sinh viên trường Đại học sẽ như
thế nào nếu có thể cập nhật được mọi tình hình về hoạt động tình nguyện cũng như
sư kiện (số người đã đăng ký, ngày công tác xã hội, nơi thực hiện…) theo thời gian
thực mà chỉ cần đăng nhập vào website hoặc có trên tay một chiếc điện thoại
Android có kết nối mạng internet? Một chức năng quan trọng đó là thu hút, động
viên, khuyến khích các bạn sinh viên phấn đấu để đạt sinh viên 5 tốt. Đây là một
phong trào mà Trung ương Đoàn phát động đến các trường Đại học để thúc đẩy sinh
viên phát triển toàn diện. Tất cả điều đó sẽ mang đến sự tiện lợi cũng như tính
chuyên nghiệp hơn cho sinh viên khi tất cả đã hội tụ đủ vào một sản phẩm.
1.3. Mục tiêu thực hiện
Xây dựng một ứng dụng di động chứa thông tin của các hoạt động, sự kiện,
tin tức được Đoàn Hội trường đại học tổ chức và nhập liệu. Ứng dụng cũng có khả
năng gửi thông báo nhắc nhở cho người dùng nếu ban tổ chức đồng ý. Các chức
năng chính của ứng dụng di động bao gồm:

• Đăng nhập/đăng ký.
• Xem tin tức/sự kiện.
• Bình luận.
• Đánh giá.
• Cài đặt nhắc nhở (tạo sự kiện trong lịch của thiết bị) cho sự kiện.
• Đăng ký/huỷ đăng ký sự kiện.
• Chức năng sinh viên năm tốt
o Đạo đức tốt
o Học tập tốt
o Thể lực tốt
o Tình nguyện tốt
o Ngoại giao tốt


3

CHƯƠNG 2. TỔNG QUAN VẤN ĐỀ
2.1 Giới thiệu tổng quát về cổng thông tin
Cổng thông tin trường đại học là nơi tổng hợp những tin tức, bài báo, sự kiện
liên quan đến các hoạt động của sinh viên tại trường Đại học, giúp các sinh viên có
thể dễ dàng theo dõi và không bỏ lỡ những sự kiện quan trọng thông qua phiên bản
web và ứng dụng trên Android. Thêm vào đó, ứng dụng cũng hiển thị thông tin về
các hoạt động xã hội, giúp cho sinh viên (nhất là những sinh viên năm cuối) có thể
tham gia để lấy ngày công tác xã hội, phục vụ cho điều kiện cần khi đảm nhận luận
văn hoặc tốt nghiệp.
Hệ thống sở hữu hầu hết chức năng của một cổng thông tin điện tử theo quy
định của chính phủ, bao gồm:
• Khả năng phân loại nội dung: Chia nội dung theo từng danh mục
(category).
• Khả năng quản lý nội dung: Quản trị của trang có thể dễ dàng đăng hoặc

chỉnh sửa nội dung bài đăng thông qua giao diện đơn giản đã được lập trình
sẵn mà không yêu cầu hiểu biết về kỹ thuật. Thêm vào đó chức năng phân
quyền, chỉ những tài khoản nào được cấp quyền sử dụng chức năng thì mới
có thể truy nhập được các văn bản mà trang cấp phép.
• Đăng nhập một lần (single sign-on): cho phép người dùng chỉ cần đăng
nhập một lần, sau đó truy cập và sử dụng tất cả các dịch vụ/nghiệp vụ đã
được cấp quyền trên cổng thông tin.
• Quản trị cổng thông tin: Quản trị viên cấp cao có thể điều chỉnh những bài
viết nào có thể hiển thị trên cổng thông tin. Đồng thời cho phép định nghĩa
các nhóm người dùng, quyền truy cập và sử dụng thông tin khác nhau.
• Quản lý người dùng: Cho phép quản trị người dùng để phân quyền sử dụng
theo vai trò của họ và xuyên suốt toàn bộ hệ thống.
• Hỗ trợ nhiều môi trường hiển thị thông tin: Với thiết kế đáp ứng
(responsive), trang web dễ dàng hiển thị đầy đủ thông tin trên hầu hết kích cỡ
màn hình. Bên cạnh đó, người dùng chắc chắn có thể truy cập vào cổng
thông tin với điều kiện trên máy chỉ cần có trình duyệt, không phụ thuộc vào
hệ điều hành của máy.


4
• Khả năng cộng tác: Người dùng có thể liên lạc với quản trị qua hệ thống
Thư phản hồi kèm theo email người gửi.
2.2 Hệ thống cũ

Hình 1. Giao diện trang tuoitrebachkhoa (cũ) 1

Hình 2. Giao diện trang tuoitrebachkhoa (cũ) 2


5


Hình 3. Giao diện trang tuoitrebachkhoa (cũ) 3
Qua đó, chúng ta có thể thấy, tuy phiên bản trước đã đầy đủ chức năng
nhưng khả năng giao tiếp của trang đối với người dùng vẫn còn gặp nhiều khó khăn.
Bên cạnh đó, với xu thế hiện tại, Flat design và Material design đang được hầu hết
các trang mạng tin dùng, vì nó mang lại thiết kế đơn giản nhưng vẫn đảm bảo được
lượng thông tin mà người dùng cần đến, đồng thời nó cũng đem lại nguồn cảm hứng
đối với những người thích cái đẹp. Quan trọng hơn hết đó là khả năng đáp ứng
(responsive) của phiên bản trước hoàn toàn không có, chiều dài và rộng được cố
định sẵn, gây sự không thoải mái cho người dùng di động và các thiết bị có màn
hình nhỏ, hơn nữa, responsive cũng là một tác nhân ảnh hưởng lớn đối với việc
quyết định xem trang có được ưu tiên trong bộ máy tìm kiếm của Google hay
không.
2.3 Giới thiệu về cách sản phẩm tiếp cận với người dùng
Trang web trường đại học thường đã có một lượng lớn người dùng từng sử
dụng qua. Chính vì vậy, việc trang mạng tiếp cận với người dùng đơn giản hơn so
với việc bắt đầu lại từ đầu. Chỉ cần thay đổi IP của tên miền, sao lưu toàn bộ dữ liệu
(data) từ hệ thống cũ sang hệ thống mới, tận dụng các buổi sinh hoạt Đoàn Hội để
thông báo cho người dùng biết về sự thay đổi này thì sẽ dễ dàng đưa phiên bản này


6
tiếp cận với người dùng nhanh nhất có thể, đồng thời thông qua sự kiện đó, có khả
năng lôi kéo được thêm những người dùng cũ đã từng dùng qua sản phẩm nhưng
không được ưng ý nay có thể quay lại với phiên bản mới này.
2.4 Hệ quản trị cơ sở dữ liệu NoSQL
2.4.1 Tổng quan về NoSQL
NoSQL [1] là một khái niệm chỉ về một lớp các hệ cơ sở dữ liệu không sử
dụng mô hình quan hệ. (RDBMS). RDBMS vốn tồn tại khá nhiều nhược điểm như
có hiệu năng không tốt nếu kết nối dữ liệu nhiều bảng lại hay khi dữ liệu trong một

bảng là rất lớn.
NoSQL là một thuật ngữ dùng để chỉ một tập hợp dữ liệu rất lớn và rất phức tạp
trong các tổ chức và quy mô, đến nỗi những công cụ, ứng dụng xử lý dữ liệu truyền
thống không thể nào đảm đương được. Các đặc điểm dữ liệu lớn được thể hiện ở
các mặt sau [1]:

Hình 4. Đặc điểm dữ liệu lớn - 5Vs

2.4.1.1 Khối lượng data (Volume)
Hiện tại, chúng ta đang thấy rằng việc lưu trữ dữ liệu (khối lượng) đang tăng
trưởng theo cấp số nhân chứ không chỉ đơn thuần là dữ liệu văn bản. Chúng ta có
thể tìm thấy dữ liệu trong các định dạng video, âm nhạc, hình ảnh lớn trên các kênh
truyền thông xã hội. Khối lượng dữ liệu ngày nay có thể lên đến hàng terabyte và
petabyte. Khối lượng dữ liệu ngày càng phát triển thì các ứng dụng và kiến trúc xây
dựng để hỗ trợ dữ liệu cần phải được đánh giá lại khá thường xuyên. Khối lượng
lớn dữ liệu thực sự đại diện cho Big data.


7
2.4.1.2 Tốc độ xử lý data (Velocity)
Sự tăng trưởng dữ liệu và các phương tiện truyền thông xã hội đã thay đổi
cách chúng ta nhìn nhận dữ liệu. Có một thời gian khi chúng ta từng tin rằng dữ liệu
của ngày hôm qua là mới đây. Vấn đề này với các tờ báo thì vẫn còn hợp lý. Tuy
nhiên, các kênh tin tức và radio đã thay đổi rất nhanh (tốc độ) cách chúng ta nhận
được tin tức. Ngày nay, mọi người trả lời trên kênh truyền thông xã hội để cập nhật
những diễn biến mới nhất. Trên phương tiện truyền thông xã hội đôi khi các thông
báo cách đó vài giây (tweet, status…) đã là cũ và không được người dùng quan tâm.
Họ thường loại bỏ các tin nhắn cũ và chỉ chú ý đến các cập nhật gần nhất. Sự
chuyển động của dữ liệu bây giờ hầu như là thời gian thực (real time) và tốc độ cập
nhật thông tin đã giảm xuống đơn vị hàng mili giây. Vận tốc dữ liệu cao đại diện

cho Big data.
2.4.1.3 Đa dạng data (Variety)
Dữ liệu có thể được lưu trữ trong nhiều định dạng khác nhau. Ví dụ như: cơ
sở dữ liệu, excel, csv, ms access hoặc thậm chí là tập tin văn bản (text). Đôi khi dữ
liệu không ở dạng truyền thống như video, sms, pdf… Điều cần làm của các tổ chức
là sắp xếp và làm cho dữ liệu có ý nghĩa. Sẽ dễ dàng để làm điều này nếu dữ liệu có
chung một định dạng, nhưng thường là không. Thực tế dữ liệu thuộc nhiều định
dạng và đó là thách thức của chúng ta. Sự đa dạng của dữ liệu đại diện cho Big data.
2.4.1.4 Tính xác thực (Veracity)
Tính xác thực đề cập đến sự độ tin cậy của dữ liệu. Chất lượng và độ chính
xác của dữ liệu lớn ít được kiểm soát. Một thông điệp Twitter có thể có chứa chữ
viết tắt, từ ngữ địa phương, sai chính tả…
2.4.1.5 Giá trị (Value)
Giá trị mà chúng ta khai thác được từ dữ liệu lớn. Chúng ta sẽ không thuyết
phục được khách hàng khi không thể chứng minh được giá trị mà họ có được khi sử
dụng big data cho hệ quản trị cơ sở dữ liệu truyền thống. Trong lĩnh vực kinh doanh
trò chơi trực tuyến, NoSQL giúp nhà quản lý trò chơi biết đối tượng khách hàng tạo
ra lợi nhuận cho trò chơi, sự kiện tạo thu hút người chơi tham gia hay nạp tiền.
2.4.2 Apache Hadoop
Apache Hadoop [7][8] là một nền tảng mềm mã nguồn mở, miễn phí, dựa
trên Java, cung cấp một nền tảng phân tán mạnh để lưu trữ và quản lý Big data. Bản


8
quyền Apache V2 license. Nó chạy ứng dụng trên các cụm phần cứng lớn và xử lý
hàng ngàn terabytes dữ liệu trên hàng ngàn nodes. Hadoop lấy cảm hứng từ Google
MapReduce và Google File System (GFS). Điểm mạnh của nền tảng Hadoop là
cung cấp độ tin cậy và tính sẵn sàng cao.
2.4.2.1 Thành phần chính của nền tảng Hadoop
• Hadoop MapReduce

Hadoop MapReduce là cách chia một vấn đề dữ liệu lớn hơn thành các đoạn
nhỏ hơn và phân tán nó trên nhiều máy chủ. Mỗi máy chủ có một tập tài nguyên
riêng và máy chủ xử lý dữ liệu trên cục bộ. Khi máy chủ xử lý xong dữ liệu, chúng
sẽ gởi trở về máy chủ chính.
• Hadoop Distributed File System (HDFS)
Hadoop Distributed File System (HDFS) là hệ thống tập tin ảo. Có một sự
khác biệt lớn giữa các hệ thống tập tin khác và Hadoop. Khi chúng ta di chuyển một
tập tin trên HDFS, nó tự động chia thành nhiều mảnh nhỏ. Các đoạn nhỏ của tập tin
sẽ được nhân rộng và lưu trữ trên nhiều máy chủ khác (thường là ba) để tăng sức
chịu lỗi và tính sẵn sàng cao.
2.4.2.2 Kiến trúc cụm Hadoop nhiều node

Hình 5. Kiến trúc cụm Hadoop nhiều node
Một cụm Hadoop nhỏ gồm một master node và nhiều worker / slave node.
Như đã nói, toàn bộ cụm chứa 2 lớp. Một lớp MapReduce Layer và lớp kia là
HDFS Layer. Mỗi lớp có các thành phần liên quan riêng. Master node gồm
JobTracker, TaskTracker, NameNode và DataNode. Slave/worker node gồm
DataNode, và TaskTracker. Cũng có thể slave / worker node chỉ là dữ liệu hoặc
node để tính toán.


9
2.4.2.3 Các điểm thuận lợi khi dùng Hadooop
• Robus and Scalable: Có thể thêm node mới và thay đổi chúng
khi cần.
• Affordable and Cost Effective: Không cần phần cứng đặc biệt
để chạy Hadoop.
• Adaptive and Flexible: Hadoop được xây dựng với tiêu chí xử lý
dữ liệu có cấu trúc và không cấu trúc.
• Highly Available and Fault Tolerant: Khi một node lỗi, nền

tảng Hadoop tự động chuyển sang node khác.
2.4.3 MapReduce
MapReduce được thiết kế bởi Google như một mô hình lập trình xử lý tập dữ
liệu lớn song song, thuật toán được phân tán trên một cụm [9]. Mặc dù, MapReduce
ban đầu là công nghệ độc quyền của Google, nó đã trở thành thuật ngữ tổng quát
hóa trong thời gian gần đây.
MapReduce gồm các thủ tục: một Map() và một Reduce(). Thủ tục Map() lọc
(filter) và phân loại (sort) trên dữ liệu trong khi thủ tục Reduce() thực hiện tổng hợp
dữ liệu. Mô hình này dựa trên các khái niệm biến đổi của bản đồ và reduce các chức
năng trong lập trình hướng chức năng. Thư viện thủ tục Map() và Reduce() được
viết bằng nhiều ngôn ngữ. Cài đặt miễn phí, phổ biến nhất của MapReduce là
Apache Hadoop.

Hình 6. Cách thức MapReduce hoạt động
2.4.3.1 Các thuận lợi của các thủ tục MapReduce
Nền tảng MapReduce thường gồm các máy chủ phân tán và nó chạy nhiều
tác vụ khác nhau song song. Có nhiều thành phần quản lý việc giao tiếp giữa các
nodes khác nhau của dữ liệu và cung cấp tính sẵn sàng cao và mức độ chịu lỗi.


10
Chương trình được viết theo chức năng MapReduce tự động được phân tán và thực
thi song song trên các máy chủ. Nền tảng MapReduce quan tâm cả chi tiết của phân
vùng dữ liệu và thực thi quá trình xử lý trên máy chủ phân tán lúc chạy. Trong khi
xử lý nếu có lỗi, nền tảng cung cấp tính sẵn sàng cao và các node khác thực hiện
thay thế nhiệm vụ của node bị lỗi.
Toàn bộ nền tảng MapReduce cung cấp nhiều hơn là chỉ các thủ tục Map()
và Reduce(); nó cũng cung cấp khả năng mở rộng và chịu lỗi. Cài đặt điển hình của
nền tảng MapReduce xử lý nhiều petabytes dữ liệu và hàng ngàn máy chủ.
2.4.3.2 Quá trình hoạt động của MapReduce

• Thủ tục Map()
Luôn có một master node trong hạ tầng để nhận đầu vào. Ngay sau master
node là các sub-inputs / sub-problems. Các sub-problems được phân phối đến các
worker nodes. Một worker node sau đó xử lý chúng. Một khi worker node hoàn
thành xử lý với sub-problem, nó trả kết quả trở về master node.
• Thủ tục Reduce()
Tất cả worker nodes trả kết quả của sub-problem đã gán cho chúng về master
node. Master node thu thập kết quả và tổng hợp thành kết quả của vấn đề lớn (big
problem) ban đầu đã được gán cho master node.
Nền tảng MapReduce thực hiện các thủ tục Map() và Reduce() ở trên song
song và độc lập nhau. Tất cả thủ tục Map() có thể chạy song song và khi mỗi
worker node hoàn thành tác vụ thì chúng gửi trở về master node. Thủ tục cụ thể này
có thể rất hiệu quả khi nó được thực hiện trên một số lượng rất lớn dữ liệu (Big
data).
• Nền tảng MapReduce có 5 bước khác nhau
o Chuẩn bị dữ liệu đầu vào cho Map().
o Thực thi mã Map() được cung cấp bởi người dùng.
o Trộn dữ liệu xuất của Map vào Reduce Processor.
o Thực thi mã Reduce() được cung cấp bởi người dùng.
o Tạo dữ liệu xuất cuối cùng.


11
• Đây là nguồn dữ liệu (dataflow) của nền tảng MapReduce
o Input Reader
o Map Function
o Partition Function
o Compare Function
o Reduce Function
o Output Writer

• MapReduce trong một câu đơn nhất
• MapReduce tương đương với SELECT và GROUP BY của một
cơ sở dữ liệu quan hệ cho một cơ sở dữ liệu rất lớn.
2.4.4 Kiến trúc HDFS
HDFS là viết tắt của Hadoop Distributed File System và nó là một hệ thống
lưu trữ chính được dùng bởi Hadoop [8]. Nó cung cấp truy cập hiệu suất cao đến dữ
liệu trên các cụm Hadoop. Nó thường được triển khai trên các phần cứng chi phí
thấp. Các máy chủ chi phí thấp này rất dễ xảy ra lỗi phần cứng. Vì lý do này mà
HDFS được xây dựng để có khả năng chịu lỗi cao. Tốc độ truyền dữ liệu giữa các
nodes trong HDFS là rất cao, dẫn đến giảm thiểu nguy cơ lỗi.
HDFS tạo các mảnh nhỏ hơn của dữ liệu lớn và phân tán nó trên các nodes
khác nhau. Nó cũng sao chép mỗi miếng dữ liệu nhỏ hơn nhiều lần trên nhiều nodes
khác nhau. Do đó khi bất kỳ node nào có dữ liệu lỗi, hệ thống tự động dùng dữ liệu
từ một node khác và tiếp tục xử lý. Đây là tính năng quan trọng của HDFS.
Kiến trúc của HDFS là master/slave. Một HDFS cluster luôn gồm một
NameNode. NameNode này là một master server và nó quản lý hệ thống tập tin
cũng như điều chỉnh truy cập đến các tập tin khác nhau. Bổ sung cho NameNode có
nhiều DataNodes. Luôn có một DataNode cho mỗi máy chủ dữ liệu. Trong HDFS,
một tập tin lớn được chia thành một hoặc nhiều khối và các khối này được lưu trong
một tập các DataNodes.
Tác vụ chính của NameNode là mở, đóng và đổi tên các tập tin, và thư mục
và điều chỉnh truy cập đến hệ thống tập tin, trong khi tác vụ chính của DataNode là
đọc và ghi vào hệ thống tập tin. DataNode cũng làm nhiệm vụ tạo, xóa, hoặc nhân
rộng dữ liệu dựa trên chỉ dẫn từ NameNode.


12
Trong thực tế, NameNode và DataNode là phần mềm được thiết kế để chạy trên
máy chủ, được viết bằng Java.


Hình 7. Kiến trúc HDFS
Chúng ta đã hiểu hoạt động của HDFS dựa trên sơ đồ. Ứng dụng client hoặc
HDFS client kết nối đến NameSpace cũng như DataNode. Client app truy xuất đến
DataNode được quy định bởi NameSpace Node. NameSpace Node cho phép Client
app kết nối đến DataNode bằng cách cho phép kết nối đến DataNode trực tiếp. Một
tập tin dữ liệu lớn được chia thành nhiều khối dữ liệu (giả sử các đoạn dữ liệu là A,
B, C, và D). Client app sau đó sẽ ghi các khối dữ liệu trực tiếp lên DataNode. Client
app không ghi trực tiếp lên tất cả các node. Nó chỉ ghi lên bất kỳ một trong những
node và NameNode sẽ quyết định các DataNode nào khác nó sẽ nhân rộng dữ liệu.
Trong ví dụ, Client app ghi trực tiếp lên DataNode một và ba. Tuy nhiên, các khối
dữ liệu được tự động nhân rộng đến các nodes khác. Tất cả thông tin như trong
DataNode mà khối dữ liệu được đặt được ghi trở về NameNode.
2.4.4.1 Tính sẵn sàng cao khi có thảm hoạ
Nhiều DataNode chứa cùng các khối dữ liệu trong trường hợp bất kỳ
DataNode nào gặp thảm họa, toàn bộ xử lý sẽ vẫn tiếp tục, DataNode khác sẽ thay
thế vai trò để xử lý khối dữ liệu cụ thể của node bị lỗi. Hệ thống này cung cấp tính
chịu lỗi rất cao để đối phó với thảm họa và cung cấp tính sẵn sàng cao.
Chỉ có một NameNode duy nhất trong kiến trúc. Nếu node này gặp lỗi thì
toàn bộ ứng dụng Hadoop sẽ ngừng vì node này là nơi lưu tất cả siêu dữ liệu. Node
này cực kỳ quan trọng, nó thường được nhân rộng sang các cụm khác. Mặc dù node
được nhân rộng này không hoạt động trong kiến trúc, nó chứa tất cả những dữ liệu
cần thiết để thực hiện tác vụ của NameNode trong trường hợp NameNode bị lỗi.


13
Toàn bộ kiến trúc Hadoop được xây dựng để hoạt động thông suốt ngay cả
có lỗi node hoặc sự cố phần cứng. Nó được xây dựng trên khái niệm đơn giản rằng
dữ liệu là quá lớn và không thể xử lý trên một phần cứng duy nhất. Chúng ta cần
nhiều phần cứng (giá rẽ) để quản lý dữ liệu lớn và phần cứng gặp lỗi là việc hoàn
toàn dễ xảy ra. Để giảm tác động của lỗi phần cứng, kiến trúc Hadoop được xây

dựng để khắc phục những hạn chế của lỗi phần cứng.
2.4.4.2 Mô hình Hadoop trên có một số vấn đề
• Vấn đề mở rộng (scalability).
• Vấn đề tính sẵn sàng (availibility).
• Vấn đề về sử dụng tài nguyên.
Do chỉ có một máy làm nhiệm vụ quản lý tài nguyên, đồng thời quản lý tình
trạng thực hiện Job nên năng lực tính toán của cluster bị phụ thuộc vào năng lực của
máy tính chạy JobTracker. Kiến trúc này có cluster tối đa là khoảng 5000 máy.
Tính sẵn sàng của hệ thống cũng không cao khi chỉ có một máy tính vừa lo
chạy job vừa lo lập lịch. Khi JobTracker trở nên bận rộn, Job queue có thể bị kill
khiến cho các job đang thực thi lỗi và không thành công.
Tài nguyên tính toán trong mô hình này là slot. Số lượng Task chạy song
song trên một máy là số lượng cores trên máy đó vì vậy lúc khởi động cluster,
người quản trị phải tự tay cài đặt số slot dành cho mapper và reducer. Tùy vào cách
sử dụng cluster mà cách cấu hình này nhiều khi không đạt hiệu quả cao. Việc điều
chỉnh các slot này bằng tay đòi hỏi kinh nghiệm và nhiều khi không đáp ứng được
nhu cầu ngay trước mắt của job. Ngoài ra các tài nguyên như DiskIO hay GPUs…
không được sử dụng.
Cuối cùng kiến trúc này hạn chế ứng dụng chạy trên cluster.
2.4.5 Hệ quản trị cơ sở dữ liệu lớn NoSQL
Có bốn dạng hệ quản trị cơ sở dữ liệu lớn
2.4.5.1 Dạng dữ liệu lớn Key-Value
Key-Value là một dạng đơn giản của cơ sở dữ liệu NoSQL. Trong đó, key là
tên trường, một thuộc tính hoặc một định danh. Nội dung của trường là giá trị của
nó. Chúng không có lược đồ (schema) vì thế rất linh động. Các điểm bất lợi của các
Key Value là chúng không theo các thuộc tính ACID (Atomicity, Consistency,


×