1. Trang chủ
  2. » Luận Văn - Báo Cáo

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ĩ

74 181 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 74
Dung lượng 9,9 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

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

Trang 2

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

Trang 3

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

Trang 4

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

Trang 5

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

Trang 6

MỤC LỤC

LỜI CẢM ƠN I

LỜI CAM ĐOAN II

CHƯƠNG 1 MỞ ĐẦU 1

1.1 G IỚI THIỆU ĐỀ TÀI 1

1.2 L Ý DO CHỌN ĐỀ TÀI 1

1.3 M ỤC TIÊU THỰC HIỆN 2

CHƯƠNG 2 TỔNG QUAN VẤN ĐỀ 3

2.1 G IỚI THIỆU TỔNG QUÁT VỀ CỔNG THÔNG TIN 3

2.2 H Ệ THỐNG CŨ 4

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

2.3 G IỚI THIỆU VỀ CÁCH SẢN PHẨM TIẾP CẬN VỚI NGƯỜI DÙNG 5

2.4 H Ệ QUẢN TRỊ CƠ SỞ DỮ LIỆU N O SQL 6

2.4.1 Tổng quan về NoSQL 6

HÌNH 4 ĐẶC ĐIỂM DỮ LIỆU LỚN - 5VS 6

2.4.1.1 Khối lượng data (Volume) 6

2.4.1.2 Tốc độ xử lý data (Velocity) 7

2.4.1.3 Đa dạng data (Variety) 7

2.4.1.4 Tính xác thực (Veracity) 7

2.4.1.5 Giá trị (Value) 7

2.4.2 Apache Hadoop 7

2.4.2.1 Thành phần chính của nền tảng Hadoop 8

2.4.2.2 Kiến trúc cụm Hadoop nhiều node 8

HÌNH 5 KIẾN TRÚC CỤM HADOOP NHIỀU NODE 8

2.4.2.3 Các điểm thuận lợi khi dùng Hadooop 9

2.4.3 MapReduce 9

HÌNH 6 CÁCH THỨC MAPREDUCE HOẠT ĐỘNG 9

2.4.3.1 Các thuận lợi của các thủ tục MapReduce 9

2.4.3.2 Quá trình hoạt động của MapReduce 10

2.4.4 Kiến trúc HDFS 11

HÌNH 7 KIẾN TRÚC HDFS 12

Trang 7

2.4.4.2 Mô hình Hadoop trên có một số vấn đề 13

2.4.5 Hệ quản trị cơ sở dữ liệu lớn NoSQL 13

2.4.5.1 Dạng dữ liệu lớn Key-Value 13

HÌNH 8 DẠNG DỮ LIỆU LỚN KEY – VALUE 14

2.4.5.2 Dạng dữ liệu lớn hướng tài liệu (Document-based) 14

HÌNH 9 DẠNG DỮ LIỆU LỚN HƯỚNG TÀI LIỆU 14

2.4.5.3 Dạng dữ liệu lớn hướng cột (Column-based) 14

HÌNH 10 DẠNG DỮ LIỆU LỚN HƯỚNG CỘT 15

2.4.5.4 Dạng dữ liệu lớn hướng đồ thị (Graph Database) 15

HÌNH 11 DẠNG DỮ LIỆU LỚN HƯỚNG ĐỒ THỊ 15

2.4.6 Hệ quản trị cơ sở dữ liệu MongoDB 15

HÌNH 13 PHÂN TÁN DỮ LIỆU TRONG MONGODB 17

2.4.7 Cấu trúc dữ liệu MongoDB 18

HÌNH 14 CẤU TRÚC DỮ LIỆU MONGODB 18

2.4.7.1 Ưu điểm của MongoDB 18

2.4.7.2 Khi nào sử dụng MongoDB 19

2.4.7.3 Mô hình dữ liệu MongoDB 19

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

2.4.7.4 Kiểu dữ liệu trong MongoDB 20

2.4.7.5 Cơ chế hoạt động của MongoDB 21

HÌNH 17 CƠ CHẾ HOẠT ĐỘNG MONGODB 21

