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

Luận văn tốt nghiệp Khoa học máy tính: Tích hợp các quy trình phòng khoa học công nghệ vào dự án cổng thông tin

138 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Nội dung

Trang 1

KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH

BÁO CÁO LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC

TÍCH HỢP CÁC QUY TRÌNH PHÒNG KHOA HỌC CÔNG NGHỆ

VÀO DỰ ÁN CỔNG THÔNG TIN

NGÀNH: KHOA HỌC MÁY TÍNH

HỘI ĐỒNG: Khoa Học Máy Tính 6 GVHD: Ths Nguyễn Thanh Tùng GVPB: Ths Bùi Tiến Đức

-o0o -

SVTH 1: Lê Nhựt Anh (1927001)

SVTH 2: Đặng Lê Hoàng Duy (1920082)

Thành phố Hồ Chí Minh, tháng 12 năm 2022

Trang 2

KHOA: KH&KT MÁY TÍNH NHIỆM VỤ LUẬN ÁN TỐT NGHIỆP

BỘ MÔN: HỆ THỐNG THÔNG TIN Chú ý: Sinh viên phải dán tờ này vào trang nhất của bản thuyết trình

HỌ VÀ TÊN: LÊ NHỰT ANH MSSV: 1927001 HỌ VÀ TÊN: ĐẶNG LÊ HOÀNG DUY MSSV: 1920082 NGÀNH: KHOA HỌC MÁY TÍNH LỚP: MT19B2KH

1 Đầu đề luận án:

TÍCH HỢP CÁC QUY TRÌNH PHÒNG KHOA HỌC CÔNG NGHỆ VÀ DỰ ÁN VÀO CỔNG THÔNG TIN

2 Nhiệm vụ (yêu cầu về nội dung và số liệu ban đầu):

• Quản lý thuyết minh, đề tài các cấp • Quản lý kinh nghiệm đổi mới sáng tạo

• Quản lý trung tâm, phòng thí nghiệm trọng điểm Quốc gia, phòng thí nghiệm khoa • Phân chia giờ nghiên cứu khoa học trong đề tài

• Thống kê các thông tin liên quan đến lý lịch khoa học • Báo cáo thống kê

3 Ngày giao nhiệm vụ luận án: 29/08/2022 4 Ngày hoàn thành nhiệm vụ: 13/01/2023

5 Họ tên giảng viên hướng dẫn: Phần hướng dẫn:

1) NGUYỄN THANH TÙNG _ 2) _ Nội dung và yêu cầu LVTN đã được thông qua Bộ môn

Ngày tháng năm 2022

(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)

PGS TS TRẦN MINH QUANG ThS NGUYỄN THANH TÙNG

PHẦN DÀNH CHO KHOA, BỘ MÔN:

Người duyệt (chấm sơ bộ): _ Đơn vị: _ Ngày bảo vệ: Điểm tổng kết: _ Nơi lưu trữ luận án: _

Trang 6

LỜI CAM ĐOAN

Chúng em xin cam đoan đây là công trình nghiên cứu của riêng nhóm, kết quả thực tiễn nêu trong luận văn tốt nghiệp là trung thực, được ứng dụng vào thực tế của nhà trường và chưa từng được công bố trong bất kì một chủ đề nào khác

Nhóm tác giả luận văn tốt nghiệp

Trang 7

LỜI CẢM ƠN

Trong suốt những năm tháng học tập tại trường Đại học Bách Khoa, chúng em đã nhận được sự giúp đỡ tận tình của quý thầy cô và các bạn Qua đó, em đã tiếp thu và tích lũy được nhiều kiến thức vô cùng quý báu làm hành trang giúp em tự tin, tự lập và vững vàng hơn trong cuộc sống

Nhân dịp hoàn thành Luận văn tốt nghiệp này, em xin gửi lời tri ân đến Ban Giám Hiệu Trường Đại Học Bách Khoa, quý thầy cô bộ môn của khoa Khoa học và Kỹ thuật Máy tính, đặc biệt là sự hướng dẫn tận tình của Ths Nguyễn Thanh Tùng – giảng viên hướng dẫn đã giúp chúng em rất nhiều trong quá trình hoàn thành Luận văn tốt nghiệp này

Xin gửi đến các anh, chị lời chúc sức khỏe và thành công trong công tác cũng như trong cuộc sống

Xin nhận ở chúng em lời cảm ơn chân thành nhất

Thành phố Hồ Chí Minh, tháng 12 năm 2022

Trang 8

v Giới thiệu về hệ thống đã phát triển v Phân tích yêu cầu mới

v Thiết kế hệ thống mới và hệ thống mở rộng v Thiết kế cơ sở dữ liệu cho hệ thống mới v Hiện thực và phát triển hệ thống

v Kiểm thử hệ thống

v Kết luận và hướng phát triển

Thông qua việc thực hiện luận văn, nhóm chúng em hy vọng sẽ đóng góp một chút nào đó vào việc xây dựng trường Đại học Bách Khoa ngày một hiện đại hơn

Trang 9

MỤC LỤC

1 Giới thiệu đề tài 1

2 Khó khăn và thách thức 2

3 Cơ sở lý thuyết 3

3.1 Kiến trúc website MVC (Model – View – Controller) 3

3.2 Ứng dụng đa trang và ứng dụng đơn trang 4

3.2.1 Ứng dụng đa trang (Multiple-page Application) 4

3.2.2 Ứng dụng đơn trang (Single-page Application) 4

3.3 Thư viện và framework cho Javascript 5

3.7.1 Hệ cơ sở dữ liệu quan hệ 14

3.7.2 Hệ cơ sở dữ liệu phi quan hệ 16

3.7.3 So sánh cơ sở dữ liệu quan hệ và cơ sở dữ liệu phi quan hệ 17

3.7.4 Oracle 18

Trang 10

4 Giới thiệu về hệ thống đã phát triển 22

4.1 Các module của hệ thống đã phát triển 22

4.1.1 Quản lý các hoạt động khoa học, công nghệ và dự án của cán bộ 22

4.1.2 Quản lý hoạt động của mỗi cán bộ 25

4.1.3 Quản lý lý lịch khoa học cho cán bộ 25

4.1.4 Quản lý đăng ký đề tài 26

4.1.5 Quản lý phản biện đề tài 26

4.1.6 Quản lý quá trình 26

4.1.7 Quản lý danh mục 27

4.1.8 Xem thống kê số liệu 28

4.1.9 Gửi thông báo bằng email 28

4.1.10 Quản lý thực hiện đề tài 29

4.1.11 Quản lý phân chia giờ thực hiện đề tài 29

4.1.12 Phân quyền quản lý cấp đề tài cán bộ phòng Khoa học Công nghệ và Dự án 29

4.1.13 Quản lý dữ liệu sách, tài liệu, giáo trình 30

4.1.14 Quản lý kinh phí 30

4.1.15 Quản lý sản phẩm ứng dụng theo nghiên cứu đề tài 30

4.1.16 Quản lý kết quả đào tạo 30

4.1.17 Quản lý các đề tài liên quan hợp tác quốc tế 31

4.1.18 Quản lý giải thưởng 31

4.1.19 Thống kê 31

4.1.20 Các module hỗ trợ khác 31

Trang 11

4.2 Kiến trúc hệ thống đã phát triển 31

4.3 Use-case hệ thống đã phát triển 33

4.4 Cơ sở dữ liệu hệ thống đã phát triển 36

4.4.1 Lược đồ ERD hệ thống đã phát triển 36

4.4.2 Lược đồ cơ sở dữ liệu hệ thống đã phát triển 37

5 Phân tích yêu cầu mới đối với hệ thống quản lý phòng Khoa học công nghệ & Dự án 39

5.1 Yêu cầu chức năng 39

5.1.1 Chức năng thuộc lý lịch khoa học cá nhân 39

5.1.2 Chức năng thuộc quản lý khoa học cá nhân 39

5.2 Yêu cầu phi chức năng 42

6 Thiết kế hệ thống mới và hệ thống mở rộng 43

6.1 Use-case đối với actor - người sử dụng 43

6.1.1 Xem, thêm, sửa, xóa, phân trang dữ liệu 44

6.1.2 Tìm kiếm theo bộ lọc có sẵn 45

6.1.3 Xem thêm dữ liệu mà người sử dụng tham gia 46

6.1.4 Tải xuống lý lịch khoa học theo mẫu yêu cầu 46

6.1.5 Phản biện Murata 47

6.2 Use-case đối với actor - người quản lý khoa học công nghệ cá nhân 48

6.2.1 Xem, thêm, sửa, xóa, phân trang dữ liệu 49

6.2.2 Tìm kiếm theo bộ lọc có sẵn 50

6.2.3 Tải xuống dữ liệu đề tài nghiên cứu khoa học 51

6.2.4 Đồng bộ danh sách đề tài 52

6.2.5 Đồng bộ tỷ lệ chia giờ đề tài 52

6.2.6 Thay đổi thông tin người tạo 53

6.2.7 Tải lên đánh giá công trình khoa học 53

6.2.8 Xem lịch sử tải lên tập tin thuyết minh 54

6.2.9 Sắp xếp thuyết minh đề tài theo điều kiện 55

6.2.10 Tải xuống dữ liệu đổi mới sáng tạo 55

6.2.11 Cập nhật dữ liệu thêm mẫu nhập liệu R01 56

6.2.12 Thông báo khi tải lên tập tin thành công 57

Trang 12

6.2.13 Tải lên tập tin hướng dẫn và mời phản biện 57

6.2.14 Tải xuống tập tin hướng dẫn và mời phản biện 58

6.2.15 Chỉnh sửa thông tin email thông báo không đủ thông tin 58

6.2.16 Chỉnh sửa thông tin email thông báo tạo mới bài báo 59

6.2.17 Chỉnh sửa thông tin email thông báo xóa bài báo 60

6.2.18 Chỉnh sửa thông tin email thông báo thêm tác giả 60

6.2.19 Thể hiện trực quan thông tin thống kê 61

6.3 Use-case đối với actor - người quản lý trung tâm 62

6.3.1 Xem, thêm, sửa, xóa, phân trang dữ liệu 63

6.3.2 Tải xuống dữ liệu 64

6.4 Use-case đối với actor - người quản lý phòng thí nghiệm 65

6.4.1 Xem, thêm, sửa, xóa, phân trang dữ liệu 66

6.4.2 Tải xuống dữ liệu 67

6.5 Use-case đối với actor - người quản lý Khoa 68

6.5.1 Xem, thêm, sửa, xóa, phân trang dữ liệu 69

6.5.2 Tải xuống dữ liệu 70

6.5.3 Thể hiện trực quan thông tin thống kê 71

6.6 Use-case đối với actor - quản lý công trình khoa học 71

6.6.1 Tự động gửi email sau 23 ngày bài báo, công trình khoa học không đủ thông tin 72

6.6.2 Tự động gửi email thông báo xóa bài báo sau 30 ngày bài báo, công trình khoa học không đủ thông tin 72

6.6.3 Tự động gửi email thông báo sau khi bài báo, công trình khoa học được tạo 73

6.6.4 Tự động gửi email thông báo sau khi bài báo, công trình khoa học được cập nhật tác giả 73

7 Thiết kế cơ sở dữ liệu cho hệ thống mới và mở rộng 75

8 Hiện thực và phát triển hệ thống 77

8.1 Cấu trúc cây thư mục 77

8.2 Hiện thực và phát triển hệ thống theo chức năng của từng đối tượng 78

8.2.1 Đối tượng Người dùng 78

8.2.2 Đối tượng Người quản lý 80

Trang 13

8.2.3 Đối tượng Trưởng khoa và Phó Khoa 93

8.2.4 Đối tượng Chuyên viên, Trưởng và Phó trung tâm 100

8.2.5 Đối tượng Chuyên viên, Trưởng và Phó phòng thí nghiệm 104

8.2.6 Đối tượng Hệ thống quản lý công trình khoa học 107

9 Kiểm thử hệ thống 109

9.1 Kiểm thử API 109

9.2 Kiểm thử User Interface 113

10 Kết luận và hướng phát triển luận văn 117

10.1 Kết quả đạt được 117

10.2 Ưu điểm 117

10.3 Hạn chế 118

10.4 Hướng phát triển luận văn 118

Tài liệu tham khảo 119

Trang 14

Hình 5 Mô hình hoạt động của Flux 7

Hình 6 Mô hình hoạt động của Redux 8

Hình 19 Sơ đồ use-case các tính năng đồng bộ dữ liệu giữa các actor 35

Hình 20 Lược đồ ERD hệ thống đã phát triển 36

Hình 21 Lược đồ cơ sở dữ liệu hệ thống đã phát triển 37

Hình 22 Lược đồ cơ sở dữ liệu hệ thống đã phát triển 38

Hình 23 Sơ đồ use-case với actor - người sử dụng 43

Hình 24 Sơ đồ use-case với actor - người quản lý khoa học công nghệ cá nhân 48

Hình 25 Sơ đồ use-case với actor - người quản lý trung tâm 62

Hình 26 Sơ đồ use-case với actor - người quản lý phòng thí nghiệm 65

Trang 15

Hình 28 Sơ đồ use-case với actor - quản lý công trình khoa học 71

Hình 29 Lược đồ ERD cơ sở dữ liệu cho hệ thống mới và mở rộng 75

Hình 30 Thiết kế cơ sở dữ liệu cho hệ thống mới và mở rộng 76

Hình 31 Cấu trúc cây thư mục 77

Hình 32 Lược đồ Activity quản lý dữ liệu lý lịch khoa học 78

Hình 33 Lược đồ Activity phản biện Murata 79

Hình 34 Giao diện phản biện Murata 79

Hình 35 Lược đồ Activity quản lý khoa học công nghệ 80

Hình 36 Giao diện quản lý lĩnh vực nghiên cứu 81

Hình 37 Giao diện tạo mới lĩnh vực nghiên cứu 81

Hình 38 Giao diện cập nhật lĩnh vực nghiên cứu 82

Hình 39 Giao diện quản lý hướng nghiên cứu 82

Hình 40 Giao diện tạo mới hướng nghiên cứu 83

Hình 41 Giao diện cập nhật hướng nghiên cứu 83

Hình 42 Giao diện quản lý kinh nghiệm quản lý đánh giá 84

Hình 43 Giao diện tạo mới kinh nghiệm quản lý đánh giá 84

Hình 44 Giao diện cập nhật kinh nghiệm quản lý đánh giá 85

Hình 45 Giao diện quản lý giới thiệu chuyên gia 85

Hình 46 Giao diện tạo mới giới thiệu chuyên gia 86

Hình 47 Giao diện cập nhật giới thiệu chuyên gia 86

Hình 48 Giao diện quản lý tham gia chương trình 87

Hình 49 Giao diện quản lý tham gia hiệp hội quản lý hội nghị 87

Hình 50 Giao diện quản lý tham gia trường viện 88

Hình 51 Lược đồ Activity đồng bộ dữ liệu đề tài 88

Hình 52 Giao diện đồng bộ dữ liệu đề tài khoa học công nghệ 90

Hình 53 Lược đồ Activity trực quan thông tin thống kê 91

Hình 54 Giao diện thống kê bài báo 91

Hình 55 Giao diện thống kê sở hữu trí tuệ 92

Hình 56 Giao diện thống kê kinh phí đề tài 92

Hình 57 Giao diện dashboard quản lý Khoa học công nghệ 93

Hình 58 Lược đồ Activity quản lý khoa học công nghệ Khoa 94

Trang 16

Hình 59 Giao diện quản lý lĩnh vực nghiên cứu Khoa 94

Hình 60 Giao diện quản lý hướng nghiên cứu Khoa 95

Hình 61 Giao diện quản lý kinh nghiệm quản lý đánh giá Khoa 95

Hình 62 Giao diện quản lý giới thiệu chuyên gia Khoa 96

Hình 63 Giao diện quản lý hoạt động khác Khoa 96

Hình 64 Giao diện tạo mới hoạt động khác Khoa 97

Hình 65 Giao diện cập nhật hoạt động khác Khoa 97

Hình 66 Lược đồ Activity trực quan thông tin thống kê Khoa 98

Hình 67 Giao diện thống kê bài báo Khoa 99

Hình 68 Giao diện dashboard quản lý khoa học công nghệ Khoa 100

Hình 69 Lược đồ Activity quản lý trung tâm 101