2.5 T Ổ CHỨC TƯƠNG TÁC PHÍA NGƯỜI DÙNG A NGULAR JS ( CLIENT - SIDE ) 22

2.5.1 Giới thiệu về AngularJs 22

2.5.2 Dữ liệu hai chiều (Two-way data binding) 22

2.5.3 Các đặc tính của AngularJs 23

2.5.4 Các tính năng cốt lõi của AngularJs 23

HÌNH 19 CÁC THÀNH PHẦN CỦA ANGULARJS 24

2.5.5 Ưu điểm của AngularJs 24

2.5.6 Nhược điểm của AngularJS 24

2.6 T Ổ CHỨC TƯƠNG TÁC PHÍA MÁY CHỦ ( SERVER - SIDE ) 24

2.6.1 NodeJs 24

2.6.1.1 Giới thiệu về NodeJs 24

Trang 8

2.6.1.3 Nhược điểm của NodeJs 26

HÌNH 21 MỨC ĐỘ RỦI RO KHI SỬ DỤNG NODEJS 27

2.6.2ExpressJs 27

2.7 C ÂN NHẮC GIỮA MEAN VÀ LAMP 27

2.7.1 Giới thiệu về LAMP 27

HÌNH 22 CÁC THÀNH PHẦN CẤU THÀNH LAMP 28

_ WAMP 28

_ WIMP 28

_ LAPP 28

_ MAMP 28

_ XAMP 28

2.7.2 Giới thiệu về MEAN 29

HÌNH 23 CÁC THÀNH PHẦN CẤU THÀNH MEAN 29

2.7.3 So sánh LAMP và MEAN 30

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

2.7.4 S Ơ ĐỒ TỔ CHỨC DỮ LIỆU 34

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

CHƯƠNG 3 HIỆN THỰC 37

3.1 C ÁC CÔNG CỤ SỬ DỤNG TRONG XÂY DỰNG SẢN PHẨM 37

3.1.1 Web 37

3.1.2 Android 37

3.2 X ÂY DỰNG SẢN PHẨM 37

3.2.1 Xây dựng giao diện 37

3.2.1.1 Web 37

3.2.1.2 Android 37

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

Trang 9

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

3.2.2 Quản lý source code 52

3.2.2.1 Centralize Version Control System 52

HÌNH 46 CENTRALIZE VERSION CONTROL SYSTEM 52

3.2.2.2 Distributed Version Control System 53

HÌNH 47 DISTRIBUTED VERSION CONTROL SYSTEM 53

3.2.2.3 Bitbucket và SourceTree 53

HÌNH 48 BITBUCKET 54

HÌNH 49 SOURCETREE 54

3.2.3 Kiểm thử 54

3.2.3.1 Xem sự kiện chi tiết và bình luận 54

HÌNH 50 CÁC BƯỚC KIỂM THỬ XEM SỰ KIỆN VÀ BÌNH LUẬN 55

3.2.3.2 Xem bài báo 55

HÌNH 51 CÁC BƯỚC KIỂM THỬ XEM NỘI DUNG BÀI BÁO 55

3.2.3.3 Xem thích và hủy thích một bài báo 56

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

3.2.3.4 Bình luận về một 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

Trang 10

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

3.2.3.6 Đăng ký năng lực để 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

3.2.3.7 Phản hồi 59

HÌNH 56 CÁC BƯỚC KIỂM THỬ CHỨC NĂNG PHẢN HỒI 59

CHƯƠNG 4 KẾT LUẬN 60

4.1 H OÀN THÀNH 60

4.2 H ẠN CHẾ 61

4.3 H ƯỚNG PHÁT TRIỂN 61

TÀI LIỆU THAM KHẢO 62

Trang 11

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

Trang 12

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

Trang 13

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

Trang 14

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

Trang 15

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

Trang 16

• 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

Trang 17

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

Trang 18

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

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

Trang 19

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

Trang 20

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

Trang 21

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

Trang 22

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

Trang 23

• Đây là nguồn dữ liệu (dataflow) của nền tảng MapReduce

• 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

Trang 24

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