Hình 70 Giao diện trang quản lý trung tâm 101

Hình 71 Giao diện đề tài nghiên cứu khoa học 102

Hình 72 Giao diện thêm dữ liệu từ lý lịch khoa học công nghệ 102

Hình 73 Giao diện tạo mới dữ liệu đề tài 103

Hình 74 Giao diện cập nhật dữ liệu đề tài 103

Hình 75 Giao diện xoá dữ liệu đề tài 104

Hình 76 Lược đồ Activity quản lý phòng thí nghiệm 104

Hình 77 Giao diện trang quản lý Phòng thí nghiệm 105

Hình 78 Giao diện đề tài nghiên cứu khoa học 105

Hình 79 Giao diện thêm dữ liệu từ lý lịch khoa học công nghệ 106

Hình 80 Giao diện tạo mới dữ liệu đề tài 106

Hình 81 Giao diện cập nhật dữ liệu đề tài 107

Hình 82 Giao diện xoá dữ liệu đề tài 107

Hình 83 Lược đồ Activity tự động gửi email thông báo tình trạng công trình khoa học 108

Hình 84 Chương trình Postman 109

Hình 85 Giao diện chương trình Postman 109

Hình 86 Thư viện Chaijs 110

Hình 87 Kiểm thử API bước 1 110

Hình 88 Kiểm thử API bước 2 111

Trang 17

Hình 89 Kiểm thử API bước 3 111

Hình 90 Kiểm thử API bước 4 112

Hình 91 Kiểm thử API bước 5 112

Hình 92 Kiểm thử API một lần chạy duy nhất 113

Hình 93 Kết quả kiểm thử API một lần chạy duy nhất 113

Hình 94 Công cụ Selenium 114

Hình 95 Các thành phần của công vụ Selenium 114

Hình 96 Đoạn code mẫu sử dụng Selenium được viết bằng Python 115

Hình 97 Chương trình tự chạy, bấm chuột và nhập liệu 115

Hình 98 Báo cáo tình trạng test-case 116

Trang 18

DANH MỤC BẢNG

Bảng 1 Một số RDBMS phổ biến nhất 15

Bảng 2 So sánh cơ sở dữ liệu quan hệ và cơ sở dữ liệu phi quan hệ 17

Bảng 3 Danh sách chức năng của người sử dụng 43

Bảng 4 Đặc tả use-case xem, thêm, sửa, xóa, phân trang dữ liệu 44

Bảng 5 Đặc tả use-case tìm kiếm theo bộ lọc có sẵn 45

Bảng 6 Đặc tả use-case xem thêm dữ liệu mà người sử dụng tham gia 46

Bảng 7 Đặc tả use-case tải xuống lý lịch khoa học theo mẫu yêu cầu 46

Bảng 8 Đặc tả use-case phản biện Murata 47

Bảng 9 Danh sách chức năng của người quản lý khoa học công nghệ cá nhân 49

Bảng 10 Đặc tả use-case xem, thêm, sửa, xóa, phân trang dữ liệu 49

Bảng 11 Đặc tả use-case tìm kiếm theo bộ lọc có sẵn 50

Bảng 12 Đặc tả use-case tải xuống dữ liệu đề tài nghiên cứu khoa học 51

Bảng 13 Đặc tả use-case đồng bộ danh sách đề tài 52

Bảng 14 Đặc tả use-case thay đổi thông tin người tạo 53

Bảng 15 Đặc tả use-case tải lên đánh giá công trình khoa học 53

Bảng 16 Đặc tả use-case xem lịch sử tải lên tập tin thuyết minh 54

Bảng 17 Đặc tả use-case sắp xếp thuyết minh đề tài theo điều kiện 55

Bảng 18 Đặc tả use-case tải xuống dữ liệu đổi mới sáng tạo 55

Bảng 19 Đặc tả use-case cập nhật dữ liệu thêm mẫu nhập liệu R01 56

Bảng 20 Đặc tả use-case thông báo khi tải lên tập tin thành công 57

Bảng 21 Đặc tả use-case tải lên tập tin hướng dẫn và mời phản biện 57

Bảng 22 Đặc tả use-case tải xuống tập tin hướng dẫn và mời phản biện 58

Bảng 23 Đặc tả use-case chỉnh sửa thông tin email thông báo không đủ thông tin 58

Bảng 24 Đặc tả use-case chỉnh sửa thông tin email thông báo tạo mới bài báo 59

Bảng 25 Đặc tả use-case chỉnh sửa thông tin email thông báo xóa bài báo 60

Bảng 26 Đặc tả use-case chỉnh sửa thông tin email thông báo thêm tác giả 60

Bảng 27 Đặc tả use-case thể hiện trực quan thông tin thống kê 61

Bảng 28 Danh sách chức năng của người quản lý khoa học công nghệ thuộc trung tâm 62

Trang 19

Bảng 29 Đặc tả use-case xem, thêm, sửa, xóa, phân trang dữ liệu 63

Bảng 30 Đặc tả use-case tải xuống dữ liệu 64

Bảng 31 Danh sách chức năng của người quản lý khoa học công nghệ thuộc phòng thí nghiệm (PTN) 65

Bảng 32 Đặc tả use-case xem, thêm, sửa, xóa, phân trang dữ liệu 66

Bảng 33 Đặc tả use-case tải xuống dữ liệu 67

Bảng 34 Danh sách chức năng của người quản lý khoa học công nghệ Khoa 68

Bảng 35 Đặc tả use-case xem, thêm, sửa, xóa, phân trang dữ liệu 69

Bảng 36 Đặc tả use-case tải xuống dữ liệu 70

Bảng 37 Đặc tả use-case thể hiện trực quan thông tin thống kê 71

Bảng 38 Đặc tả use-case tự động gửi email sau 23 ngày bài báo, công trình khoa học không đủ thông tin 72

Bảng 39 Đặc tả use-case tự động gửi email thông báo xóa bài báo sau 30 ngày bài báo, công trình khoa học không đủ thông tin 72

Bảng 40 Đặc tả use-case tự động gửi email thông báo sau khi bài báo, công trình khoa học được tạo 73

Bảng 41 Đặc tả use-case tự động gửi email thông báo sau khi bài báo, công trình khoa học được cập nhật tác giả 73

Trang 20

1 Giới thiệu đề tài

Phòng Khoa học Công nghệ & Dự án đã chuẩn hóa quy trình quản lý thuyết minh, đề tài, trung tâm và phòng thí nghiệm Cổng thông tin nhà trường cần tích hợp các quy trình này để cung cấp dịch vụ cho phòng và viên chức, người lao động của nhà trường

Nhiệm vụ (yêu cầu về nội dung và số liệu ban đầu): • Quản lý thuyết minh, đề tài các cấp

• Quản lý kinh nghiệm đổi mới sáng tạo

• Quản lý trung tâm, phòng thí nghiệm trọng điểm Quốc gia, phòng thí nghiệm khoa

• Phân chia giờ nghiên cứu khoa học trong đề tài

• Thống kê các thông tin liên quan đến lý lịch khoa học • Báo cáo thống kê

Hiện tại, ứng dụng quản lý của phòng khoa học công nghệ và dự án chỉ đủ phục vụ các nhu cầu cơ bản của người dùng như: thêm, xóa, sửa, cập nhật thông tin phần mềm Trong khi đó, nhu cầu sử dụng của người dùng ngày càng cao cần thiết phải có thêm các module mở rộng như:

- Hiển thị lịch sử upload file thuyết minh, và quản lý các file đã upload lên hệ thống

- Đồng bộ lý lịch khoa học của người dùng giữa các module với nhau

- Đồng bộ tỷ lệ chia giờ giữa quản lý dữ liệu đề tài và đề tài lý lịch khoa học - Phân chia giờ nghiên cứu đề tài khoa học giữa các thầy cô có tham gia trong đề tài

- Trực quan hóa số liệu thống kê liên quan đế lý lịch khoa học - Xuất, in các báo cáo thống kê

Bên cạnh đó, do nhu cầu thực tế phát sinh, Phòng Khoa học Công nghệ & Dự án cần thêm các module để quản lý các nghiệp vụ mới phát sinh như:

- Nghiệp vụ quản lý kinh nghiệm đổi mới sáng tạo, đánh giá hoạt động đổi mới sáng tạo

- Nghiệp vụ quản lý trung tâm, phòng thí nghiệm trọng điểm Quốc gia, phòng thí nghiệm khoa

Trang 21

2 Khó khăn và thách thức

Nhóm lựa chọn phát triển các tính năng mới dựa trên hệ thống cũ sẽ có những khó khăn và thách thức như sau:

- Mất thời gian để làm quen mã nguồn, công nghệ đã sử dụng

- Đồng bộ dữ liệu giữa chức năng cũ và các tính năng mới theo đề tài của nhóm - Các nghiệp vụ phòng Khoa học Công nghệ & Dự án thường thay đổi theo thời gian đòi hỏi phải xây dựng cơ sở dữ liệu linh hoạt đáp ứng việc thay đổi nghiệp vụ

- Hỗ trợ trên nhiều nền tảng khác nhau

Trên đây là những thách thức mà nhóm em cần phải giải quyết để tích hợp các quy trình nghiệp vụ phòng Khoa học Công nghệ & Dự án vào cổng thông tin

Trang 22

3 Cơ sở lý thuyết

3.1 Kiến trúc website MVC (Model – View – Controller)

MVC là viết tắt của 3 từ Model - View - Controller, đây là mô hình thiết kế thường được sử dụng hầu hết trong các dự án website Trong mô hình này, yêu cầu (request) được gửi tới Controller từ người dùng (user) Controller có nhiệm vụ giao tiếp với Model để thực hiện nghiệp vụ hoặc lấy dữ liệu từ cơ sở dữ liệu (database) và chọn View để hiển thị dữ liệu từ Model ra cho người dùng Sự tương tác giữa các thành phần trong mô hình này được thể hiện ở Hình 1

Hình 1 Mô hình MVC

v Ưu điểm của mô hình MVC

Trang 23

- Hỗ trợ phát triển ứng dụng nhanh chóng, các thành viên trong nhóm có thể làm việc đồng thời trên từng thành phần khác nhau của mô hình này

3.2 Ứng dụng đa trang và ứng dụng đơn trang

3.2.1 Ứng dụng đa trang (Multiple-page Application)

Ứng dụng đa trang (MPA) hoạt động theo cách "truyền thống" Mỗi thao tác trao đổi dữ liệu giữa server và trình duyệt web đều phải cập nhật lại toàn bộ trang bằng dữ liệu mới Do đó, những ứng dụng này thường có kích thước lớn và việc phải cập nhập lại trang sẽ gây ảnh hưởng tới trải nghiệm người dùng Tuy nhiên, khi AJAX ra đời thì mối lo về độ lớn, độ phức tạp trong việc truyền dữ liệu giữa server và trình duyệt đã được cắt giảm Với cách giải quyết này, chúng ta chỉ cần cập nhật lại một phần ứng dụng liên quan mà không cần phải tải lại toàn bộ một trang web Tuy vậy, các ứng dụng càng lớn thì việc sử dụng AJAX càng phức tạp hơn

v Ưu điểm của MPA

- Dễ dàng thao tác, sử dụng đối với những ứng dụng có menu, điều hướng ít - Thuận tiện cho việc quản lý SEO Các ứng dụng này dễ dàng phân cấp, sắp xếp các từ khóa cho từng trang, từng mục đích, từng sản phẩm

v Nhược điểm MPA

- Kích thước ứng dụng lớn

- Việc phát triển ứng dụng khá phức tạp, cần phát triển đồng bộ cả back-end và front-end

3.2.2 Ứng dụng đơn trang (Single-page Application)

Ứng dụng đơn trang (SPA) là ứng dụng chỉ tải toàn bộ trang web trong lần đầu sử dụng và chỉ tải những phần cần thiết trong những lần sử dụng kế tiếp Ứng dụng đơn trang hiện nay khá phổ biến như: Facebook, Gmail, Github, Ứng dụng đơn trang cho trải nghiệm người dùng UX (User Experience) tốt hơn

v Ưu điểm của SPA

- Quá trình phát triển ứng dụng đơn giản hơn, có trình tự được sắp xếp hợp lý Các lập trình viên không cần viết code để tạo nhiều trang từ phía server Việc bắt

Trang 24

đầu học cũng đơn giản hơn khi chỉ cần quan tâm đến file liên quan đến một trang duy nhất

- SPA nhanh hơn do các tài nguyên như (HTML, CSS, Javascript, ) đã được tải từ lần đầu, chỉ có dữ liệu được thay đổi giữa server và trình duyệt

- SPA dễ dàng kiểm tra, kiểm lỗi hơn do phần lớn các trình duyệt (Google Chrome, FireFox, ) hỗ trợ tốt trong việc quan sát, debug, kiểm lỗi ngay trên trình duyệt

- SPA có khả năng làm việc với bộ nhớ cục bộ, cache tốt Nên hiệu quả hơn ứng dụng đa trang khi làm việc offline, do các tài nguyên chỉ cần tải xuống một lần v Nhược điểm của SPA

- Trong lần đầu tiên, việc tải trang sẽ lâu hơn do phải tải xuống tất cả các tài nguyên

- Thường ít bảo mật hơn khi so sánh ứng dụng đa trang do XSS (Cross Site Scripting), cho phép kẻ tấn công có thể chèn mã phá hoại vào ứng dụng web tới người dùng khác

- Rò rỉ bộ nhớ trong Javascript làm hệ thống làm việc chậm hơn

Hiện tại, đề tài luận văn của nhóm đã và đang được phát triển dựa trên SPA với những ưu và nhược điểm kể trên

3.3 Thư viện và framework cho Javascript

Hiện nay có khá nhiều thư viện và framework Javascript hỗ trợ cho việc phát triển giao diện người dùng (front-end), trong đó phải kể đến ba công cụ lớn là ReactJS, Angular và VueJS Những công cụ này giúp nâng cao hiệu suất công việc và hỗ trợ quản lý mã nguồn tốt hơn

3.3.1 Angular

Hình 2 Angular

Angular (Hình 2) là một framework ứng dụng web mã nguồn mở được phát triển lần đầu năm 2009 bởi Google Framework này đòi hỏi lập trình viên phải biết sử dụng TypeScript (một dự án mã nguồn mở được phát triển bởi Microsoft, có thể được coi là một phiên bản nâng cao của Javascript)

Trang 25

Angular là một framework có cấu trúc cho các ứng dụng web động Nó cho phép bạn sử dụng HTML như là ngôn ngữ mẫu và cho phép bạn mở rộng cú pháp của HTML để diễn đạt các thành phần ứng dụng của bạn một cách rõ ràng và súc tích Hai tính năng cốt lõi: Data binding và Dependency injection của AngularJS loại bỏ phần lớn code mà bạn thường phải viết Nó xảy ra trong tất cả các trình duyệt, làm cho nó trở thành đối tác lý tưởng của bất kỳ công nghệ Server nào

3.3.2 VueJS

Hình 3 VueJS

VueJS (Hình 3) là một framework linh động (nguyên bản tiếng Anh: progressive – tiệm tiến) dùng để xây dựng giao diện người dùng (user interfaces) Khác với các framework nguyên khối (monolithic), Vue được thiết kế từ đầu theo hướng cho phép và khuyến khích việc phát triển ứng dụng theo từng bước Khi phát triển lớp giao diện (view layer), người dùng chỉ cần dùng thư viện lõi (core library) của Vue, vốn rất dễ học và tích hợp với các thư viện hoặc dự án có sẵn Cùng lúc đó, nếu kết hợp với những kĩ thuật hiện đại như SFC (single file components) và các thư viện hỗ trợ, Vue cũng đáp ứng được dễ dàng nhu cầu xây dựng những ứng dụng một trang (SPA - Single-Page Applications) với độ phức tạp cao hơn nhiều

3.3.3 ReactJS

Hình 4 ReactJS

ReactJS (Hình 4) là một thư viện Javascript đang nổi lên trong những năm gần đây với xu hướng Single Page Application Trong khi những framework khác cố gắng

Trang 26