Trang 25

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 đề

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

Trang 26

Isolation, Durability) Ngoài ra, nó sẽ yêu cầu kiến trúc dữ liệu để lập kế hoạch cho

vị trí dữ liệu Đổi lại, chúng có khả năng tái tạo cũng như tính sẵn sàng cao

Hình 8 Dạng dữ liệu lớn Key – Value Trong dữ liệu lớn dạng Key-Value thì dữ liệu được lưu trữ dưới dạng chuỗi Riak là một hệ quản trị cơ sở dữ liệu NoSQL dạng Key-Value được sử dụng phổ biến nhất Nó cung cấp khả năng mở rộng (scalability) và hiệu suất (performance) cho big data với dung lượng lớn (volume) và tốc độ (velocity) Key values là lựa chọn tốt cho social media, communities, caching layer cho kết nối đến các cơ sở dữ liệu khác Tóm lại, khi chúng ta yêu cầu tính linh hoạt của lưu trữ dữ liệu giúp khả năng mở rộng thì Key-Value là lựa chọn tốt

Redis, Dynomite, Project Voldemort là những hệ cơ sở dữ liệu thuộc loại này

2.4.5.2 Dạng dữ liệu lớn hướng tài liệu (Document-based)

Dữ liệu dạng bán cấu trúc (semi-structured) được lưu trữ và tổ chức dưới dạng một tập hợp các tài liệu (document) Các tài liệu này linh hoạt, có thể chứa một tập nhiều trường bên trong

Hình 9 Dạng dữ liệu lớn hướng tài liệu MongoDB là một hệ cơ sở dữ liệu mã nguồn mở được phát triển và hỗ trợ bở 10gen và được hàng triệu người sử dụng Thay vì lưu trữ dữ liệu dưới dạng bảng và dòng như trong cơ sở dữ liệu quan hệ truyền thống, MongoDB lưu dữ liệu dưới dạng JSON

2.4.5.3 Dạng dữ liệu lớn hướng cột (Column-based)

Cơ sở dữ liệu được tổ chức dưới dạng các bảng, gần giống với mô hình cơ sở

dữ liệu quan hệ Tuy nhiên, chúng lưu dữ liệu theo cột chứ không phải theo dòng

Trang 27

[10] Do đó, chúng phù hợp với các phần mềm quản lý kho dữ liệu vì khả năng tiềm kiếm nhanh, phân tán dữ liệu tốt

Hình 10 Dạng dữ liệu lớn hướng cột Các sản phẩm big data thuộc dạng này bao gồm Apache Hbase, Apache Cassandra, Hypertable

2.4.5.4 Dạng dữ liệu lớn hướng đồ thị (Graph Database)

Cơ sở dữ liệu này áp dụng lý thuyết đồ thị trong khoa học máy tính để lưu trữ và truy xuất dữ liệu Graph database [11] lưu trữ dữ liệu trên các đỉnh và cạnh của đồ thị theo dạng Key-Value Chúng thật sự hữu hiệu trong các ứng dụng liên quan đến không gian địa lý Dưới đây là ví dụ minh họa mạng xã hội sử dụng dữ liệu dạng đồ thị

Hình 11 Dạng dữ liệu lớn hướng đồ thị Trong cơ sở dữ liệu truyền thống, khi chúng ta muốn biết ai là bạn của mình thì hệ thống phải duyệt hết n dòng của bảng mới cho kết quả Graph database dựa vào quan hệ (relationship) giữa các node nên chỉ duyệt đúng số bạn của mình mà thôi

Một số sản phẩm tiêu biểu như Neo4j, Infinite Graph, InfoGrid, HyperGraphDB, Dex, GraphBase…

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

Sau những nghiên cứu về hệ quản trị cơ sở dữ liệu NoSQL, chúng ta đi vào tìm hiểu hệ quản trị cơ sở dữ liệu phổ biến MongoDB

Trang 28

MongoDB là một hệ thống CSDL mã nguồn mở được phát triển và hỗ trợ 10gen và lưu trữ dữ liệu dưới dạng JSON Các tính năng của MongoDB:

• MongoDB không sử dụng cấu trúc cơ sở dữ liệu quan hệ dựa trên các bảng như truyền thống mà sử dụng một cấu trúc dạng tài liệu giống với JSON với

mô hình động (Dynamic Schemas)

• Có khả năng truy vấn đa dạng và hỗ trợ đánh chỉ mục đầy đủ, linh hoạt Cấu trúc lưu trữ CSDL giống JSON Cấu trúc đó trong MongoDB được gọi là BSON (Binary JSON) Điều này khiến việc xử lý một kiểu dữ liệu nào đó dễ dàng hơn và nhanh hơn Khi truy cập chỉ cần key của trường So với kiểu dữ liệu dựa trên cấu trúc bảng như MySQL thì linh động hơn rất nhiều

• Sharding là một phương pháp lưu dữ liệu trên nhiều máy chủ Sharding là cơ chế tự động của MongoDB dùng để chia tách một dữ liệu kích thước lớn cho rất nhiều server (thường gọi là cluster) MongoDB sử dụng sharding để lưu một lượng rất lớn dữ liệu và các phương pháp truy cập hiệu suất cao Phân tán dữ liệu đến nhiều server (shards) Mỗi shard là một cơ sở dữ liệu độc lập, tập trung, tất cả các shard tạo thành cơ sở dữ liệu luận lý

Sharding được thiết kế để phục vụ 3 mục điêu cơ bản sau:

• Làm cho cluster “trong suốt” với người dùng: Để hoàn thành nhiệm vụ này, MongoDB sử dụng một quá trình routing đặc biết gọi là Mongos Mongos đứng trước cluster, đóng vai trò điều phối việc truy cập đến shard nào, trả dữ liệu từ shard nào ra Nó chuyển tiếp các request tới các server khác có tài nguyên hoặc đến cluster đằng sau nó Sau đó lắp ráp lại và gửi các response lại về cho các client Do đó, các client không cần biết rằng chúng đang giao tiếp với cluster nào thật sự mà chỉ biết rằng mình đang kết nối tới một server bình thường Đây gọi là tính “trong suốt” với người sử dụng

• Làm cho cluster luôn sẵn sàng để đọc hoặc ghi: Một cluster còn tồn tại phải đảm bảo được rằng nó luôn sẵn sàng Mỗi phần con trong cluster sẽ có ít nhất một vài tiến trình phục vụ dự bị trên máy khác

• Làm cho cluster phát triển “tự nhiên”: Bất cứ khi nào người dùng cần thêm dung lượng, họ có thể thêm một cách dễ dàng Mỗi cluster khi được quản lý lại “thể hiện” như một node riêng lẻ và dễ dàng cấu hình

Trang 29

Hình 12 Phân tán dữ liệu trong MongoDB Sharding giải quyết những vấn về trong mở rộng quy mô và hỗ trợ thông lượng cao, dữ liệu lớn Nó giúp giảm số lượng các phép toán trên mỗi shard và giảm

số lương dữ liệu lưu trữ trên mỗi server

• Khả năng cân bằng tải (balancing): Nếu có nhiều shard đang sẵn sàng và có chứa thêm dữ liệu, MongoDB sẽ tiến hành chuyển dữ liệu từ các shard khác sang để cân bằng tải Cách thức tiến hành là di chuyển các chunk từ shard này sang shard khác một cách tự động Khả năng cân bằng tải cũng có thể bị tắt hoặc bật nếu người quản trị muốn cân bằng tải không chạy mặc định

• Dễ dàng tạo ra bản sao (replication) nhằm có được khả năng sẵn sàng cao

• Tìm kiếm chuỗi ký tự (text search): Bắt đầu từ phiên bản 2.4, MongoDB bắt đầu hỗ trợ các Text Index để tìm kiếm bên trong nội dung chuỗi Text Search

sử dụng kỹ thuật Stemming để tìm kiếm các từ xác định trong các trường chuỗi bằng việc xóa các Stemming Word như a, an, the,… Hiện tại, MongoDB hỗ trợ khoảng 15 ngôn ngữ