hướng đến một mô hình MVC hoàn thiện thì React nổi bật với sự đơn giản và dễ dàng phối hợp với những thư viện Javascript khác Nếu như AngularJS là một Framework cho phép nhúng code Javascript trong code html thông qua các attribute như ng-model, ng-repeat thì với react là một library cho phép nhúng code html trong code javascript nhờ vào JSX, bạn có thể dễ dàng lồng các đoạn HTML vào trong JS.Tích hợp giữa javascript và HTML vào trong JSX làm cho các component dễ hiểu hơn

React là một thư viện giao diện người dùng (User Interface - UI) phát triển tại Facebook để hỗ trợ việc xây dựng những thành phần (components) UI có tính tương tác cao, có trạng thái và có thể sử dụng lại được React được sử dụng tại Facebook trong production, và www.instagram.com được viết hoàn toàn trên React

Một trong những điểm hấp dẫn của React là thư viện này không chỉ hoạt động trên phía client, mà còn được render trên server và có thể kết nối với nhau React so sánh sự thay đổi giữa các giá trị của lần render này với lần render trước và cập nhật ít thay đổi nhất trên DOM

Hiện tại, đề tài luận văn của nhóm đã và đang được phát triển trên ReactJS

3.4 Thư viện hỗ trợ cho ReactJS 3.4.1 Flux

Hình 5 Mô hình hoạt động của Flux

Flux là một kiến trúc mà Facebook sử dụng trong khi làm việc với React Flux không phải là một framework hay một thư viện (library) Nó chỉ là một kiểu kiến trúc mới hỗ trợ thêm cho React, đồng thời xây dựng ý tưởng về luồng dữ liệu một chiều (Unidirectional Data Flow)

Một kiến trúc Flux điển hình là sự kết hợp giữa thư viện Dispatcher (được viết bởi Facebook) cùng với Module NodeJS EventEmitter để tạo nên một hệ thống sự kiện (Event System) quản lý các trạng thái của ứng dụng

v Cấu trúc của Flux

Actions - Làm nhiệm vụ truyền dẫn dữ liệu tới Dispatcher (được coi như các

Helper Method)

Trang 27

Dispatcher - Nhận thông tin từ Actions, truyền tải dữ liệu (payload) tới các nơi

đã đăng ký nhận thông tin

Stores - Là nơi lưu trữ trạng thái và các logic của hệ thống, đây chính là nơi sẽ

đăng ký nhận dữ liệu với Dispatcher

Controller Views - Chính là các React Components, làm nhiệm vụ nhận các

trạng thái (state) từ Stores và truyền dữ liệu (dưới dạng props) cho các thành phần con

v Mô hình hoạt động của Flux (Hình 5)

- Views chính là thành phần làm nhiệm vụ hiển thị nội dung ứng dụng (có thể hiểu giống như thành phần V trong mô hình MVC)

- Khi người dùng tương tác với ứng dụng làm thay đổi trạng thái (state) của ứng dụng (VD: thêm, sửa, xóa dữ liệu cá nhân), View sẽ thông qua Action gửi các thông tin thay đổi tới Dispatcher gồm có:

+ action_name: tên của Action (VD: ADD_ITEM - thêm sản phẩm vào giỏ hàng)

+ action_payload: thông tin chi tiết nội dung muốn gửi (VD: Object chứa thông tin ID, quantity, price, của sản phẩm)

- Sau khi nhận được thông tin từ Action, Dispatcher làm nhiệm vụ truyền tải (broadcast) nội dung nhận được tới các Store đăng ký lắng nghe sự kiện thay đổi từ trước đó

- Store sau khi nhận thông tin, tiến hành cập nhật dữ liệu (có thể hiểu việc cập nhật dữ liệu ở đây giống việc cập nhật state của Component)

- Sau khi cập nhật, Store bắn sự kiện xuống View để tiến hành cập nhật hiển thị cho người dùng

- Ngoài ra trong sơ đồ trên còn có một thành phần API để lấy dữ liệu từ Remote Server

3.4.2 Redux

Hình 6 Mô hình hoạt động của Redux

Trang 28

Redux là một thư viện Javascript giúp tạo ra thành một lớp quản lý trạng thái của ứng dụng Redux được xây dựng dựa trên kiến trúc Flux do Facebook giới thiệu

v Nguyên lý hoạt động của Redux

- Nguồn dữ liệu tin cậy duy nhất: State của toàn bộ ứng được chứa trong một object tree nằm trong Store duy nhất

- Trạng thái chỉ được phép đọc: Cách duy nhất để thay đổi State của ứng dụng là phát một Action (là 1 object mô tả những gì xảy ra)

- Thay đổi chỉ bằng hàm thuần túy: Để chỉ ra cách mà State được biến đổi bởi Action chúng ta dùng các pure function gọi là Reducer

v Cấu trúc của Redux

- Action: Là nơi mang các thông tin dùng để gửi từ ứng dụng đến Store Các

thông tin này là 1 object mô tả những gì đã xảy ra

- Reducer: Là nơi xác định State thay đổi như thế nào

- Store: Là nơi quản lý State, cho phép truy cập State qua getState(), update State

qua dispatch(action), đăng ký listener qua subscribe (listener)

- View: Hiển thị dữ liệu được cung cấp bởi Store

v Mô hình hoạt động của Redux (Hình 6)

Cấu trúc của Redux được giải quyết theo dòng dữ liệu một chiều Nghĩa là tất cả các dữ liệu được xử lý theo một chu trình giống nhau, điều này giúp cho chúng ta dễ dàng nắm bắt cũng như hiểu chúng dễ dàng hơn

Vòng đời của dữ liệu trong redux bao gồm 4 bước: 1 Chúng ta gọi store.dispatch(action)

2 Redux store sẽ gọi hàm reducer mà chúng ta đã gọi từ action tương ứng 3 Reducer gốc sẽ tổng hợp tất các các kết quả từ nhiều reducer khác nhau vào cây trạng thái đơn

4 Store sẽ lưu lại trạng thái cuối cùng của cây trạng thái đơn được trả về Hiện tại, đề tài luận văn của nhóm đã và đang dùng thư viện Redux để quản lý các state của component

3.5 Front-end 3.5.1 HTML/CSS

HTML (HyperText Markup Language) là một ngôn ngữ đánh dấu được thiết kế ra để tạo nên các trang web, nghĩa là các mẩu thông tin được trình bày trên World Wide Web

CSS (Cascading Style Sheets) định nghĩa về cách hiển thị của một tài liệu HTML CSS đặc biệt hữu ích trong việc thiết kế Web Nó giúp cho người thiết kế dễ dàng áp đặt

Trang 29

các phong cách đã được thiết kế lên bất kì page nào của website một cách nhanh chóng, đồng bộ

3.5.2 SCSS/SASS

SASS/SCSS là một chương trình tiền xử lý CSS (CSS preprocessor) Nó giúp việc viết CSS theo cách của một ngôn ngữ lập trình, có cấu trúc rõ ràng, rành mạch, dễ phát triển và bảo trì code hơn Ngoài ra nó có rất nhiều các thư viện hỗ trợ kèm theo giúp bạn viết code CSS một cách dễ dàng vào đơn giản hơn SASS và SCSS về bản chất vấn đề là giống nhau, chỉ khác nhau ở cách viết

v Đặc điểm của SCSS/SASS - Quy tắc xếp chồng

- Sử dụng biến - Mixins và hàm - Quy tắc kế thừa

- Các câu lệnh điều khiển

3.5.3 Bootstrap

Bootstrap là một thư viện miễn phí, mã nguồn mở, dựa trên HTML, CSS và Javascript, nó được phát triển để xây dựng các giao diện website tương thích với tất cả các thiết bị có kích thước màn hình khác nhau (responsive) Hiện nay Bootstrap là một trong những thư viện được sử dụng nhiều nhất để tạo ra các Responsive Website (trang web phù hợp với nhiều loại màn hình)

v Đặc điểm và thế mạnh - Dễ sử dụng

- Tiết kiệm thời gian cho người dùng khi cần tạo ra các trang web tương thích với nhiều loại thiết bị khác nhau

- Tương thích với nhiều loại trình duyệt

3.5.4 jQuery

jQuery là một thư viện Javascript nhanh, gọn và nhiều tính năng Nó làm cho mọi thứ như chuyển đổi và thao tác đối với HTML, xử lý sự kiện, hiệu ứng và ajax đơn giản hơn nhiều, với API dễ sử dụng và hoạt động với vô số trình duyệt Với sự kết hợp giữa tính linh hoạt và khả năng mở rộng, jQuery đã thay đổi các hàng triệu người dùng Javascript