• Khả năng bảo mật cao

Trang 30

2.4.7 Cấu trúc dữ liệu MongoDB

Hình 13 Cấu trúc dữ liệu MongoDB

• Database là một ô chứa dữ liệu ở mức vật lý (physical) Mỗi database sẽ có nhiều collection và được thiết lập lưu trữ ở một nơi trong máy chủ máy tính Một máy chủ MongoDB thường có thể tạo nhiều cơ sở dữ liệu

• Collection trong MongoDB là nhóm các tài liệu (document) Nó tương đương với một bảng (table) trong CSDL thông thường nên mỗi collection sẽ thuộc về một database duy nhất Tuy nhiên nó có một sực khác biệt đó là nó không có ràng buộc Relationship như các hệ quản trị CSDL khác nên việc truy xuất rất nhanh Chính vì thế mỗi collection có thể chứa nhiều thể loại khác nhau không giống như bảng trong hệ quản trị MySQL là các trường cố định

• Document trong MongoDB có cấu trúc tương tự như kiểu dữ liệu JSON Nghĩa là sẽ có các cặp <khóa> : <giá trị> nên nó có tính năng động rất lớn Document ta có thể hiểu nó giống như các record dữ liệu trong MySQL Tuy nhiên nó có sự khác biệt là các cặp <khóa> : <giá trị> có thể không giống nhau ở mỗi document

2.4.7.1 Ưu điểm của MongoDB

• Dễ học, có một số nét khá giống với hệ cơ sở dữ liệu quan hệ – quản lý bằng giao diện dòng lệnh (command line) hoặc bằng giao diện đồi họa (GUI) như RockMongo hoặc phpMoAdmin

• Linh động, không cần phải định nghĩa cấu trúc dữ liệu trước khi tiến hành lưu trữ nó, rất tốt khi ta cần làm việc với các dạng dữ liệu không có cấu trúc

Trang 31

• Khả năng mở rộng tốt (distributed horizontally), khả năng cân bằng tải cao, tích hợp các công nghệ quản lý dữ liệu vẫn tốt khi kích thước và thông lượng trao đổi dữ liệu tăng

• Tính nhân bản (replication) và tính khả dụng cao

• Các truy vấn đa dạng

• Lập chỉ mục trên bất kỳ thuộc tính nào

• Miễn phí

2.4.7.2 Khi nào sử dụng MongoDB

• Nếu website của có tính chất INSERT cao, bởi vì mặc định MongoDB có sẵn

cơ chế ghi với tốc độ cao và an toàn

• Website ở dạng thời gian thực nhiều, nhiều người thao tác với ứng dung Nếu trong quá trình tải dữ liệu bị lỗi tại một điểm nào đó thì nó sẽ bỏ qua phần đó nên sẽ an toàn

• Khi website có nhiều dữ liệu quá Giả sử website có đến 10 triệu records thì khó xử lý với MySQL Vì MongoDB có khả năng tìm kiếm nhanh thông tin liên quan nên đây là trường hợp cần dùng nó

• Cần một hệ quản trị cơ sở dữ liệu dễ dàng cài đặt

2.4.7.3 Mô hình dữ liệu MongoDB

Hệ quản trị cơ sở dữ liệu MongoDB là một mô hình dữ liệu linh hoạt Không giống như cơ sở dữ liệu SQL, phải xác định và triển khai sơ đồ của một bảng trước khi chèn dữ liệu Collection trong MongoDB rất linh hoạt, không nhất thiết phải cho biết những thuộc tính có trong Collection, khi nào cần thì bổ sung sau vẫn được Sự linh hoạt này tạo điều kiện cho việc hướng tới lưu trữ thực thể hay một đối tượng Mỗi Document phù hợp với trường dữ liệu của Collection chứa nó, ngay cả khi thay đổi gần như toàn bộ dữ liệu Tuy nhiên, trong thực tế, các Document trong một Collection chung một cấu trúc

Các khoá quyết định trong mô hình thiết kế dữ liệu với ứng dụng MongoDB giải quyết xung quanh cấu trúc document và mối quan hệ ứng dụng giữa dữ liệu Có hai công cụ tượng trưng cho mối quan hệ ứng dụng: tham chiếu và nhúng document

Trang 32

• Tham chiếu

Lưu trữ tham chiếu giữa mối quan hệ dữ liệu gồm các liên kết hoặc tham chiếu từ một document tới cái khác Các ứng dụng có thể giải quyết các tham chiếu

để việc truy cập dũ liệu có liên quan

Hình 14 Mô hình dữ liệu tham chiếu

• Nhúng document

Thu thập mối quan hệ giữa dữ liệu nhúng document bằng cách lưu trữ dữ liệu có liên quan trong một cấu trúc document đơn MongoDB có thể nhúng cấu trúc document trong field hoặc array trong một document Mô hình dữ liệu demormalize cho phép các ứng dụng được truy xuất hoặc thao tác dữ liệu có liên quan trong quá trình hoạt động cơ sở dữ liệu

Hình 15 Mô hình dữ liệu nhúng

2.4.7.4 Kiểu dữ liệu trong MongoDB

• Chuỗi: Đây là kiểu dữ liệu được sử dụng phổ biến nhất để lưu giữ dữ liệu

Chuỗi trong MongoDB phải là UTF-8 hợp lệ

• Số nguyên: Kiểu dữ liệu này được sử dụng để lưu một giá trị số Số nguyên

có thể là 32 bit hoặc 64 bit phụ thuộc vào Server

• Boolean: Kiểu dữ liệu này được sử dụng để lưu giữ một giá trị Boolean

(true/false)

Trang 33

• Double: Kiểu dữ liệu này được sử dụng để lưu các giá trị số thực dấu chấm

động

• Min/ Max keys: Kiểu dữ liệu này được sử dụng để so sánh một giá trị với

các phần tử BSON thấp nhất và cao nhất

• Mảng: Kiểu dữ liệu này được sử dụng để lưu giữ các mảng hoặc danh sách

hoặc nhiều giá trị vào trong một key

• Timestamp: Giúp thuận tiện cho việc ghi chép hoặc đánh dấu thời điểm một

Document được sửa đổi hoặc được thêm vào

• Object: Kiểu dữ liệu này được sử dụng cho các Document được nhúng vào

• Null: Kiểu dữ liệu này được sử dụng để lưu một giá trị Null

• Symbol: Kiểu dữ liệu này được sử dụng giống như một chuỗi, tuy nhiên, nói

chung nó được dành riêng cho các ngôn ngữ mà sử dụng kiểu symbol cụ thể

• Date: Kiểu dữ liệu này được sử dụng để lưu giữ date và time hiện tại trong

định dạng UNIX time Bạn có thể xác định date time riêng cho bạn bằng việc tạo đối tượng Date và truyền ngày, tháng, năm vào trong đó

• Object ID: Kiểu dữ liệu này được sử dụng để lưu giữ ID của Document

• Binary data: Kiểu dữ liệu này được sử dụng để lưu giữ dữ liệu nhị phân

• Code: Kiểu dữ liệu này được sử dụng để lưu giữ JavaScrip code vào trong

Document

• Regular expression: Kiểu dữ liệu này được sử dụng để lưu giữ Regular

Expresion

2.4.7.5 Cơ chế hoạt động của MongoDB

Hình 16 Cơ chế hoạt động MongoDB

• MongoDB hoạt động dưới một tiến trình ngầm service luôn mở một cổng Cổng mặc định này là 27017 Nhờ cổng này, MongoDB lắng nghe các yêu cầu truy vấn, thao tác từ các ứng dụng gửi vào sau đó mới tiến hành xử lý

Trang 34

• Mỗi một bản ghi của MongoDB được tự động gắn thêm một field có tên

“_id” thuộc kiểu dữ liệu ObjectId Nó quy định để xác định được tính duy nhất của bản ghi này so với bản ghi khác Ngoài ra, nó cũng như phục vụ các thao tác tìm kiếm và truy vấn thông tin về sau

• Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn thông tin đạt hiệu suất cao nhất