v Đặc điểm và thế mạnh

- Dễ sử dụng: đây là lợi thế chính khi sử dụng jQuery Nó dễ dàng hơn so với nhiều thư viện Javascript chuẩn khác bởi cú pháp đơn giản và bạn chỉ phải viết ít dòng lệnh để tạo các chức năng tương tự

Trang 30

- Là một thư viện lớn của Javascript: thực thi được nhiều chức năng hơn so với các thư viện Javascript khác

- Cộng đồng lớn: jQuery có một cộng đồng lập trình viên dành thời gian của họ để nghiên cứu, phát triển các plugin của jQuery Như vậy có rất nhiều plugin được viết sẵn để sử dụng giúp đẩy nhanh quá trình thực hiện các sản phẩm - Có nhiều tài liệu và hướng dẫn chi tiết: các trang web jQuery có đầy đủ tài liệu hướng dẫn cách sử dụng thư viện này

- Hỗ trợ Ajax: jQuery cho phép bạn phát triển các Ajax một cách dễ dàng Ajax cho phép một giao diện kiểu dáng đẹp trên trang web, có các chức năng có thể thực hiện trên trang mà không cần tải lại toàn bộ trang

3.6 Back-end 3.6.1 Java

Hình 7 Java

Java (Hình 7) là một trong những ngôn ngữ lập trình hướng đối tượng Nó được sử dụng trong phát triển phần mềm, trang web, game hay ứng dụng trên các thiết bị di động Java được khởi đầu bởi James Gosling và bạn đồng nghiệp ở Sun MicroSystem năm 1991

v Đặc điểm của ngôn ngữ lập trình Java

- Hướng đối tượng thuần tuý, cú pháp được vay mượn nhiều từ ngôn ngữ C/C++ - Độc lập phần cứng và hệ điều hành do chỉ cần có máy ảo JVM để chạy bytecode - Mạnh mẽ và bảo mật

Trang 31

- Các ứng dụng máy chủ dùng trong dịch vụ tài chính

3.6.2 ASP.NET

Hình 8 ASP.NET

ASP.NET (Hình 8) là một nền tảng dành cho phát triển web, được Microsoft phát hành và cung cấp lần đầu tiên vào năm 2002 Nền tảng được sử dụng để tạo ra các ứng dụng web-based Một số ngôn ngữ lập trình được sử dụng phổ biến trong ASP.NET là Visual Basic và C# Hai ngôn ngữ này thường được sử dụng để phát triển cho các ứng dụng web

v Đặc điểm của ASP.NET

- Trạng thái code rời: tách rời các mã code và cả thiết kế để đảm bảo khả năng duy trì ứng dụng Các file trong ASP.NET được tách rời thành nhiều tệp, giúp nhà phát triển có khả năng giữ cho ASP.NET dễ dàng và đơn giản

- Quản lý trạng thái: có sẵn các phương tiện quản lý, kiểm soát trạng thái Đặc trưng này giúp cho các ứng dụng, dịch vụ web ghi nhớ trạng thái nên thường được sử dụng trong việc thiết kế tính năng giỏ hàng trong các trang thương mại điện tử

- Bộ nhớ cache: thực hiện lưu trữ bộ nhớ Cache nhằm cải thiện hiệu suất làm việc của ứng dụng Điều này hỗ trợ lưu trữ thông tin, hỗ trợ truy xuất, phản hồi trong thời gian ngắn, từ đó tăng hiệu suất làm việc của ứng dụng

v Ứng dụng của ASP.NET - Ứng dụng web và API

- Ứng dụng giao tiếp real-time giữa client và server - Ứng dụng trong việc tạo các microservice

Trang 32

3.6.3 NodeJS

Hình 9 NodeJS

NodeJS (Hình 9) là một nền tảng (platform) phát triển độc lập được xây dựng ở trên Javascript Runtime của Chrome mà chúng ta có thể xây dựng được các ứng dụng mạng một cách nhanh chóng và dễ dàng mở rộng Nodejs được xây dựng và phát triển từ năm 2009, bảo trợ bởi công ty Joyent, trụ sở tại California, Hoa Kỳ

NodeJS sử dụng mô hình event-driven (hướng sự kiện), hoạt động theo cơ chế non-blocking I/O (bất đồng bộ vào/ra)

- Mô hình event-driven: là mô hình lập trình dựa trên các sự kiện từ đầu vào, hoặc các thông điệp (message) từ các ứng dụng khác Trong event-driven, các event có thể xảy ra khi người dùng tương tác sẽ được tạo ra sẵn Thay vì người dùng phải chờ chương trình, thì ngược lại là chương trình lại đang chờ tương tác của người dùng là sẽ lập tức phản ứng ngay

- Cơ chế non-blocking I/O: là cơ chế cung cấp cách thức khiến các thread không cần thiết chờ đợi việc đọc/ghi I/O Như vậy, các thread có thể tiếp tục thực hiện tác vụ khác qua đó giúp ứng dụng giảm bớt độ trễ do chờ đợi không cần thiết v Đặc điểm của NodeJS

- Phần lõi bên dưới của Nodejs được viết hầu hết bằng C++ nên cho tốc độ xử lý và hiệu năng khá cao

- NodeJS tạo ra được các ứng dụng có tốc độ xử lý nhanh, realtime thời gian thực - NodeJS áp dụng cho các sản phẩm có lượng truy cập lớn, cần mở rộng nhanh, cần đổi mới công nghệ, hoặc tạo ra các dự án Startup nhanh nhất có thể

Trang 33

- Real-time Data Application: ứng dụng dữ liệu thời gian thực

3.6.4 Kết luận và lựa chọn

Như vậy, theo những nội dung đã tìm hiểu về back-end có thể thấy rằng Java là ngôn ngữ vô cùng phổ biến, được sử dụng trong rất nhiều lĩnh vực như tài chính, bảo hiểm, giáo dục,… còn ASP.NET là một nền tảng lớn dùng để phát triển các ứng dụng web và microservice Tuy nhiên nhóm cũng nhận thấy rằng, việc sử dụng Java hay ASP.NET phải tốn rất nhiều công sức để cài đặt, thiết lập và khó khăn trong việc sử dụng Bên cạnh đó, với tính chất của đề tài và yêu cầu của hệ thống đòi hỏi sẽ có khả năng mở rộng lớn, phát triển trong tương lai nên nhóm quyết định lựa chọn NodeJS để sử dụng cho back-end của đề tài này

3.7 Cơ sở dữ liệu

Cơ sở dữ liệu (Database) là một tập hợp các dữ liệu có tổ chức, thường được lưu trữ và truy cập điện tử từ hệ thống máy tính Khi cơ sở dữ liệu phức tạp hơn, chúng thường được phát triển bằng cách sử dụng các kỹ thuật thiết kế và mô hình hóa chính thức

Có 2 loại cơ sở dữ liệu phổ biến hiện nay:

- Cơ sở dữ liệu quan hệ (SQL - Structured Query Language)

- Cơ sở dữ liệu phi quan hệ (NoSQL - Non-Structured Query Language)

3.7.1 Hệ cơ sở dữ liệu quan hệ

v Khái niệm

SQL là loại ngôn ngữ máy tính, giúp cho thao tác lưu trữ và truy xuất dữ liệu được lưu trữ trong một cơ sở dữ liệu quan hệ SQL là viết tắt của Structured Query Language (ngôn ngữ truy vấn có cấu trúc)

RDBMS (Relational Database Management System) là hệ quản trị cơ sỡ dữ liệu quan hệ RDBMS là cơ sở cho SQL, và cho tất cả các hệ thống cơ sở dữ liệu hiện đại như MS SQL Server, IBM DB2, Oracle, MySQL và Microsoft Access

v Bảng

Dữ liệu trong một RDBMS được lưu trữ trong các đối tượng cơ sở dữ liệu được gọi là các bảng (table) Bảng này về cơ bản là một bộ sưu tập các mục nhập dữ liệu có liên quan và nó bao gồm nhiều cột và hàng Bảng là hình thức lưu trữ dữ liệu phổ biến và đơn giản nhất trong một cơ sở dữ liệu quan hệ