• Mỗi khi có một truy vấn dữ liệu, bản ghi được cache (ghi đệm) lên bộ nhớ Ram Cache phục vụ lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc từ ổ cứng

• Khi có yêu cầu thêm/sửa/xóa bản ghi, để đảm bảo hiệu suất của ứng dụng mặc định MongoDB sẽ chưa cập nhật xuống ổ cứng ngay Sau 60 giây MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM xuống ổ cứng

2.5 Tổ chức tương tác phía người dùng AngularJS (client-side)

2.5.1 Giới thiệu về AngularJs

Angular là một bộ Javascript Framework rất mạnh và thường được sử dụng

để xây dựng project Single Page Application (SPA) Nó hoạt động dựa trên các thuộc tính mở rộng HTML (các thuộc tính theo quy tắc của Angular) Đây là một Framework mã nguồn mở hoàn toàn miễn phí và được hàng ngàn các lập trình viên trên thế giới ưa chuộng và sử dụng Framework này được thế hệ Web 2.0 phát triển khá mạnh ở nước ngoài, tuy nhiên ở Việt Nam thì vẫn chưa thông dụng lắm

2.5.2 Dữ liệu hai chiều (Two-way data binding)

Đây là tính năng đáng chú ý nhất của AngularJS, chủ yếu là làm giảm sự phụ thuộc vào máy chủ khi giao diện có sự thay đổi Thay vào đó, các mẫu (templates) được hiển thị bằng HTML thuần, theo dữ liệu chứa trong “$scope” được định nghĩa thông qua các “model” “$scope” trong AngularJS sẽ phát hiện ra các thay đổi của các biến trong “script” sau đó tiến hành cập nhật các phần tử trong HTML thông qua các “controller” Tương tự như vậy, bất kỳ sự thay đổi nào từ các “model” trong HTML cũng sẽ làm thay đổi các biến trong “script” dưới “$scope” Điều này giúp tăng tốc việc hiển thị dữ liệu thay vì phải tải lại trang web hoặc dễ dàng hơn là sử dụng DOM

Trang 35

2.5.4 Các tính năng cốt lõi của AngularJs

• Data-binding: (liên kết dữ liệu) tự động đồng bộ dữ liệu giữa model và view

• Scope: (Phạm vi) Đây là những đối tượng kết nối giữa Controller và View

• Controller: Đây là những hàm javascript xử lý kết hợp với bộ điều khiển Scope

• Service: Như đã đề cập ở trên, AngularJS sử dụng các API được xây dựng từ các web service (PHP, ASP) để thao tác với cơ sở dữ liệu

• Filters: Bộ lọc lọc ra các thành phẩn của một mảng và trả về mảng mới

• Directives: đánh dấu vào các yếu tố của DOM, nghĩa là sẽ tạo ra các thẻ HTML tùy chỉnh

• Templates: hiển thị thông tin từ controller, đây là một thành phần của views

• Routing: chuyển đổi giữa các action trong controller

• MVC: Mô hình chia thành phần riêng biệt thành Model, View, Controller Đây là một mô hình khá hay nhưng trong Angular thì nó được chế biến lại một chút gần giốn với MVVM (Model View View Model)

• Deep Linking: Liên kết sâu, cho phép bạn mã hóa trạng thái của ứng dụng trong các URL để nó có thể đánh dấu được với công cụ tìm kiếm

Trang 36

• Dependency Injection: Angular giúp các nhà phát triển tạo ứng dụng dễ dàng hơn để phát triển, hiểu và thử nghiệm dễ dàng

Sau đây là hình ảnh mô hình các thành phần quan trọng trong AngularJS:

Hình 17 Các thành phần của AngularJS

2.5.5 Ưu điểm của AngularJs

• Angular cho phép tạo ra các ứng dụng một cách đơn giản, code sạch

• Angular sử dụng data bind giống NET với tính năng liên kết với HTML nên giúp người dùng cảm thấy dễ chịu

• Angular có thể chạy trên hầu hết các trình duyệt điện thoại thông minh

2.5.6 Nhược điểm của AngularJS

• Không an toàn: Được phát triển từ javascript nên nó không an toàn, phía máy chủ phải thường xuyên xác nhận quyền để hệ thống chạy trơn tru

• Phụ thuộc: Nếu người dùng vô hiệu hóa javascript thì coi như không thể chạy được

2.6 Tổ chức tương tác phía máy chủ (server-side)

2.6.1 NodeJs

2.6.1.1 Giới thiệu về NodeJs

• Node.js là một nền tảng chạy trên môi trường V8 JavaScript runtime - một trình thông dịch JavaScript cực nhanh chạy trên trình duyệt Chrome Bình thường thì bạn cũng có thể tải bộ V8 và nhúng nó vào bất cứ thứ gì; Node.js làm điều đó đối với các web server JavaScript suy cho cùng cũng chỉ là một ngôn ngữ - vậy thì không có lý do gì để nói nó không thể sử dụng trên môi trường server tốt như là trong trình duyệt của người dùng được

• Trong một môi trường server điển hình LAMP PHP), bạn có một web server là Apache hoặc NGINX nằm dưới, cùng với

Trang 37

(Linux-Apache-MySQL-PHP chạy trên nó Mỗi một kết nối tới server sẽ sinh ra một thread mới, và điều này khiến ứng dụng nhanh chóng trở nên chậm chạp hoặc quá tải - cách duy nhất để hỗ trợ nhiều người dùng hơn là bằng cách bổ sung thêm nhiều máy chủ Đơn giản là nó không có khả năng mở rộng tốt Nhưng với Node.js thì điều này không phải là vấn đề Không có một máy chủ Apache lắng nghe các kết nối tới và trả về mã trạng thái HTTP – người dùng sẽ phải tự quản lý kiến trúc lõi của máy chủ đó May mắn thay, có một số module giúp thực hiện điều này được dễ dàng hơn, nhưng công việc này vẫn gây cho người quản lý một chút khó khăn khi mới bắt đầu Tuy nhiên, kết quả thu được là một ứng dụng web có tốc độ thực thi cao

• JavaScript là một ngôn ngữ dựa trên sự kiện, vì vậy bất cứ thứ gì xảy ra trên server đều tạo ra một sự kiện non-blocking Mỗi kết nối mới sinh ra một sự kiện; dữ liệu nhận được từ một upload form sinh ra một sự kiện data-received; việc truy vấn dữ liệu từ database cũng sinh ra một sự kiện Trong thực tế, điều này có nghĩa là một trang web Node.js sẽ chẳng bao giờ bị khóa (lock up) và có thể hỗ trợ cho hàng chục nghìn user truy cập cùng lúc Node.js đóng vai trò của server - Apache - và thông dịch mã ứng dụng chạy trên nó Giống như Apache, có rất nhiều module (thư viện) có thể được cài đặt để bổ sung thêm các đặc trưng và chức năng - như lưu trữ dữ liệu, hỗ trợ file Zip, đăng nhập bằng Facebook, hoặc các cổng thanh toán Dĩ nhiên, nó không có nhiều thư viện như PHP, nhưng Node.js vẫn đang ở trong giai đoạn ban đầu và có một cộng đồng rất mạnh mẽ ở đằng sau nó

• Một khái niệm cốt lõi của Node.js đó là các function bất đồng bộ (asynchronous functions) - vì vậy về cơ bản thì mọi thứ chạy trên nền tảng này Với hầu hết các ngôn ngữ kịch bản máy chủ, chương trình phải đợi mỗi function thực thi xong trước khi có thể tiếp tục chạy tiếp Với Node.js, cần xác định các function sẽ chạy để hoàn thành một tác vụ nào đó, trong khi phần còn lại của ứng dụng vẫn chạy đồng thời Nó là một chủ đề phức tạp

mà tôi sẽ không đi vào quá sâu trong bài viết này, nhưng đó là một trong những đặc trưng tiêu biểu của Node.js, vì vậy việc nắm vững nó là điều hết sức quan trọng

Ngày đăng: 31/05/2018, 10:04

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w