v Trường

Mỗi bảng được chia thành các thực thể nhỏ gọi là các trường (field) Trường là một cột trong một bảng được thiết kế để lưu trữ thông tin cụ thể về mỗi bản ghi trong bảng

v Bản ghi, hàng

Trang 34

Một bản ghi (record) cũng được gọi là một hàng (row) dữ liệu là từng mục riêng lẻ, tồn tại trong một bảng

v Ràng buộc

Ràng buộc (constraint) là các quy tắc được thi hành trên các cột dữ liệu trên một bảng Chúng được sử dụng để giới hạn loại dữ liệu có thể insert vào một bảng Điều này đảm bảo tính chính xác và độ tin cậy của dữ liệu trong cơ sở dữ liệu Constraint có thể là cấp độ cột hoặc cấp độ bảng Các ràng buộc cấp độ cột chỉ được áp dụng cho một cột trong khi các ràng buộc mức bảng được áp dụng cho toàn bộ bảng

v Toàn vẹn dữ liệu

Mỗi RDBMS có các loại toàn vẹn dữ liệu sau:

Thực thể toàn vẹn: không có hàng trùng lặp trong một bảng

Domain Integrity: thực thi kiểm tra tính hợp lệ cho một cột nhất định bằng cách hạn chế kiểu, định dạng hoặc phạm vi giá trị

Tính toàn vẹn tham chiếu: các hàng không thể bị xóa, được sử dụng bởi các bản ghi khác

Tính toàn vẹn do người dùng định nghĩa: thực thi một số quy tắc kinh doanh cụ thể không rơi vào thực thể, miền hoặc toàn vẹn tham chiếu

v Các hệ quản trị cơ sở dữ liệu quan hệ phổ biến

Hiện nay, có rất nhiều RDBMS (hệ quản trị cơ sở dữ liệu quan hệ) phổ biến có sẵn để làm việc Bảng 1 đưa ra một cái nhìn ngắn gọn về một số các RDBMS phổ biến nhất

Bảng 1 Một số RDBMS phổ biến nhất

Oracle Là một RDBMS thương mại Nó được đánh giá là hệ quản trị cơ sở dữ liệu quan hệ đối tượng được sử dụng rộng rãi nhất hiện nay Khởi đầu với phần mềm quản trị cơ sở dữ liệu từ cách đây hơn 50 năm, cho đến hiện tại, ngoài Oracle Database Server, Oracle còn cung cấp khá nhiều sản phẩm khác để phục vụ cho các doanh nghiệp

Microsoft SQL Server

Microsoft SQL Server được phát triển từ năm 1989, sử dụng ngôn ngữ Assembly C, Linux, C++ Đây là một DBMS thương mại được rất nhiều người yêu

- Được viết bởi ngôn ngữ Assembly, C, C++

- Hoạt động trên hệ điều hành Windows và Linux

Trang 35

RDBMS Giới thiệu Tính năng, đặc điểm

thích và lựa chọn sử dụng bởi những tiện ích của nó

- Cung cấp, quản lý hiệu quả khối lượng của công việc

MySQL Là một RDBMS thương mại, sử dụng mã nguồn mở Hệ quản trị cơ sở dữ liệu này rất phổ biến, và thường được các lập trình web ưa chuộng sử dụng trong quá trình phát triển các ứng dụng hay website Với ưu điểm về tốc độ cũng như tính bảo mật được đánh giá cao, MySQL thích hợp với các ứng dụng có truy cập cơ sở dữ liệu trên Internet

- Được viết bởi ngôn ngữ C/C++

- Hoạt động trên Windows, Linux

- Tốc độ xử lý dữ liệu cao - Có thể khôi phục dữ liệu nếu cần

3.7.2 Hệ cơ sở dữ liệu phi quan hệ

Hệ cơ sở dữ liệu phi quan hệ là cơ sở dữ liệu không kết hợp mô hình table/key như các RDBMS khác Những loại cơ sở dữ liệu này đòi hỏi các kỹ thuật và quy trình xử lý dữ liệu để cung cấp các giải pháp cho các vấn đề dữ liệu lớn mà các công ty lớn gặp phải Cơ sở dữ liệu phi quan hệ (Non-relational database) phổ biến nhất được gọi là NoSQL

Hầu hết các hệ cơ sở dữ liệu phi quan hệ được kết hợp vào các trang Web lớn như Google, Yahoo!, Amazon, Facebook,… Các trang web này đưa ra một loạt các ứng dụng mới mỗi ngày với hàng triệu và hàng triệu người dùng, vì vậy họ sẽ không thể xử lý các lưu lượng truy cập lớn với các giải pháp RDBMS hiện có Do RDBMS không thể xử lý vấn đề, nên họ đã chuyển sang một loại DBMS mới có khả năng xử lý dữ liệu quy mô web theo cách phi quan hệ

NoSQL có khả năng mở rộng NoSQL sử dụng hệ thống BASE (về cơ bản là có sẵn và nhất quán) Non-RDBMS từ bỏ dạng bảng của các hàng và cột cơ sở dữ liệu quan hệ sử dụng có lợi cho các khung chuyên dụng để lưu trữ dữ liệu, có thể được truy cập bằng các API truy vấn đặc biệt Sự tồn lưu (Persistence) là một yếu tố quan trọng trong các cơ sở dữ liệu này Để cho phép thông lượng nhanh với số lượng lớn dữ liệu, tuỳ chọn tốt nhất cho hiệu suất là "bộ nhớ trong", thay vì đọc và ghi từ ổ đĩa

Cơ sở dữ liệu quan hệ sử dụng ACID, đảm bảo tính thống nhất của dữ liệu trong mọi tình huống quản lý dữ liệu nhưng rõ ràng mất nhiều thời gian hơn để xử lý vì tất cả các mối quan hệ đó và tính chất phân nhánh của nó Tuy nhiên hệ thống BASE đã nới lỏng các yêu cầu về tính nhất quán để đạt được tính sẵn sàng và phân vùng tốt hơn để có khả năng mở rộng tốt hơn

v Các Non-RDBMS phổ biến hiện nay

Trang 36

- Document database (CouchDB, MongoDB): dữ liệu thêm vào sẽ được lưu trữ dưới dạng cấu trúc JSON tự do hoặc document, ở đó dữ liệu có thể là bất kỳ dạng nào từ số nguyên đến chuỗi dữ liệu đến văn bản dạng tự do

- Key-value stores (Redis, Riak) Các giá trị dạng tự do, từ các số nguyên hoặc chuỗi đơn giản đến các tài liệu JSON phức tạp, truy cập được trong cơ sở dữ liệu sử dụng các phím

- Wide column stores (HBase, Cassandra): dữ liệu được lưu trữ dạng cột thay vì theo hàng như trong hệ thống SQL thông thường Bất kỳ số cột nào (và do đó có nhiều loại dữ liệu khác nhau) có thể được nhóm hoặc tổng hợp khi cần thiết cho các truy vấn hoặc chế độ xem dữ liệu

- Graph database (Neo4j): dữ liệu được biểu diễn dưới dạng mạng hoặc đồ thị các đối tượng và mối quan hệ của các đối tượng đó, với mỗi node trong biểu đồ là một đoạn dữ liệu dạng tự do

3.7.3 So sánh cơ sở dữ liệu quan hệ và cơ sở dữ liệu phi quan hệ

Bảng 2 So sánh cơ sở dữ liệu quan hệ và cơ sở dữ liệu phi quan hệ Đặc điểm Cơ sở dữ liệu quan hệ Cơ sở dữ liệu phi quan hệ

Kiểu dữ liệu Khó lưu trữ kiểu dữ liệu phong phú Có thể lưu trữ bất kỳ loại dữ liệu nào

Nhân rộng Khó để nhân rộng, chi phí không rẻ Nhân rộng là tự động và trong suốt

Chi phí Chi phí xây dựng và bảo trì đắt Ít tốn chi phí hơn so với cơ sở dữ liệu quan hệ

Hiển thị Hiển thị dữ liệu trong bảng và hàng Hiển thị dữ liệu dưới dạng JSON

Truy vấn Ngôn ngữ truy vấn có cấu trúc (SQL), làm cho khả năng bị tấn công là khả thi

Truy vấn đối tượng: trực quan, chuyển một tài liệu để giải thích những gì bạn đang truy vấn

Không hỗ trợ, nhưng các thực thi đơn lẻ là các nguyên tử

Trang 37

Đặc điểm Cơ sở dữ liệu quan hệ Cơ sở dữ liệu phi quan hệ

Lược đồ Yêu cầu xác định bảng và cột trước khi lưu trữ Mỗi hàng có cùng cột

Không có lược đồ, thả trong tài liệu Hai tài liệu trong cùng một thu thập có thể có các trường khác nhau

3.7.5 Microsoft SQL Server

Hình 11 Microsoft SQL Server

SQL Server là một RDBMS được phát triển bởi tập đoàn Microsoft Tương tự như phần mềm RDBMS khác, SQL Server được xây dựng dựa trên SQL, một ngôn ngữ

Trang 38

lập trình tiêu chuẩn để tương tác với các cơ sở dữ liệu quan hệ Máy chủ SQL được liên kết với Transact-SQL (T-SQL), triển khai SQL Microsoft Microsoft bổ sung một tập hợp các cấu trúc lập trình độc quyền SQL Server hoạt động độc quyền trên môi trường Windows trong hơn 20 năm Năm 2016, Microsoft đã cung cấp nó trên Linux SQL Server 2017 thường có sẵn vào tháng 10 năm 2016 chạy trên cả Windows và Linux

3.7.6 MySQL

Hình 12 MySQL

Được phát triển lần đầu vào năm 1995 và đang được quản lý bởi tập đoàn Oracle Có thể nói MySQL đang là cơ sở dữ liệu đang được dùng phổ biến nhất hiện nay MySQL là một hệ thống quản trị cơ sở dữ liệu mã nguồn mở hoạt động theo mô hình client-server MySQL được tích hợp Apache, PHP MySQL quản lý dữ liệu thông qua các cơ sở dữ liệu Mỗi cơ sở dữ liệu có thể có nhiều bảng quan hệ chứa dữ liệu MySQL cũng có cùng một cách truy xuất và mã lệnh tương tự với ngôn ngữ SQL

3.7.7 MongoDB

Hình 13 MongoDB

Là hệ cơ sở dữ liệu phi quan hệ (NoSQL - Non-relational database) và là cơ sở dữ liệu không kết hợp mô hình table/key như hệ cơ sở dữ liệu SQL khác Những loại cơ sở dữ liệu này có thể mở rộng dễ dàng do tính phi cấu trúc của nó, quá trình triển khai hệ thống nhanh chóng mà không biết trước cấu trúc dữ liệu sẽ lưu

MongoDB lưu trữ dữ liệu trong các tài liệu linh hoạt, giống như JSON, có nghĩa là các trường có thể thay đổi từ tài liệu này sang tài liệu khác và cấu trúc dữ liệu có thể được thay đổi theo thời gian Mô hình tài liệu ánh xạ tới các đối tượng trong code, giúp dữ liệu được dễ dàng làm việc với nó

MongoDB là miễn phí và là nguồn mở Bên cạnh đó, tốc độ truy vấn nhanh, chính xác đã được kiểm chứng bởi các công ty, tập đoàn lớn trên thế giới như Ebay, Adobe, Google

Trang 39

3.7.8 Redis

Hình 14 Redis

Redis (REmote DIctionary Server) là một mã nguồn mở được dùng để lưu trữ dữ liệu có cấu trúc, có thể sử dụng như một cơ sở dữ liệu, bộ nhớ cache hay một message broker Nó là hệ thống lưu trữ dữ liệu với dạng KEY-VALUE rất mạnh mẽ và phổ biến hiện nay Bên cạnh lưu trữ key-value trên RAM giúp tối ưu hiệu năng, Redis còn có cơ chế sao lưu dữ liệu trên đĩa cứng cho phép phục hồi dữ liệu khi gặp sự cố Redis cung cấp thời gian phản hồi ở tốc độ chưa đến một mili giây, giúp thực hiện hàng triệu yêu cầu mỗi giây cho các ứng dụng thời gian thực Redis thường được chọn sử dụng cho hoạt động lưu trữ bộ nhớ đệm, quản lý phiên, trò chơi, bảng xếp hạng, phân tích theo thời gian thực

v Đặc điểm của Redis

- Kho dữ liệu trong bộ nhớ: toàn bộ dữ liệu Redis nằm trong bộ nhớ chính của máy chủ, trái với cơ sở dữ liệu thông thường phần lớn các tác vụ đều yêu cầu truy cập qua lại tới ổ đĩa, kho dữ liệu trong bộ nhớ như Redis không phải mất thời gian cho truy cập ổ đĩa, do đó kho dữ liệu này có thể hỗ trợ thêm khá nhiều tác vụ và có thời gian phản hồi nhanh hơn Kết quả là hiệu suất nhanh thấy rõ với các tác vụ đọc hoặc ghi thông thường, hỗ trợ hàng triệu tác vụ mỗi giây

- Cấu trúc dữ liệu linh hoạt

- Sao chép và độ bền: Redis sử dụng kiến trúc bản Master-Slave và hỗ trợ sao chép không đồng bộ trong đó có thể sao chép dữ liệu sang nhiều máy chủ bản sao

- Khả năng mở rộng: Redis là dự án mã nguồn mở được một cộng đồng đông đảo ủng hộ Không có giới hạn về nhà cung cấp hoặc công nghệ vì Redis có tính tiêu chuẩn mở, hỗ trợ định dạng dữ liệu mở và tập hợp các máy chủ

- Đơn giản và dễ sử dụng: Redis đơn giản hóa bằng cách cho phép bạn viết ít dòng lệnh hơn để lưu trữ, truy cập và sử dụng dữ liệu trên ứng dụng

3.7.9 Kết luận và lựa chọn

Dựa vào đối tượng mà đề tài hướng tới, hệ thống cần phải lưu một lượng lớn dữ liệu, bao gồm các tập dữ liệu có thuộc tính cố định lẫn các tập dữ liệu có thuộc tính thay đổi theo thời gian, chi phí xây dựng được duy trì ổn định, thời gian truy vấn nhanh Vì vậy, việc kết hợp sử dụng cả hệ cơ sở dữ liệu quan hệ và phi quan hệ cho hệ thống là hợp lý, phù hợp với yêu cầu Với những phân tích và đánh giá trên, nhóm đã quyết định

Trang 40

sử dụng đồng thời MongoDB và Oracle làm cơ sở dữ liệu cho hệ thống Bên cạnh đó, nhóm còn dùng Redis để lưu trữ dữ liệu cache ngay phiên làm việc để tăng tốc độ xử lý

3.8 Websocket và SocketIo 3.8.1 Websocket

Websocket là giao thức chuẩn cho trao đổi dữ liệu hai chiều giữa client và server Giao thức WebSocket không chạy trên HTTP, thay vào đó nó thực hiện trên giao thức TCP Người ta thường dùng Websocket thay vì HTTP cho những trường hợp yêu cầu real time (thời gian thực) Ví dụ bạn muốn hiển thị biểu đồ, chỉ số chứng khoán, web chat,… thì không thể gửi lệnh AJAX liên tiếp tới server để lấy dữ liệu mới rồi cập nhật lên màn hình, như thế sẽ tốn nhiều tài nguyên, traffic

3.8.2 SocketIo

Socket.io là một module của NodeJs Được xây dựng nhằm mục đích tạo ra real time NodeJS application Socket.io cung cấp cho lập trình viên các đặc trưng như event, room và tự động phục hồi lại kết nối Khi include Socket.io module vào trong ứng dụng thì nó sẽ cung cấp hai object đó là: socket server quản lý functionality phía server và socket client điều khiển functionality phía client Khi client muốn kết nối tới Socket.io server, nó sẽ gửi cho server một “handshake HTTP request” Server sẽ phân tích request đó với những thông tin cần thiết trong suốt quá trình kết nối Nó sẽ tìm cấu hình của middleware mà đã được đăng ký với server và thực thi chúng trước khi đưa ra sự kiện kết nối Khi kết nối thành công thì connection event listener được thực thi, tạo ra một instance mới của socket có thể coi như định danh của client mà mỗi một client kết nối tới sẽ có một định danh

Ngày đăng: 30/07/2024, 23:43

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN