You are on page 1of 128

BỘ CÔNG THƢƠNG

TRƢỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM


KHOA CÔNG NGHỆ THÔNG TIN

NGUYỄN TUẤN AN
LÊ THỊ NGỌC HÂN

TÍCH HỢP HỆ THỐNG ĐĂNG KÝ


TUYỂN DỤNG NHÂN SỰ
TRÊN NỀN TẢNG ĐIỆN TOÁN ĐÁM MÂY

Ngành: Công Nghệ Thông Tin

Giảng viên hƣớng dẫn: ThS. Trƣơng Bá Phúc

TP. HỒ CHÍ MINH, THÁNG 01 NĂM 2021


INDUSTRIAL UNIVERSITY OF HO CHI MINH CITY
FACULTY OF INFORMATION TECHNOLOGY

NGUYEN TUAN AN
LE THI NGOC HAN

INTEGRATING REGISTRATION SYSTEM FOR


HUMAN RECRUITMENT
ON CLOUD COMPUTING

Major: Information Technology

Instructor: MSc. Truong Ba Phuc

HO CHI MINH CITY, JANUARY 2021


Integrated human resource registration system
on cloud computer
ABSTRACT

Title of topic: "Integrating registration system for human recruitment on cloud


computing".
• Reasons for choosing topics
In addition to technological developments during population explosion, the
demand for jobs is considered to be a major challenge for working-age individuals
looking for work. Currently there are various applications being built to help
individuals find suitable jobs at no cost, while also facilitating businesses to find
suitable candidates for their businesses. Famous job search websites can be referred
to as Vietnamworks.com, careerbuilder.vn, careerlink.vn,… These job search
applications however tend to favor a certain group of candidates. Therefore, my
team has chosen the topic: “Integrating registration system for human recruitment
on cloud computing platform” in order to support job hunting for students who need
to find jobs and these will offer job diversity for many different candidates. It helps
new graduates and individuals have opportunities to find jobs suitable to their own
capabilities and qualifications.
 Difficulties to be solved
Although many technologies and platforms can be used for a personal
recruitment application, in order to easily access cross-platform both on mobile
devices and computers, banking on web technology will bring high efficiency and
least effort. In this graduation thesis, my team will go into research and
development of my application "Integrating registration system for human
recruitment on cloud computing platform" on NodeJS platform and use the
administration system of new generation. New generation NoSQL database to build
applications to help candidates find the most suitable job for themselves.
 Solution and implementation method
We will focus on researching the application platform NodeJS together with
technology relating to NoSQL database. The potential of applications on this
platform in the realm of Web will be Web Application.
To build the system from the set idea, firstly, the theme will make research
so as to develop a platform for application development and then study how to
perform process design analysis of how some websites operate and how to get it
implemented on a website.
• Result
Creating a website application that helps candidates find the best jobs for
themselves.
• Final evaluation and development direction
We‟re waiting for the teachers' evaluation to make the website more
complete in the future.
LỜI CẢM ƠN

Trƣớc tiên, nhóm tôi xin cảm ơn các Thầy Cô Trƣờng Đại Học Công Nghiệp
Thành phố Hồ Chí Minh trong suốt ba học kỳ qua. Xin cảm ơn các Thầy Cô đã giúp
chúng tôi trau dồi những kiến thức về chuyên ngành cũng nhƣ các công nghệ mới
để đảm bảo đủ điều kiện và kiến thức làm Khóa luận Tốt nghiệp.
Xin cảm ơn các Thầy Cô Khoa Công Nghệ Thông Tin - Trƣờng Đại Học
Công Nghiệp Thành phố Hồ Chí Minh. Các Thầy Cô đã giúp chúng tôi hiểu biết
nhiều hơn về các kiến thức chuyên ngành và nhiều kỹ năng quan trọng. Đặc biệt,
nhóm tôi xin chân thành cám ơn Thầy Trương Bá Phúc - Ngƣời đã trực tiếp tận
tình hƣớng dẫn cũng nhƣ cung cấp tài liệu, thông tin khoa học cần thiết cho bài luận
này lời cảm ơn chân thành và sâu sắc nhất. Mặc dù rất bận rộn nhƣng Thầy vẫn luôn
tận tình hƣớng dẫn, giúp đỡ nhóm thực hiện Khóa luận tốt nghiệp này.
Khóa luận tốt nghiệp chuyên ngành Công Nghệ Thông Tin với Đề tài “Tích
hợp hệ thống đăng ký tuyển dụng nhân sự trên nền tảng điện toán đám mây”
là kết quả của quá trình cố gắng không ngừng nghỉ của nhóm tôi và đƣợc sự giúp đỡ
tận tình, động viên khích lệ của thầy cô, bạn bè và ngƣời thân. Qua đây, chúng tôi
xin gửi lời cảm ơn chân thành đến những ngƣời đã giúp đỡ nhóm trong thời gian
học tập - nghiên cứu khóa học vừa qua.
Cuối cùng, chúng tôi xin cảm ơn gia đình, ngƣời thân, bạn bè đã luôn bên
cạnh, ủng hộ, động viên.
Do giới hạn về kiến thức, khả năng lý luận, thời gian nên nhóm còn nhiều
thiếu sót và hạn chế. Kính mong sự chỉ dẫn, đóng góp của các Thầy, Cô để bài báo
cáo Khóa luận của nhóm đƣợc hoàn thiện hơn. Xin chân thành cảm ơn!
NHẬN XÉT CỦA GIÁO VIÊN HƢỚNG DẪN

.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................

TP. Hồ Chí Minh, ngày…..tháng……năm….


CHỮ KÝ CỦA GIẢNG VIÊN
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN 1

.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................

TP. Hồ Chí Minh, ngày…..tháng……năm….


CHỮ KÝ CỦA GIẢNG VIÊN
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN 2

.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................

TP. Hồ Chí Minh, ngày…..tháng……năm….


CHỮ KÝ CỦA GIẢNG VIÊN
LÝ DO CHỌN ĐỀ TÀI

Tên đề tài: “Tích hợp hệ thống đăng ký tuyển dụng nhân sự trên nền tảng điện
toán đám mây”
Cùng với sự phát triển và hội nhập của nền kinh tế Việt Nam trong những
năm gần đây. Nhu cầu về nguồn nhân lực, đặc biệt là nguồn nhân lực có trình độ
chuyên môn cũng ngày càng gia tăng. Các công ty ngày càng để tâm đến vấn đề xây
dựng đội ngũ nhân lực vững mạnh, tuyển chọn đúng ngƣời, đúng vị trí cho công ty.
Mặc dù, sinh viên ra trƣờng mỗi năm đều tăng nhƣng cơ hội tìm kiếm việc làm thật
sự phù hợp với năng lực của bản thân gặp nhiều khó khăn.
Từ xƣa đến nay, nguồn lực con ngƣời luôn đóng vai trò quan trọng trong
hoạt động của các tổ chức. Nguồn nhân lực là yếu tố số một quyết định đến sự
thành công hay thất bại của tổ chức. Muốn có đƣợc nguồn nhân lực tốt, đáp ứng
đƣợc các yêu cầu của công việc, tổ chức cần coi trọng vấn đề quản trị nguồn nhân
lực, đặc biệt là hoạt động tuyển dụng. Tuyển dụng là đầu vào của quá trình quản trị
nguồn nhân lực và nó ảnh hƣởng đến chất lƣợng nguồn nhân lực trong tổ chức.
Quyết định tuyển dụng đƣợc xem là quyết định quan trọng nhất giúp tổ chức trong
tƣơng lai có một đội ngũ lao động có trình độ chuyên môn cao, đáp ứng đƣợc các
yêu cầu công việc, nâng cao hiệu quả kinh doanh thúc đẩy kinh tế phát triển. Đồng
thời, tuyển dụng tốt sẽ giúp cho ngƣời lao động đƣợc làm việc ở những vị trí phù
hợp với năng lực, sở trƣờng, phát huy đƣợc động lực làm việc và làm tăng năng suất
lao động. Do đó, hoạt động tuyển dụng đƣợc các công ty quan tâm đúng mức.
Qua quá trình tìm hiểu nhu cầu việc làm của các trang thông tin tuyển dụng
trên internet, nhóm tôi nhận thấy họ chỉ giới thiệu tìm việc cho một nhóm ứng viên
nhất định cho nên nhóm quyết định chọn đề tài: “Tích hợp hệ thống đăng ký tuyển
dụng nhân sự trên nền tảng điện toán đám mây” làm Khóa luận tốt nghiệp để giúp
cho sinh viên mới ra trƣờng và các cá nhân có cơ hội tìm việc làm phù hợp với năng
lực, trình độ của bản thân.
MỤC LỤC
Chƣơng 1. GIỚI THIỆU ............................................................................................................................ 1
1.1 Giới thiệu ............................................................................................................................................ 1
1.2 Đối tƣợng và phạm vi nghiên cứu ............................................................................................... 2
1.2.1 Lý thuyết..................................................................................................................................... 2
1.2.2 Thực tiễn..................................................................................................................................... 2
Chƣơng 2. CƠ SỞ LÝ THUYẾT ............................................................................................................ 3
2.1. Nền tảng xây dựng ứng dụng NodeJS ...................................................................................... 3
2.1.1 Đặc điểm của NodeJS ............................................................................................................. 4
2.1.2 Cài đặt môi trƣờng NodeJS và các công cụ phát triển lên hệ điều hành Windows............... 5
2.1.3 Phát triển ứng dụng với NodeJS .......................................................................................... 8
2.1.4 Quản lý package của NodeJS ............................................................................................ 12
2.1.5 Các package thông dụng trong NodeJS và cách cài đặt ............................................ 16
2.2 Kiểu dữ liệu JSON ........................................................................................................................ 16
2.2.1 Giới thiệu................................................................................................................................. 17
2.2.2 Kiểu dữ liệu và cú pháp ...................................................................................................... 17
2.2.3 Kiểu dữ liệu MIME - Lƣợc đồ JSON (Schema) .......................................................... 18
2.2.4 Cú pháp JSON ....................................................................................................................... 19
2.3 Kiến trúc Restful API................................................................................................................... 20
2.3.1 Restful API là gì? .................................................................................................................. 20
2.3.2 Cách hoạt động của Restful API ...................................................................................... 22
2.3.3 Các trạng thái của request .................................................................................................. 23
2.4 SOAP ............................................................................................................................................... 24
2.4.1. Giới thiệu SOAP .................................................................................................................. 24
2.4.2. Đặc trƣng SOAP .................................................................................................................. 26
2.4.3. Cấu trúc một message theo dạng SOAP ....................................................................... 27
2.4.4. Những kiểu truyền thông ................................................................................................... 28
2.4.5. Mô hình dữ liệu .................................................................................................................... 28
2.4.6 Ƣu điểm của SOAP .............................................................................................................. 29
2.5 Web server ...................................................................................................................................... 29
2.5.1. Giới thiệu Web server ........................................................................................................ 29
2.5.2. Các đặc tính của Web server ............................................................................................ 31
2.5.3. Các bƣớc lấy dữ liệu của một website ........................................................................... 31
2.5.4. Các loại Web server phổ biến hiện nay ......................................................................... 32
2.6 Web service..................................................................................................................................... 33
2.6.1 Giới thiệu Web service ........................................................................................................ 33
2.6.2 Các thành phần của web service ....................................................................................... 34
2.6.3 Các lợi ích mang lại từ Web service ............................................................................... 34
2.6.4 Đặc điểm Web service ....................................................................................................... 35
2.6.5 Cách thức hoạt động Web service ................................................................................. 36
2.7 Cơ sở dữ liệu NoSQL .................................................................................................................. 37
2.7.1 NoSQL là gì? ......................................................................................................................... 37
2.7.2 Lịch sử NoSQL...................................................................................................................... 38
2.7.3 Kiến trúc của NoSQL .......................................................................................................... 39
2.7.4 Đặc điểm của NoSQL .......................................................................................................... 39
2.7.5 Các thuật ngữ thƣờng sử dụng trong NoSQL ............................................................... 40
2.7.6 So sánh giữa NoSQL và SQL............................................................................................ 41
2.7.7 Sự lựa chọn giữa NoSQL và SQL.................................................................................... 43
2.8 Hệ quản trị cơ sở dữ liệu MongoDB ........................................................................................ 44
2.8.1 Giới thiệu................................................................................................................................. 44
2.8.2 Lịch sử phát triển MongoDB ............................................................................................. 44
2.8.3 Đặc điểm của MongoDB .................................................................................................... 45
2.8.4 Mô hình dữ liệu ..................................................................................................................... 45
2.8.5 Thiết kế mô hình dữ liệu ..................................................................................................... 49
2.8.6 Chỉ mục.................................................................................................................................... 57
2.8.7 Các bƣớc triển khai .............................................................................................................. 58
2.8.8 Phân mảnh............................................................................................................................... 59
2.8.9 Mô hình truy vấn ................................................................................................................... 61
2.9 Cơ sở dữ liệu SQL ........................................................................................................................ 62
2.9.1 SQL là gì? ............................................................................................................................... 62
2.9.2 Lịch sử SQL ........................................................................................................................... 63
2.9.3 Chức năng của SQL ............................................................................................................. 63
2.9.4 Đặc điểm của SQL................................................................................................................ 64
2.10 Hệ quản trị cơ sở dữ liệu SQL (SQL Server) ..................................................................... 65
2.10.1 SQL Server là gì? ............................................................................................................... 65
2.10.2 Lịch sử của SQL Server.................................................................................................... 65
2.10.3 Chức năng, vai trò của hệ quản trị cơ sở dữ liệu ................................................................ 66
2.10.4 Kiến trúc của SQL Server ................................................................................................ 67
2.11 Điện toán đám mây - Cloud Computing .............................................................................. 68
2.11.1 Điện toán đám mây là gì? ................................................................................................ 68
2.11.2 Lịch sử điện toán đám mây.............................................................................................. 68
2.11.3 Phân loại mô hình điện toán đám mây ......................................................................... 69
2.11.4 Các mô hình cung cấp điện toán đám mây ................................................................. 72
2.11.5 Lợi ích của điện toán đám mây ...................................................................................... 73
2.11.6 Đối tƣợng sử dụng điện toán đám mây ........................................................................ 74
2.11.7 Phƣơng thức hoạt động của điện toán đám mây........................................................ 74
2.11.8 Ứng dụng của điện toán đám mây ................................................................................. 76
Chƣơng 3. PHÂN TÍCH VÀ THIẾT KẾ ........................................................................................... 78
3.1 Tổng quan ........................................................................................................................................ 78
3.1.1 Giới thiệu ứng dụng ............................................................................................................. 78
3.1.2 Lý do chọn ứng dụng ........................................................................................................... 78
3.2 Mô tả ứng dụng “Tích hợp hệ thống đăng ký tuyển dụng nhân sự trên nền tảng điện
toán đám mây” ...................................................................................................................................... 79
3.3 Chức năng của ứng dụng ............................................................................................................ 80
3.4 Mô tả chức năng của ứng dụng ................................................................................................. 81
3.4.1 Use Case .................................................................................................................................. 81
3.4.2 Mô tả Use Case...................................................................................................................... 82
3.4.3 Class Diagram ........................................................................................................................ 86
3.4.4 Sequence Diagram ................................................................................................................ 87
3.4.5 Deployment Diagram........................................................................................................... 92
3.5 Thiết kế ứng dụng ......................................................................................................................... 93
Chƣơng 4. HIỆN THỰC VÀ XÂY DỰNG ỨNG DỤNG............................................................ 97
4.1 Xây dựng Ứng dụng ..................................................................................................................... 97
4.1.1 Xây dựng Server NodeJS ................................................................................................... 97
4.1.2 Giao Diện của ứng dụng .................................................................................................. 101
4.1.3 Kiểm nghiệm đánh giá ứng dụng .................................................................................. 102
Chƣơng 5. KẾT LUẬN ........................................................................................................................ 105
5.1 Kết quả đạt đƣợc......................................................................................................................... 105
5.1.1 Về mặt lý thuyết ................................................................................................................. 105
5.1.2 Về mặt ứng dụng ................................................................................................................ 105
5.2 Hƣớng phát triển......................................................................................................................... 106
TÀI LIỆU THAM KHẢO ................................................................................................................... 107
PHỤ LỤC ................................................................................................................................................. 108
MỤC LỤC HÌNH ẢNH

Hình 2.1 Trang download phiên bản NodeJS với các phiên bản hệ điều hành khác
nhau. ............................................................................................................................... 5
Hình 2.2 Màn hình cài đặt NodeJS ................................................................................ 6
Hình 2.3 Đoạn code mô tả việc sử dụng các biến đƣợc khai báo trong module............ 9
Hình 2.4 Đoạn code ví dụ về lập trình bất đồng bộ ..................................................... 10
Hình 2.5 Minh họa vấn đề xung đột các version trong 1 dự án lập trình .................... 13
Hình 2.6 File Package.json chứa tên và phiên bản của các package của một dự án
NodeJS ......................................................................................................................... 15
Hinh 2.7 Một biểu diễn JSON mô tả thông tin về một công việc ................................ 17
Hình 2.8 Ví dụ một đoạn Json đƣợc yêu cầu kiểm tra tính hợp lệ của văn bản JSON 19
Hình 2.9 Lƣợc đồ JSON dùng kiểm tra tính hợp lệ dữ liệu của văn bản JSON .......... 19
Hình 2.10 Mô hình thiết kế của Restful API................................................................ 21
Hình 2.11 Cấu trúc của 1 văn bản Json đƣợc trả về khi client yêu cầu với phƣơng
thức “GET” .................................................................................................................. 22
Hình 2.12 Mô tả hoạt động cách hoạt động của Restful API ...................................... 23
Hình 2.13 Mô hình hoạt động của Web server ............................................................ 30
Hình 2.14 Web Services Framework ........................................................................... 35
Hình 2.15 Cấu trúc của MongoDB .............................................................................. 46
Hình 2.16 Ví dụ về tài liệu trong MongoDB. ............................................................. 47
Hình 2.17 Ví dụ Thêm vào bộ sƣu tập jobs ................................................................ 48
Hình 2.18 Ví dụ về trƣờng dữ liệu trong MongoDB .................................................. 48
Hình 2.19 Tƣơng quan giữa các khái niệm của SQL và MongoDB ........................... 49
Hình 2.20 Đám mây công cộng.................................................................................... 69
Hình 2.21 Đám mây riêng ............................................................................................ 70
Hình 2.22 Đám mây cộng đồng ................................................................................... 71
Hình 2.23 Phƣơng thức hoạt động của điện toán đám mây ......................................... 75
Hình 2.24 Điện toán đám mây có thể dùng để chia sẻ dữ liệu..................................... 76
Hình 3.1 Sơ đồ phân rã chức năng của ứng viên ......................................................... 80
Hình 3.2 Sơ đồ phân giải chức năng của ngƣời tuyển dụng ........................................ 80
Hình 3.3 Sơ đồ phân giải chức năng của ngƣời quản trị .............................................. 81
Hình 3.4 Sơ đồ Use Case của ứng viên, ngƣời tuyển dụng và ngƣời quản trị trong hệ
thống ............................................................................................................................. 81
Hình 3.5 Sơ đồ class diagram....................................................................................... 86
Hình 3.6 Chức năng đăng nhập ................................................................................... 87
Hình 3.7 Chức năng đăng ký........................................................................................ 87
Hình 3.8 Chức năng ứng tuyển .................................................................................... 88
Hình 3.9 Chức năng lƣu tin tuyển dụng ....................................................................... 88
Hình 3.10 Chức năng xem thông tin công ty ............................................................... 89
Hình 3.11 Chức năng cập nhật thông tin công ty......................................................... 89
Hình 3.12 Chức năng tạo mới thông tin công ty .......................................................... 89
Hình 3.13 Chức năng xóa một công ty ........................................................................ 90
Hình 3.14 Chức năng xem tin tuyển dụng ................................................................... 90
Hình 3.15 Chức năng cập nhật tin tuyển dụng ............................................................. 91
Hình 3.16 Chức năng tạo mới tin tuyển dụng .............................................................. 91
Hình 3.17 Chức năng xóa một tin tuyển dụng ............................................................. 92
Hình 3.18 Sơ đồ deployment diagram ......................................................................... 92
Hình 4.1 Cấu hình phía server NodeJS ........................................................................ 98
Hình 4.2 Mã nguồn file index.router.js ........................................................................ 99
Hình 4.3 Chi tiết file router đối với từng đối tƣợng cụ thể .......................................... 99
Hình 4.4 Các Framework đƣợc sử dụng trong ứng dụng .......................................... 100
Hình 4.5 Các partial layout đƣợc nằm trong 1 layout chính là layout.ejs ................. 100
Hình 4.6 Trang đăng ký tài khoản .............................................................................. 101
Hình 4.7 Trang đăng nhập vào hệ thống .................................................................... 101
Hình 4.8 Trang chủ của ứng dụng .............................................................................. 102
Hình 4.9 Trang quản trị của ứng dụng (quản trị bài đăng tin tuyển dụng) ................ 102
DANH MỤC CÁC BẢNG BIỂU

Bảng 2.1 Một số phƣơng thức chuẩn của 1 Restful API...................................... 21


Bảng 2.2 Các mã trạng thái thông dụng request .................................................. 23
Bảng 2.3 So sánh giữa SQL và NoSQL ............................................................... 42
Bảng 2.4 Sự tƣơng quan giữa SQL và MongoDB ............................................... 61
Bảng 3.1 Mô tả chức năng đăng ký...................................................................... 82
Bảng 3.2 Mô tả chức năng đăng nhập .................................................................. 82
Bảng 3.3 Mô tả chức năng quản lý profile ........................................................... 83
Bảng 3.4 Mô tả chức năng ứng tuyển .................................................................. 83
Bảng 3.5 Mô tả chức năng lƣu tin tuyển dụng ..................................................... 84
Bảng 3.6 Mô tả chức năng xem thông tin Công ty .............................................. 84
Bảng 3.7 Mô tả chức năng Quản lý tin tuyển dụng ............................................. 84
Bảng 3.8 Bảng mô tả chức năng quản lý thông tin Công ty ................................ 85
Bảng 4.1 Thành phần và các thông số dùng để thực nghiệm ứng dụng ............ 103
Bảng 4.2 Kết quả thời gian của chức năng đăng ký một ngƣời dùng mới......... 103
Bảng 4.3 Kết quả thời gian của chức năng đăng tin tuyển dụng ....................... 104
DANH MỤC CÁC TỪ VIẾT TẮT

STT Ký tự viết tắt Viết đầy đủ Diễn giải


Atomicity, consistency, Là bốn thuộc tính quan trọng của
1 ACID isolation và durability một hệ quản trị cơ sở dữ liệu khi
xử lý giao dịch.
Application Là các phƣơng thức, giao thức
2 API Programming Interface kết nối với các thƣ viện và ứng
dụng khác.
Database Management Hệ quản trị cơ sở dữ liệu
3 DBMS
System
Là một kiểu định dạng dữ liệu
tuân theo một quy luật nhất định
JavaScript Object mà hầu hết các ngôn ngữ lập
4 JSON
Notation trình hiện nay đều có thể đọc
đƣợc. JSON là một tiêu chuẩn
mở để trao đổi dữ liệu trên web.
Multiple Internet Mail Là một chuẩn Internet về định
5 MIME Extensions dạng cho thƣ điện tử dùng để gửi
các tài nguyên qua Internet.
Là công cụ tạo và quản lý các
6 NPM Node Package Manager thƣ viện lập trình Javascript cho
NodeJS
Relational Database Là hệ quản trị cơ sở dữ liệu quan
7 RDBMS
Management System hệ
Là một mô hình dịch vụ điện
8 SaaS Software as a service
toán đám mây
Uniform Resource Là một địa chỉ web, một tham
9 URL
Locator chiếu đến tài nguyên web
Báo cáo khóa luận tốt nghiệp 2020

Chƣơng 1. GIỚI THIỆU

1.1 Giới thiệu


Khi chúng ta nói đến các thành tựu khoa học thì việc sản xuất ra máy tính là
một tiếng vang lớn đối với khoa học kỹ thuật. Tuy nhiên, nhiều máy tính đơn lẻ
không thể truyền tải thông tin tài nguyên cho nhau. Chính vì vậy, mạng Internet ra
đời nhằm giải quyết vấn đề trên giúp cho máy tính có thể truyền tải tài nguyên cho
nhau. Để làm đƣợc điều này các máy phải “hiểu” lẫn nhau có nhiều kỹ thuật, trong
đó là thuật ngữ HTML, URL, HTTP. Đến nay, các công nghệ này vẫn đƣợc sử dụng
rộng rãi, ngoài ra tại thời điểm này Trình duyệt web và Web Server đã xuất hiện.
Ngày nay, cùng với sự bùng nổ của công nghệ, các trang web đã đƣợc phát
triển nhằm đáp ứng nhu cầu cho cá nhân, doanh nghiệp và tất cả chúng ta có thể
thấy những trang web chia sẻ tài nguyên nhƣ video nổi tiếng nhất là Youtube hay
những trang web mạng xã hội nhƣ Facebook kể cả các website mua sắm trực tuyến,
các nhà bán lẻ hoặc online đƣa các sản phẩm của mình lên trên trang xem và xem
nhƣ nó là một kênh bán hàng một cách tiếp cận mới cho khách hàng.
Bên cạnh sự phát triển về công nghệ trong quá trình bùng nổ dân số thì nhu
cầu việc làm đƣợc xem là một thách thức lớn đối với các cá nhân trong độ tuổi lao
động đang tìm việc làm. Hiện nay, chúng ta có nhiều ứng dụng đƣợc xây dựng để
hỗ trợ các cá nhân tìm việc làm phù hợp mà không mất phí nào, đồng thời cũng tạo
điều kiện cho các doanh nghiệp có thể tìm kiếm ứng viên phù hợp với đơn vị của
mình. Các trang web tìm việc làm nổi tiếng có thể đƣợc kể đến nhƣ
Vietnamworks.com, careerbuilder.vn, careerlink.vn,… Tuy nhiên, các ứng dụng tìm
việc này thƣờng có hƣớng nghiêng về một nhóm ứng viên nhất định. Vì vậy, nhóm
tôi chọn đề tài: “Tích hợp hệ thống đăng ký tuyển dụng nhân sự trên nền tảng điện
toán đám mây” để hỗ trợ tìm việc làm cho ứng viên cần tìm việc và các công việc
này sẽ đa dạng cho nhiều ứng viên khác nhau.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 1


Báo cáo khóa luận tốt nghiệp 2020

Tuy rằng có nhiều công nghệ và nền tảng thực hiện đƣợc một ứng dụng
tuyển dụng nhƣng để dễ dàng truy cập đa nền tảng cả trên thiết bị di động, trên máy
tính thì dựa vào công nghệ web sẽ mang đến hiệu quả cao và ít tốn công sức nhất.
Trong Khóa luận tốt nghiệp này, nhóm tôi sẽ đi vào nghiên cứu, phát triển ứng dụng
“Tích hợp hệ thống đăng ký tuyển dụng nhân sự trên nền tảng điện toán đám mây”
của mình trên nền tảng NodeJS và sử dụng hệ quản trị cơ sở dữ liệu (CSDL)
NoSQL thế hệ mới để xây dựng ứng dụng giúp các ứng viên có thể tìm việc làm
phù hợp nhất cho chính mình.
1.2 Đối tƣợng và phạm vi nghiên cứu
1.2.1 Lý thuyết
Nhằm xây dựng một ứng dụng phù hợp với vấn đề đặt ra, về mặt lý thuyết đề
tài sẽ tìm hiểu và nghiên cứu các lĩnh vực sau:
- Tìm hiểu nền tảng NodeJS, ngôn ngữ lập trình JavaScript và các thƣ viện
trong xây dựng ứng dụng website.
- Nghiên cứu tìm hiểu CSDL NoSQL và hệ quản trị CSDL MongoDB,…
- Nghiên cứu tìm hiểu CSDL SQL và Hệ quản trị cơ sở dữ liệu SQL
- Tìm hiểu cách tích hợp hệ quản trị CSDL SQL và NoSQL trên ngôn ngữ
NodeJS.
- Nghiên cứu lĩnh vực Big Data.
- Nghiên cứu về Cloud Computing.
1.2.2 Thực tiễn
Từ cơ sở lý thuyết đề tài xây dựng Web tuyển dụng với các tính năng sau:
- Tìm kiếm việc làm bằng cách nhập từ khóa.
- Cho phép nhân sự các công ty tham gia ứng tuyển.
- Đánh giá về công việc đƣợc đăng.
- Đăng ký tuyển dụng.
- Xem thông tin của công ty sắp ứng tuyển.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 2


Báo cáo khóa luận tốt nghiệp 2020

Chƣơng 2. CƠ SỞ LÝ THUYẾT

Trong chƣơng này chúng ta sẽ tập trung nghiên cứu tìm hiểu về nền tảng ứng
dụng là NodeJS cùng với các kỹ thuật có liên quan về cơ sở dữ liệu NoSQL. Các
tiềm năng của ứng dụng trên nền tảng này trong lĩnh vực Web cụ thể là Web
Application.
Để dựng đƣợc hệ thống với ý tƣởng đặt ra, trƣớc tiên đề tài sẽ nghiên cứu
một nền tảng phát triển ứng dụng. Sau đó chúng ta sẽ nghiên cứu cách thực hiện
phân tích, thiết kế quy trình, cách hoạt động của một số trang web và tìm cách hiện
thực lên một trang web.

2.1. Nền tảng xây dựng ứng dụng NodeJS


NodeJS là một nền tảng máy chủ đƣợc xây dựng trên công cụ JavaScript của
Google Chrome (V8 Engine). NodeJS đƣợc phát triển bởi Ryan Dahl vào năm 2009
và phiên bản mới nhất của nó là v0.10.36.
NodeJS là một nền tảng đƣợc xây dựng dựa trên thời gian chạy JavaScript
của Chrome để dễ dàng xây dựng các ứng dụng mạng nhanh và có thể mở rộng.
NodeJS sử dụng mô hình I/O hƣớng sự kiện, làm cho nó nhẹ, hiệu quả, hoàn hảo
cho các ứng dụng thời gian thực sử dụng nhiều dữ liệu chạy trên các thiết bị phân
tán.
NodeJS là một môi trƣờng chạy mã nguồn mở, đa nền tảng để phát triển các
ứng dụng chạy trên máy chủ. Các ứng dụng NodeJS đƣợc viết bằng JavaScript có
thể chạy trong thời gian chạy NodeJS trên OS X, Microsoft Windows và Linux.
NodeJS cung cấp một thƣ viện phong phú gồm các mô-đun JavaScript khác
nhau giúp đơn giản hóa việc phát triển các ứng dụng web sử dụng NodeJS ở mức độ
lớn.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 3


Báo cáo khóa luận tốt nghiệp 2020

2.1.1 Đặc điểm của NodeJS


Một số đặc điểm quan trọng khiến NodeJS trở thành lựa chọn hàng đầu cho
các nhà phát triển phần mềm:
Không đồng bộ và theo hƣớng sự kiện: Tất cả các API của thƣ viện NodeJS
là không đồng bộ (non-blocking). Về cơ bản, một máy chủ dựa trên NodeJS không
bao giờ đợi một API trả về dữ liệu. Máy chủ chuyển đến API tiếp theo sau khi gọi
nó và có cơ chế thông báo sự kiện của NodeJS giúp máy chủ nhận đƣợc phản hồi từ
lệnh gọi API trƣớc đó.
Chạy nhanh: Đƣợc xây dựng trên công cụ JavaScript V8 của Google
Chrome, thƣ viện NodeJS thực thi mã rất nhanh.
Đơn luồng nhƣng có khả năng mở rộng cao: NodeJS sử dụng mô hình
luồng đơn với các sự kiện lặp. Các cơ chế sự kiện giúp máy chủ phản hồi theo cách
không chặn và làm cho máy chủ có khả năng mở rộng cao so với cách truyền thống
tạo ra các luồng giới hạn để xử lý các yêu cầu. NodeJS sử dụng một chƣơng trình
đơn luồng và chƣơng trình này có thể cung cấp dịch vụ cho một số lƣợng lớn yêu
cầu lớn hơn nhiều so với các máy chủ truyền thống nhƣ Apache HTTP Server.
Không đệm: Các ứng dụng NodeJS không bao giờ lƣu trữ dữ liệu buffer. Các
ứng dụng này chỉ đơn giản là xuất dữ liệu theo khối.
Bản quyền: mã nguồn mở NodeJS đƣợc phát hành theo MIT License.
Với những ƣu điểm nêu trên NodeJS đang chứng tỏ mình là một đối tác công
nghệ hoàn hảo cho các lĩnh vực sau:
- Các ứng dụng về I/O.
- Ứng dụng truyền dữ liệu.
- Các ứng dụng về dữ liệu hƣớng đến thời gian thực.
- Các ứng dụng dựa trên JSON APIs.
- Các ứng dụng trang đơn lẻ (Single Page Application).
Hiện nay, nhiều hệ thống lớn đang sử dụng NodeJS nhƣ: Microsoft, Yahoo,
eBay, Uber,…

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 4


Báo cáo khóa luận tốt nghiệp 2020

2.1.2 Cài đặt môi trƣờng NodeJS và các công cụ phát triển lên hệ điều hành Windows
Để cài đặt môi trƣờng phát triển NodeJS, có hai cách là tải phiên bản cài đặt
từ trang chủ của NodeJS [1] trực tiếp hoặc sử dụng các công cụ hỗ trợ cài đặt gói
phần mềm bằng cách nhập vào dòng lệnh:
Trên Windows chúng ta sẽ cài đặt NodeJS bằng công cụ đồ họa:
Chúng ta dùng trình duyệt web để truy cập địa chỉ web:
https://nodejs.org/en/download/

Hình 2.1 Trang download phiên bản NodeJS


với các phiên bản hệ điều hành khác nhau.
Tùy theo phiên bản Windows đang sử dụng, chúng ta có thể tùy chọn phiên
bản 32-bit hoặc 64-bit và chờ cho trình duyệt tải file cài có tên “node-v12.18.4-
x64.msi” về và sau đó mở lên khi hoàn tất.
Sau khi file cài đƣợc khởi chạy Windows sẽ hiện ra 1 cửa sổ cài đặt nhƣ hình

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 5


Báo cáo khóa luận tốt nghiệp 2020

Hình 2.2 Màn hình cài đặt NodeJS

Chúng ta chọn Next và chọn thƣ mục cài đặt node sau đó hệ thống sẽ tự động
copy các file cài đặt vào bộ nhớ. Sau khi cài xong, chúng ta chọn finished để kết
thúc. Để kiểm tra kết quả cài NodeJS ta thực hiện nhấn Windows (hoặc Windows +
R) sau đó nhập CMD vào cửa sổ lệnh Run và bấm Enter. Command Line xuất hiện
chúng ta gõ câu lệnh bên dƣới.

node -v

Nếu cài đặt thành công hệ thống sẽ hiển thị thông tin phiên bản NodeJS đã
đƣợc cài đặt bên dƣới.
Microsoft Windows [Version 10.0.19041.508]
(c) 2020 Microsoft Corporation. All rights
reserved.

C:\Users\Nguyen Tuan An>node -v

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 6


Báo cáo khóa luận tốt nghiệp 2020

v12.18.3

C:\Users\Nguyen Tuan An>

Trên MacOS sử dụng công cụ HomeBrew[2] với câu lệnh:


Trƣớc hết mở Terminal và cài đặt HomeBrew (Nếu có rồi thì ta sẽ bỏ qua)
Và gõ câu lệnh:
/usr/bin/ruby -e "$(curl –fsSL https://raw.githubusercontent.com/Homebrew/
install/master/install)"

brew -v

Sử dụng câu lệnh bên dƣới để cài NodeJS version mới nhất

brew install node

Trên Linux (Ubuntu) dùng terminal và công cụ apt để cài đặt NodeJS.
Đầu tiên, chúng ta nên update tất cả package của hệ điều hành để đảm bảo
cho việc cài đặt NodeJS không gặp vấn đề

sudo apt-get update

Cài đặt NodeJS


sudo apt-get install nodejs
Cài đặt Node Package Manager (NPM)
sudo apt-get install npm

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 7


Báo cáo khóa luận tốt nghiệp 2020

Sau khi báo cài xong, chúng ta kiểm tra lại phiên bản của node bằng câu lệnh
nodejs -v
npm -v
Nếu cài đặt thành công hệ thống sẽ hiển thị ra version của node và version
của npm.
Ngoài những điều kiện tiên quyết là cài đặt môi trƣờng làm việc với NodeJS
chúng ta sẽ cần thêm trình soạn thảo (Editor), tuy nhiên các trình soạn thảo mặc
định của hệ điều hành không hỗ trợ tốt cho việc viết code. Cho nên để thuận tiện
cho quá trình phát triển thì cần có thêm các trình soạn thảo code, IDE. Một số IDE
miễn phí và nổi bật hiện nay nhƣ là: Visual Studio Code, Sublime Text, Notepad ++
và một số công cụ Editor cũng có phí nhƣ: Webstorm (miễn phí đối với email đăng
ký có tên miền “.edu.vn”), Visual Studio (bản Professional).

2.1.3 Phát triển ứng dụng với NodeJS


Nếu nhà phát triển web nào muốn xây dựng ứng dụng với NodeJS cần phải
biết và hiểu đƣợc các khái niệm nhƣ: module, lập trình bất đồng bộ, hàm gọi ngƣợc
(function callback), cách giao tiếp của chúng với nhau, các đối tƣợng, các lớp, các
hàm đƣợc cung cấp sẵn của framework. Một số định nghĩa và ví dụ minh họa.
Modules (Các Mô - đun) trong NodeJS tƣơng tự nhƣ các thƣ viện trong C,
C#, Java,... mỗi module là một đối tƣợng (Object) chứa các hàm, hằng số,... Việc
này giúp cho việc xây dựng các ứng dụng phức tạp trở nên dễ dàng hơn. Mỗi
module đóng gói tất cả các phƣơng thức, thông tin,... liên quan đến một đối tƣợng,
chức năng của Module. Ví dụ fs là module chứa các hàm, các hằng số liên quan đến
việc đọc, ghi dữ liệu của hệ thống. Ngoài các module đƣợc NodeJS cung cấp sẵn để
thao tác với hệ thống, NodeJS cho phép tạo ra module của riêng mình. Hơn nữa,
NodeJS đi kèm với trình quản lý gói npm[3] giúp cho việc cài đặt tích hợp các
module vào ứng dụng trở nên đơn giản.
Các thao tác chúng ta cần thiết để sử dụng một module là cài đặt module và
tham chiếu tới module.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 8


Báo cáo khóa luận tốt nghiệp 2020

- Cú pháp cài đặt bằng npm: npm install <tên package>.


Ví dụ để cài đặt module hapi (module hỗ trợ xây dựng ứng dụng web server):
npm install hapi
- Cú pháp gọi tham chiếu module: var<tên biến>=require(„<tên module>‟)
Ví dụ: var express = require(„express‟)
Trong ví dụ trên hàm require trả về tham chiếu tới module express đƣợc cài
đặt từ internet về thông qua lệnh npm install. Để tham chiếu tới một module cục bộ
trên hệ thống ta phải chỉ rõ đƣờng dẫn tới tập tin của module đó. Ví dụ: const job =
require('../app/controller/job.controller');
Có thể xem mỗi module là một đoạn mã đƣợc đóng gói lại với nhau, mã lệnh
bên trong module có phạm vi là private. Tƣơng tự nhƣ việc public một hàm của một
Class, bằng việc sử dụng đối tƣợng exports, giúp các hàm, các hằng private có thể
đƣa ra ngoài để sử dụng trên ứng dụng. Xem ví dụ sau:
Code

Hình 2.3 Đoạn code mô tả việc sử dụng các biến đƣợc khai báo trong module

Đoạn code trên tại dòng đầu tiên tạo ra hằng số vận tốc ánh sáng, hằng số
vanTocAnhSang chỉ có thể sử dụng trong nội bộ module đang định nghĩa ở trên qua
việc sử dụng đối tƣợng, hai hàm tiện ích tính quãng đƣờng và vận tốc có thể sử
dụng khi tham chiếu tới Module này.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 9


Báo cáo khóa luận tốt nghiệp 2020

Global Object (Đối tƣợng Toàn Cục): Các Object có sẵn ở tất cả module
bao gồm chúng ta không cần đƣa các đối tƣợng này vào ứng dụng của mình, thay
vào đó ta có thể sử dụng chúng trực tiếp. Các đối tƣợng này là Module, hàm, chuỗi
nhƣ là __filename đại điện cho tên tập tin của mã đƣợc thực thi, __dirname thể hiện
tên của thƣ mục mà đoạn mã đó đang thực thi, console, exports, global, module và
các function có sẵn bao gồm: required, setTimeout, một số class có sẵn nhƣ Buffer.
Asynchronous (Bất đồng bộ): Không giống nhƣ các ngôn ngữ lập trình C#,
C++, Java,... chƣơng trình sẽ chạy từng lệnh và chỉ thực hiện tiếp theo khi lệnh
trƣớc đó đã thực hiện xong, việc này sẽ sinh ra trạng thái chờ, JavaScript là ngôn
ngữ lập trình bất đồng bộ. Vì vậy, trong quá trình thực thi chƣơng trình có thể bỏ
qua một số bƣớc không cần thiết và thực hiện nhiều công việc cùng một lúc.
Một số ví dụ về bất đồng bộ

Hình 2.4 Đoạn code ví dụ về lập trình bất đồng bộ


Trong ví dụ trên theo trình tự thì ta sẽ thấy kết quả in ra console dòng đầu
tiên, rồi dòng thứ 2 đến dòng thứ 3. Tuy nhiên kết quả thực tế khi thực thi chƣơng
trình không nhƣ vậy lý do vì hàm setTimeOut là hàm bất đồng bộ. Khi chƣơng
trình gặp lệnh này chƣơng trình sẽ gọi sự kiện thực hiện lệnh này và không chờ lệnh
này thực hiện xong mới thực hiện các hàm tiếp theo bên dƣới. Khi hàm này thực
hiện xong sẽ trả về một sự kiện đƣợc thực hiện trong hàm done nếu có lỗi biến lỗi
sẽ đƣợc nhận trong tham số thứ nhất là err, ngƣợc lại nếu thành công biến lỗi sẽ có

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 10


Báo cáo khóa luận tốt nghiệp 2020

giá trị là null và giá trị đọc đƣợc sẽ nhận vào tham số thứ hai là data. Đây là cách
đƣợc quy ƣớc cho các hàm đƣợc gọi là xử lý bất đồng bộ.
Để thực hiện các lệnh một cách tuần tự, nhà phát triển sẽ lồng các câu lệnh
vào trong hàm callback. Trong một số trƣờng hợp cần nhiều các câu lệnh thực hiện
tuần tự sẽ tạo nên một cơ chế callback lồng nhau rất phức tạp, khó sử dụng và phát
hiện lỗi.
Để giải quyết tình trạng này tuy có một cơ chế đƣợc xây dựng đó là Promise
nhƣng đây không phải là cách giải quyết tối ƣu, ở phiên bản mới nhất của NodeJS
đã hỗ trợ cơ chế async/await theo chuẩn ES7. Đây là cách tối ƣu nhất trong vấn đề
bất đồng bộ của JavaScript.
Kiểu dữ liệu JSON: là viết tắt của Javascript Object Notation, một kiểu định
dạng dữ liệu tuân theo một quy luật nhất định mà hầu hết các ngôn ngữ lập trình
hiện nay đều có thể đọc đƣợc. JSON là định dạng lƣu trữ thông tin có cấu trúc, chủ
yếu đƣợc sử dụng để truyền dữ liệu giữa server và client.
Có hai yếu tố cốt lõi của object JSON: Keys và Values.
● Keys phải là chuỗi. Nó là chuỗi ký tự đƣợc bao quanh bởi dấu ngoặc kép.
● Values là một kiểu dữ liệu JSON hợp lệ. Nó có thể dạng array, object, chuỗi,
boolean, số hoặc rỗng.
Một object JSON bắt đầu và kết thúc bằng dấu ngoặc nhọn {}. Nó có thể có
hai hoặc nhiều cặp key/value với dấu phẩy để phân tách chúng. Trong khi mỗi key
đƣợc theo sau bởi dấu hai chấm để phân biệt với value, nhƣ ví dụ bên dƣới

{
"jobname": "Nhân viên tƣ vấn bảo hiểm",
"location": "TP Hồ Chí Minh",
"mucluong": "10000000"
}

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 11


Báo cáo khóa luận tốt nghiệp 2020

Chúng ta có hai cặp key/value ở đây: jobname, location và mucluong là


keys; Nhân viên tƣ vấn bảo hiểm, TP Hồ Chí Minh là values.

2.1.4 Quản lý package của NodeJS


Đối với các ngôn ngữ lập trình đƣợc phát triển bằng Javascript thì thứ ngôn
ngữ này đã tồn tại hơn hai mƣơi năm và là ngôn ngữ không ngừng phát triển. Trong
những năm trở lại đây Javascript đã có những bùng nổ bằng cách đƣợc sử dụng để
viết các thƣ viện lập trình web. Điều này khiến cho việc lập trình trở nên dễ dàng và
nhẹ nhàng hơn.
Giới thiệu quản lý các Module -Thƣ Viện (Package Manager)
Trong cộng đồng lập trình viên ngƣời ta chia sẽ rất nhiều đoạn code, Module
– Mô đun nhằm giúp cho khi có dự án mới chúng ta không phải phát triển những
phần cơ bản và làm mất thời gian của dự án. Mỗi module thƣ viện code có thể phụ
thuộc vào rất nhiều các mã nguồn khác nhau. Sau này, để dễ dàng trong việc quản
lý cho các module, các thƣ viện cho các dự án khác nhau thì ngƣời ta đã tạo công cụ
để quản lý các gói và phần mềm. Nó giải quyết các vấn đề trong một dự án lập trình
thƣờng gặp nhƣ xung đột phiên bản module, thƣ viện do mỗi ngƣời lại sử dụng
phiên bản khác nhau khiến cho code chạy đƣợc trên máy này lại không chạy đƣợc
trên máy khác.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 12


Báo cáo khóa luận tốt nghiệp 2020

Hình 2.5 Minh họa vấn đề xung đột các version trong một dự án lập trình

Đối với vấn đề gộp code lại giữa các thành viên trong dự án là một khó
khăn. Khi làm việc này ngƣời gộp code lại phải bao gồm gộp luôn những module,
thƣ viện liên quan lúc tải về do code có chứa các module, thƣ viện này nên dung
lƣợng rất lớn. Hai việc này khó khăn và ảnh hƣởng đến thời gian của dự án. Sau đó
có một công cụ ra đời, đó chính là Package Manager. Nó giúp các lập trình viên
hoặc các thành viên trong hệ thống tránh những hạn chế vừa nêu ở trên.
Các thành phần của Package Manager (PM) và nguyên tắc hoạt động
của Package Manager
Thông thƣờng một hệ thống (PM) bao gồm những thành phần cơ bản sau:
+ Package Manager: Có chức năng cài đặt trên máy chủ, quản lý việc cài đặt,
phiên bản của các package.
+ Repository: Đây đƣợc gọi là nơi chứa package (trên mạng) hay còn gọi là một
kho. Khi ngƣời lập trình viên cần một file nào đó sẽ dùng công cụ này tải về các
module –thƣ viện này về.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 13


Báo cáo khóa luận tốt nghiệp 2020

+ Local Package Database: mỗi dự án sẽ có local package database riêng chứa


thông tin chung bao gồm package, phiên bản, các phụ thuộc phiên bản của các dự
án trong dự án đó.
Công cụ quản lý Module - Module thƣ viện trong NodeJS
Khi nói đến NodeJS thì công cụ quản lý thƣ viện đƣợc sử dụng nhiều nhất là
“Node Package Management”. Theo nhƣ giới thiệu ba thành phần cơ bản của một
package manage thì đối với NPM cũng có 3 thành phần cơ bản là
+ Package Manager: NPM đây là command line tool để quản lý package đi kèm
với NodeJS
Cú pháp để cài đặt 1 thƣ viện: npm install <tên thƣ viện>
+ Repository: Có thể nói đây là kho chứa toàn bộ các package NodeJS
+Local Package Database: Mỗi một dự án NodeJS sẽ có chứa 1 file
“package.json” chứa các thông tin về tên package và phiên bản của chúng.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 14


Báo cáo khóa luận tốt nghiệp 2020

Hình ảnh 2.6 File Package.json chứa tên và phiên bản


của các package của một dự án NodeJS
Với các thành phần nhƣ trên, các ứng dụng NodeJS sẽ dễ dàng làm việc nhƣ
cập nhật một version của một package đơn giản chỉ gõ lệnh, cập nhật phiên bản ứng
dụng đó và công cụ sẽ tự động cập nhật lại tập tin Local Package Database. Khi gộp
code lại các thành viên trong dự án chỉ cần xác thực tập tin package.json (thƣờng là
1 file text có kích thƣớc nhỏ) thì các thƣ viện sẽ không bị xung đột với nhau, mọi
ngƣời đều sử dụng duy nhất một phiên bản của package đó. Đối với trƣờng hợp
Deploy code hoặc share code cho một máy tính khác, chúng ta không cần mang
những file package theo chỉ npm sẽ tìm file package.json để tải đúng các package
phiên bản tƣơng ứng từ internet về.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 15


Báo cáo khóa luận tốt nghiệp 2020

2.1.5 Các package thông dụng trong NodeJS và cách cài đặt
Đƣợc phát triển dựa trên ngôn ngữ Javascript, NodeJS có một số kho
package manage khổng lồ, một số thƣ viện đƣợc sử dụng phổ biến và hữu ích nhất
trong các dự án NodeJS nhƣ: Express, tiếp theo một package tiện ích là dùng để lấy
dữ liệu của phần body của trình duyệt, Sequelize cũng là một package dùng để kết
nối giữa ngôn ngữ Javascript với các hệ cơ sở dữ liệu SQL. Phần bên dƣới sẽ liệt kê
cụ thể chi tiết hai thƣ viện quan trọng trong dự án này:
Thƣ viện Express
Express là một framework dùng để phát triển ứng dụng web, hỗ trợ các giao
thức HTTP và Middleware tạo ra các API vô cùng mạnh mẽ giúp cho việc phát
triển ứng dụng đƣợc rút ngắn đi rất nhiều. Express hỗ trợ việc phát triển ứng dụng
theo mô hình MVC, mô hình đƣợc các lập trình viên sử dụng phổ biến cho lập trình
web, giúp định nghĩa giữa các router khi có các yêu cầu gửi đến máy chủ một cách
đơn giản.
Thƣ viện Sequelize
Sequelize là một thƣ viện của NodeJS dựa trên ngôn ngữ Javascript. Nó là
một thƣ viện hỗ trợ Ánh xạ Quan Hệ đối tƣợng trong khoa học máy tính, là một kỹ
thuật lập trình để chuyển đổi dữ liệu giữa các kiểu hệ thống không tƣơng thích bằng
cách sử dụng ngôn ngữ lập trình hƣớng đối tƣợng. Điều này sẽ tạo ra đối tƣợng ảo
của database (các class) có thể sử dụng bởi ngôn ngữ lập trình để đọc, ghi và cập
nhật dữ liệu lên database thay vì sử dụng câu truy vấn thông thƣờng.
2.2 Kiểu dữ liệu JSON
Trong quá trình trao đổi dữ liệu giữa browser, máy chủ (server) hoặc giữa
các phần mềm với nhau, dữ liệu thƣờng có thể là dạng text tuy nhiên để theo quy
luật, tuân theo một quy định nhất định và hầu hết các ngôn ngữ lập trình có thể đọc
đƣợc với nhau. Vì vậy cần có một chuẩn để định dạng dữ liệu. Hiện nay, chúng ta
có một số chuẩn để định dạng dữ liệu nhƣ JSON, XML,… và JSON hiện đang đƣợc
sử dụng rộng rãi.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 16


Báo cáo khóa luận tốt nghiệp 2020

2.2.1 Giới thiệu


JSON là từ viết tắt của cụm từ tiếng Anh “Javascript Object Notation” là một
kiểu dữ liệu trong Javascript, kiểu dữ liệu này hoàn toàn là text, với kích thƣớc nhỏ
dễ dàng lƣu trữ và gửi dữ liệu qua mạng. JSON mô tả một đối tƣợng bằng cách để
các cặp “thuộc tính - giá trị” trong cặp ngoặc nhọn. JSON thƣờng đƣợc sử dụng để
gửi và nhận giữa các thành phần của một chƣơng trình.

Hình 2.7 Một biểu diễn JSON mô tả thông tin về một công việc
2.2.2 Kiểu dữ liệu và cú pháp
Kiểu dữ liệu
Trong JSON hỗ trợ một số lỗi kiểu dữ liệu cơ bản nhƣ:
Số (Number): là số thập phân nếu số quá lớn có thể dùng ký tự khoa học (ký
hiệu E) để biểu diễn, không bao gồm những số không phải là số nhƣ NaN. JSON
không phân biệt giữa số nguyên và dấu phẩy động.
Chuỗi (String): một giá trị null hoặc nhiều ký tự Unicode các chuỗi đƣợc
phân tách nhau bằng dấu ngoặc kép và có hỗ trợ ký tự thoát (Escape character)
Boolean: Một trong hai trạng thái true hoặc false

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 17


Báo cáo khóa luận tốt nghiệp 2020

Mảng (Array): danh sách có thứ tự gồm rỗng (null) hoặc nhiều giá trị, mỗi
giá trị có thể thuộc bất kỳ kiểu nào. Mảng sử dụng ký hiệu dấu ngoặc vuông với các
phần tử đƣợc phân tách bằng dấu phẩy.
Đối tƣợng (Object): tập hợp các cặp tên-giá trị trong đó tên (còn gọi là
khóa) là các chuỗi. Các đối tƣợng nhằm đại diện cho các mảng kết hợp, trong đó
mỗi khóa là duy nhất trong một đối tƣợng. Các đối tƣợng đƣợc phân cách bằng dấu
ngoặc nhọn và sử dụng dấu phẩy để phân tách từng cặp, trong khi bên trong mỗi
cặp, ký tự ':' phân tách khóa hoặc tên khỏi giá trị của nó.
Rỗng (Null): một giá trị trống, sử dụng từ null
Khoảng trắng (Spacebar): đƣợc cho phép lờ qua xung quanh hoặc các
thành phần cú pháp. Các ký tự đặc biệt đƣợc xem là khoảng trắng nhƣ: ký tự
khoảng trắng, tab, ký tự xuống dòng.
2.2.3 Kiểu dữ liệu MIME - Lƣợc đồ JSON (Schema)
Mime là từ viết tắt của “Multiple Internet Mail Extensions” là một chuẩn
Internet về định dạng cho thƣ điện tử dùng để gửi các tài nguyên qua Internet.
Kiểu dữ liệu MIME chính thức cho văn bản JSON là “application/json” và hầu hết
khi triển khai ứng dụng hiện tại điều áp dụng kiểu dữ liệu này. Tuy nhiên vẫn có tồn
tại một số kiểu MIME không chính thức “text/json” hoặc kiểu nội dung
“text/javascript” cũng nhận đƣợc sự hỗ trợ của nhà cung cấp dịch vụ, trình duyệt,
các ứng dụng, framework và các API.
Lƣợc đồ (Schema)
Lƣợc đồ JSON chỉ định một định dạng dựa trên JSON để xác định cấu trúc
dữ liệu của JSON dùng cho việc xác thực dữ liệu, tài liệu và kiểm soát những tƣơng
tác. Nó cũng cung cấp một tuân thủ của các yêu cầu bởi một ứng dụng và cách dữ
liệu có thể đƣợc cập nhật thay đổi.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 18


Báo cáo khóa luận tốt nghiệp 2020

Hình 2.8 Ví dụ một đoạn Json đƣợc yêu cầu


kiểm tra tính hợp lệ của văn bản JSON

Hình 2.9 Lƣợc đồ JSON dùng để kiểm tra tính hợp lệ dữ liệu của văn bản JSON

2.2.4 Cú pháp JSON


Cú pháp của JSON xuất phát từ Javascript Object Notation và đƣợc quy định
nhƣ sau
 Data theo cặp Key - Value
 Data đƣợc ngăn cách nhau bằng dấu phẩy
 Dấu ngoặc nhọn đƣợc quy định objects
 Dấu ngoặc vuông quy định một mảng

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 19


Báo cáo khóa luận tốt nghiệp 2020

Ví dụ: Chúng ta có 1 tài liệu JSON nhƣ bên dƣới:


{
"name":"Nguyễn Văn A",
"cellphone":"012345678",
"address":"13 Nguyễn Văn Bảo, Phƣờng 4 Quận Gò vấp",
"email":[
"nguyenvana@gmail.com",
"nguyenvana@edu.vn"
]
}

Tại đây đối với các chữ bao gồm name, cell phone, address, email đều là
các thuộc tính (key) và các giá trị (value) sẽ nằm bên phải của các thuộc tính (nằm
trƣớc dấu phẩy). Riêng đặc biệt đối với thuộc tính email do một ngƣời có thể có
nhiều email khác nhau nên giá trị của thuộc tính email là một mảng đƣợc bọc trong
dấu ngoặc vuông.
2.3 Kiến trúc Restful API
2.3.1 Restful API là gì?
Để hiểu khái niệm Restful API, chúng ta sẽ chia ra hai phần giải thích của
thuật ngữ “Rest/Restful” và “API”.
Restful là gì?
Rest là từ viết tắt cho “Representational state transfer” là một kiểu lập trình
dùng định nghĩa các nguyên tắc để thiết kế web service chú trọng vào tài nguyên
mọi thứ trong Rest đều là tài nguyên và đƣợc định danh thông qua URL và có thể
biểu diễn thông qua dạng văn bản nhƣ là XML, JSON…Restful có nghĩa là những
ứng dụng có sử dụng kiến trúc REST.
API là gì?
API là một tập các cơ chế, quy tắc theo đó, một ứng dụng, một thành phần
này sẽ tƣơng tác với một thành phần khác. Trong API dữ liệu đƣợc trả có thể trả về
kết quả dƣới dạng các kiểu dữ liệu phổ biến nhƣ JSON hay XML.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 20


Báo cáo khóa luận tốt nghiệp 2020

Restful API
Là một tiêu chuẩn dùng trong việc thiết kế các cơ chế quy tắc trao đổi giữa
các ứng dụng mục đích thuận tiện quản lý cho các tài nguyên. Nó chú trọng vào các
tài nguyên hệ thống nhƣ tệp văn bản, âm thanh và trạng thái tài nguyên đƣợc định
dạng, truyền tải qua giao thức HTTP.

Hình 2.10 Mô hình thiết kế của Restful API


Ngoài ra từ hình 2.10 để đầy đủ các mô hình này chúng ta cần có một số
phƣơng thức chuẩn của 1 Restful API bao gồm nhƣ bảng bên dƣới (cụ thể ở đây ví
dụ cho các yêu cầu thao tác với đối tƣợng jobs).
Loại phƣơng thức URL Router (Đƣờng dẫn) Giải thích
GET /jobs Hiển thị các job.
Hiển thị job có Id theo nhƣ
GET /jobs/{Id}
tham số truyền vào.
POST /jobs Tạo mới 1 job.
Cập nhật 1 job có Id theo
PUT /jobs/{id}
nhƣ tham số Id truyền vào.
Xóa 1 job có id theo nhƣ
DELETE /jobs/{id}
hàm số Id truyền vào.
Bảng 2.1 Một số phƣơng thức chuẩn của 1 Restful API

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 21


Báo cáo khóa luận tốt nghiệp 2020

2.3.2 Cách hoạt động của Restful API


Restful API có hai luồng gồm luồng Request và Response:
Đối với luồng Request: Khi request 1 yêu cầu từ server thì trên thanh công
cụ của web tiến hành gộp 3 thành phần lại trở thành 1 URL trong đây gồm có 3
thành phần endpoint là phần đầu của URL. Tiếp đến chứa thông tin phƣơng thức
yêu cầu (Có thể là PUT, POST, GET, DELETE) và cuối cùng gộp với phần data
của ngƣời dùng gửi lên sau khi đã có đủ các thành phần trình duyệt sẽ gửi thông tin
lên thông qua giao thức HTTP để gửi thông tin lên Web Service.
Đối với luồng Response: Sau khi nhận đƣợc yêu cầu hệ thống sẽ xử lý và
lấy các tài nguyên theo yêu cầu sau đó trả về cho client với các định dạng văn bản
nhƣ XML, SOAP….

Hình 2.11 Cấu trúc của một văn bản JSON đƣợc trả về
khi client yêu cầu với phƣơng thức “GET”

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 22


Báo cáo khóa luận tốt nghiệp 2020

Hình 2.12 Mô tả cách hoạt động của Restful API


2.3.3 Các trạng thái của request
Khi client gửi đến server một yêu cầu thì ngoài dữ liệu json và một số thông
tin khác thì Restful API sẽ trả về một số trạng thái của yêu cầu mà client đó vừa
thực hiện. Ngƣời lập trình viên hoặc thậm chí ngƣời dùng có thể đọc đƣợc những
thông tin mã trạng thái code này và có thể biết đƣợc kết quả của request theo các mã
trạng thái thông dụng đƣợc mô tả trong bảng bên dƣới.
Mã trạng thái Giải thích
200 OK Trả về thành công cho những phƣơng thức GET,
PUT, PATCH hoặc DELETE.
201 Created Trả về khi một Resource vừa đƣợc tạo thành công.
204 No Content Trả về khi Resource xoá thành công.
304 Not Modified Không có sự thay đổi của dữ liệu trong cache trình
duyệt, client có thể sử dụng trực tiếp trong cache
duyệt
400 Bad Request Request không hợp lệ, có thể đƣờng dẫn không đúng
401 Unauthorized Request cần có xác thực, một số request đến một tài
nguyên đƣợc phân quyền thì phải đƣợc xác thực trƣớc
khi truy cập các tài nguyên này
403 Forbidden Bị từ chối không cho phép truy cập tài nguyên

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 23


Báo cáo khóa luận tốt nghiệp 2020

404 Not Found Không tìm thấy tài nguyên dựa trên yêu cầu
405 Method Not Allowed Phƣơng thức không cho phép với user hiện tại
410 Gone Tài nguyên không còn tồn tại, Version cũ đã không
còn hỗ trợ.
415 Unsupported Media Không hỗ trợ kiểu tài nguyên này
Type
422 Unprocessable Entity Dữ liệu không đƣợc xác thực
429 Too Many Requests Yêu cầu bị từ chối do quá giới hạn của request
Bảng 2.2 Các mã trạng thái thông dụng request

2.4 SOAP
2.4.1. Giới thiệu SOAP
SOAP (Giao thức truy cập đối tƣợng đơn giản) là một giao thức internet cho
phép các chƣơng trình trong các hệ điều hành khác nhau hoặc trên các máy chủ
riêng biệt liên kết với nhau qua internet. SOAP thƣờng sử dụng các giao thức XML
và HTTP trong các quy trình của mình nhƣng nó cũng có thể sử dụng SMTP.
Các nhà cung cấp phần mềm nhƣ Microsoft, IBM, Lotus và các nhà cung cấp
khác đã cùng nhau giải quyết một vấn đề phổ biến giữa họ. Các chƣơng trình trực
tuyến không thể đƣợc sử dụng đúng cách khi đƣợc chia sẻ giữa các hệ điều hành và
máy chủ khác nhau. Bởi vì các chƣơng trình không chia sẻ cùng một ngôn ngữ, nó
đã tạo ra vấn đề cho mọi ngƣời khi họ cố gắng sử dụng các phần khác nhau của
trang web.
Giải pháp công nghệ cho vấn đề đó là SOAP, một giao thức internet dựa trên XML
cho phép các ứng dụng hoặc đối tƣợng trong một ứng dụng kết nối với nhau. Tất cả
điều này liên quan đến back-end hoặc các chi tiết lập trình máy tính phức tạp mà
bạn không bao giờ thấy khi bạn sử dụng trang web.
SOAP chỉ là một cách để kết hợp các ngôn ngữ lập trình XML, HTTP hoặc
SMTP để gửi và nhận tin nhắn qua internet. Nó không bị hạn chế bởi ngôn ngữ ứng

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 24


Báo cáo khóa luận tốt nghiệp 2020

dụng (Java, C#, C++) hoặc nền tảng (Windows, UNIX, Mac) và điều này làm cho
nó linh hoạt hơn nhiều so với các giải pháp khác.
SOAP là một giao thức truy cập Web Service đƣợc sử dụng trong một thời
gian và hƣởng tất cả các lợi ích của việc sử dụng lâu dài. Đƣợc phát triển bởi
Microsoft, SOAP không thực sự đơn giản nhƣ từ viết tắt của nó. SOAP dựa hoàn
toàn vào XML để cung cấp các dịch vụ truyền tin. Microsoft ban đầu phát triển
SOAP để thay thế cho các công nghệ cũ hơn không hoạt động tốt trên Internet nhƣ
Distributed Component Object Model (DCOM) and Common Object Request
Broker Architecture (CORBA). Những công nghệ này không thành công vì chúng
dựa vào truyền tin nhị phân, cách truyền tin XML mà SOAP sử dụng làm việc tốt
hơn qua Internet.
XML đƣợc sử dụng để tạo ra các yêu cầu và nhận phản hồi trong SOAP, nó
có thể trở nên cực kỳ phức tạp. Trong một số ngôn ngữ lập trình, chúng ta cần phải
xây dựng các requests đó bằng tay, điều này trở nên mơ hồ vì SOAP không dung
nạp đƣợc các lỗi. Tuy nhiên, một vài ngôn ngữ khác có thể sử dụng các phím tắt mà
SOAP cung cấp; Có thể giúp chúng ta giảm bớt hỗ trợ cần thiết để tạo yêu cầu và
phân tích trả lời. Thực tế, khi làm việc với .NET, chúng ta thậm chí chƣa bao giờ gặp
đến XML.
Một trong những tính năng quan trọng nhất của SOAP là tích hợp trong xử lý
lỗi. Nếu có sự cố với requests của chúng ta, responses chứa thông tin lỗi mà chúng ta
có thể sử dụng để khắc phục sự cố. Chúng ta có thể không sở hữu các Web service,
tính năng này đặc biệt vô cùng quan trọng. Các báo cáo lỗi thậm chí cung cấp mã
code chuẩn để có thể tự động hoá một số nhiệm vụ xử lý lỗi trong mã.
Một tính năng khác khá thú vị của SOAP là chúng ta không nhất thiết phải sử
dụng nó với giao thức Hyper Text Transfer Protocol (HTTP). Có một chỉ định rõ
ràng để sử dụng SOAP qua Simple Mail Transfer Protocol (SMTP) và không có lý
do gì chúng ta không thể sử dụng nó trên các phƣơng thức khác.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 25


Báo cáo khóa luận tốt nghiệp 2020

SOAP là một giao thức giao tiếp có cấu trúc nhƣ XML và mã hóa thành định
dạng chung cho các ứng dụng trao đổi với nhau. Ý tƣởng bắt đầu từ Microsoft và
phần mềm Userland, trải qua nhiều lần thay đổi, hiện tại là phiên bản SOAP 1.2 với
nhiều ƣu điểm vƣợt trội hơn bản SOAP 1.1. SOAP đƣợc xem nhƣ là cấu trúc xƣơng
sống của các ứng dụng phân tán xây dựng từ nhiều ngôn ngữ, hệ điều hành khác
nhau.
SOAP là một đặc tả việc sử dụng các tài liệu XML theo dạng các thông điệp.
Bản thân SOAP không định ra các ngữ nghĩa ứng dụng hoặc cách cài đặt chi tiết.
SOAP cung cấp một cơ chế đơn giản và gọn nhẹ cho việc trao đổi thông tin có cấu
trúc và định dạng giữa các thành phần trong một môi trƣờng phân tán sử dụng
XML. SOAP đƣợc thiết kế dựa trên những chuẩn nhằm giảm chi phí tích hợp các hệ
thống phân tán xây dựng trên nhiều nền tảng khác nhau ở mức càng thấp càng tốt.
Đặc tả về SOAP định nghĩa một mô hình trao đổi dữ liệu dựa trên 3 khái niệm cơ
bản: Các thông điệp là các tài liệu XML, chúng đƣợc truyền đi từ bên gửi đến bên
nhận, bên nhận có thể chuyển tiếp dữ liệu đến nơi khác.
Khái niệm cơ bản nhất của mô hình SOAP là việc sử dụng các tài liệu XML
nhƣ những thông điệp trao đổi. Điều này có nhiều ƣu điểm hơn các giao thức truyền
dữ liệu khác. Các thông điệp XML có thể đƣợc tổng hợp và đọc với một bộ soạn
thảo text đơn giản, ta có thể làm việc với XML trên hầu hết mọi nền tảng.
2.4.2. Đặc trƣng SOAP
SOAP có những đặc trƣng sau :
- SOAP đƣợc thiết kế đơn giản và dễ mở rộng.
- Tất cả các thông điệp SOAP đều đƣợc mã hóa sử dụng XML.
- SOAP sử dụng giao thức truyền dữ liệu riêng.
- Không có garbage collection phân tán và cũng không có cơ chế tham
chiếu. Vì thế SOAP client không giữ bất kỳ một tham chiếu đầy đủ nào về các
đối tƣợng ở xa.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 26


Báo cáo khóa luận tốt nghiệp 2020

- SOAP không bị ràng buộc bởi bất kỳ ngôn ngữ lập trình nào hoặc công nghệ
nào.
Vì những đặc trƣng này, nó không quan tâm đến công nghệ gì đƣợc sử dụng
để thực hiện miễn là ngƣời dùng sử dụng các thông điệp theo định dạng XML.
Tƣơng tự, service có thể đƣợc thực hiện trong bất kỳ ngôn ngữ nào, miễn là nó có
thể xử lý đƣợc những thông điệp theo định dạng XML.
Khi trao đổi các thông điệp SOAP, có hai thành phần liên quan: Bên gửi và
bên nhận. Thông điệp sẽ đƣợc chuyển từ bên gửi sang bên nhận. Đây là ý niệm đơn
giản nhất trong trao đổi thông điệp SOAP. Trong nhiều trƣờng hợp, kiểu trao đổi
này không cung cấp đủ chức năng. Nhƣng đây là mô hình cơ bản, dựa trên đó sẽ
phát triển các mô hình trao đổi phức tạp hơn.
Envelope là thành phần gốc của một thông điệp SOAP, nó chứa các thành
phần Header và Body. Thành phần Header là một cơ chế mở cho phép thêm các
tính năng vào bên trong một thông điệp SOAP. Mỗi thành phần con của Header gọi
là một Header Entry. Các Header Entry dùng để diễn giải, quy định một số ngữ
nghĩa của thông điệp SOAP. Các ứng dụng có thể xử lý, định tuyến các thông điệp
dựa trên thông tin header và thông tin bên trong thông điệp đó. Đây là ƣu điểm mà
các mô hình kiến trúc nhƣ DCOM, CORBA và RMI không có đƣợc vì các protocol
header của chúng phải đƣợc chỉ định chi tiết cho mỗi ứng dụng.
2.4.3. Cấu trúc một message theo dạng SOAP
Message theo dạng SOAP là một văn bản XML bình thƣờng bao gồm các
phần tử sau:
- Phần tử gốc - envelope: Phần tử bao trùm nội dung message, khai báo văn
bản XML nhƣ là một thông điệp SOAP.
- Phần tử đầu trang – header: Chứa các thông tin tiêu đề cho trang, phần tử
này không bắt buộc khai báo trong văn bản. Những đầu mục còn có thể mang
những dữ liệu chứng thực, những chữ ký số hóa và thông tin mã hóa hoặc những cài
đặt cho giao tác.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 27


Báo cáo khóa luận tốt nghiệp 2020

- Phần tử khai báo nội dung chính trong thông điệp - body, chứa các thông
tin yêu cầu và phản hồi.
- Phần tử phát sinh lỗi (Fault) cung cấp thông tin lỗi xảy ra trong quá trình xử
lý thông điệp.
Trong trƣờng hợp đơn giản nhất, phần thân của SOAP message gồm có:
- Tên của message
- Một tham khảo tới một thể hiện service.
- Một hoặc nhiều tham số mang các giá trị và mang các tham chiếu. Có 3
kiểu thông báo
Request messages: Với các tham số gọi thực thi một service
Response messages: Với các tham số trả về đƣợc sử dụng khi đáp ứng yêu
cầu.
Fault messages: báo tình trạng lỗi.
2.4.4. Những kiểu truyền thông
SOAP hỗ trợ hai kiểu truyền thông khác nhau:
- Remote procedure call (RPC): Cho phép gọi hàm hoặc thủ tục qua mạng.
Kiểu này đƣợc khai thác bởi nhiều web service và có nhiều trợ giúp.
- Document (Đƣợc biết nhƣ kiểu hƣớng message): Kiểu này cung cấp một
lớp thấp của sự trừu tƣợng hóa và yêu cầu ngƣời lập trình nhiều hơn khi làm việc.
Các định dạng message, tham số, lời gọi đến các API thì tƣơng ứng trong RPC và
document là khác nhau. Nên việc quyết định chọn cái nào tùy thuộc vào thời gian
xây dựng và sự phù hợp của service cần xây dựng.
2.4.5. Mô hình dữ liệu
Mục đích của mô hình dữ liệu SOAP là cung cấp sự trừu tƣợng hóa độc lập
ngôn ngữ cho kiểu ngôn ngữ lập trình chung. Nó gồm có:
- Những kiểu XSD đơn giản nhƣ những kiểu dữ liệu cơ bản trong đa số các
ngôn ngữ lập trình nhƣ int, string, date…
- Những kiểu phức tạp, có hai loại là struct và array.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 28


Báo cáo khóa luận tốt nghiệp 2020

Tất cả các phần tử và những định danh có trong mô hình dữ liệu SOAP thì
đƣợc định nghĩa bằng namespace SOAP-ENC.
2.4.6 Ƣu điểm của SOAP
 Khi phát triển dịch vụ Web, chúng ta cần có một số ngôn ngữ có thể đƣợc
sử dụng cho các dịch vụ web để liên kết với các ứng dụng khác. SOAP là phƣơng
tiện hoàn hảo đƣợc phát triển để đạt đƣợc mục đích này. Giao thức này cũng đƣợc
đề xuất bởi tập đoàn W3C, cơ quan chủ quản cho tất cả các tiêu chuẩn web.
 SOAP là một giao thức đơn giản và nhẹ đƣợc sử dụng để trao đổi dữ liệu
giữa các ứng dụng.
 SOAP đƣợc thiết kế độc lập với nền tảng và cũng đƣợc thiết kế để độc lập
với hệ điều hành. Vì vậy, giao thức SOAP có thể hoạt động với mọi ứng dụng dựa
trên ngôn ngữ lập trình trên cả nền tảng Windows và Linux.
 Nó hoạt động trên giao thức HTTP, đây là giao thức mặc định đƣợc sử
dụng bởi tất cả các ứng dụng web. Do đó, không có loại tùy chỉnh nào đƣợc yêu cầu
để chạy các dịch vụ web đƣợc xây dựng trên giao thức SOAP để hoạt động trên
World Wide Web.
2.5 Web server
2.5.1. Giới thiệu Web server
Web server là một loại máy chủ (hay server) đƣợc dùng để xử lý các truy cập
đƣợc gửi từ máy khách thông qua giao thức HTTP. Các truy cập HTTP này thƣờng
đƣợc gửi từ các chƣơng trình duyệt web trên máy tính cá nhân. Web server có thể là
phần cứng hoặc phần mềm hoặc là cả hai cùng làm việc với nhau.
Về mặt phần cứng
Web server là một máy tính lƣu trữ các file thành phần tạo nên một website
(ví dụ: HTML, images, CSS, và file Javascript...) và truyền chúng tới ngƣời dùng
cuối. Web server đƣợc kết nối đến internet và truy cập thông qua một domain giống
nhƣ mozilla.org.
Về mặt phần mềm

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 29


Báo cáo khóa luận tốt nghiệp 2020

Web server bao gồm một số phần kiểm soát ngƣời dùng web truy cập đến
file host tại tối thiểu một HTTP server. Một HTTP server là một phần của phần
mềm nó hiểu là URLs (web address) và HTTP (là phƣơng thức để trình duyệt của
chúng ta hiển thị trang web). Ở mức cơ bản nhất, bất cứ một trình duyệt nào cần
một file host trên một web server, trình duyệt đó sẽ yêu cầu file đó thông qua
HTTP. Khi một yêu cầu đƣợc gửi đến địa chỉ web server đúng thì HTTP server gửi
trở lại một yêu cầu thông qua HTTP. Web server gồm một số phần điều khiển
ngƣời dùng truy cập đến file lƣu trữ trên một máy chủ HTTP. Máy chủ HTTP là
một phần mềm, nó có khả năng hiểu đƣợc các địa chỉ website (URL) và giao thức
trình duyệt sử dụng để xem các website (HTTP).
Bất cứ khi nào một trình duyệt cần đến file đƣợc lƣu trữ trên máy chủ, trình
duyệt gửi yêu cầu file đó thông qua HTTP. Khi yêu cầu tới đúng máy chủ (phần
cứng), HTTP (phần mềm) sẽ gửi tài liệu đƣợc yêu cầu trở lại thông qua HTTP.
Máy chủ chứa toàn bộ dữ liệu mà nó đƣợc giao quyền quản lý. Mỗi máy chủ
có một IP riêng và có thể đọc đa dạng ngôn ngữ nhƣ HTML, HTM, File,… Máy
chủ có dung lƣợng lớn và tốc độ rất cao để có thể lƣu trữ và vận hành tốt kho dữ
liệu trên internet. Thông qua cổng giao tiếp riêng biệt của mỗi máy chủ mà hệ thống
máy tính có khả năng hoạt động trơn tru hơn. Máy chủ phải đảm bảo hoạt động liên
tục để có thể cung cấp dữ liệu cho mạng lƣới máy tính của nó.

Hình 2.13 Mô hình hoạt động của Web server

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 30


Báo cáo khóa luận tốt nghiệp 2020

Web server là máy tính lớn đƣợc kết nối với tập hợp mạng máy tính mở rộng
Ngoài ra còn có các phần mềm web server khác nhƣ Unicorn, IIS hay Node.js. Các
phần mềm web server nhƣ Apache hay Nginx... nhƣ trên còn đƣợc gọi với cái tên
đầy đủ hơn là phần mềm HTTP web server.
2.5.2. Các đặc tính của Web server
Web server (máy chủ web) có thể xử lý dữ liệu, cung cấp thông tin đến máy
khách qua môi trƣờng internet thông qua giao thức HTTP, giao thức đƣợc thiết kế
gửi file đến trình duyệt web hay giao thức khác. Nếu đƣợc cài đặt một chƣơng trình
Server Software và kết nối internet thì bất cứ máy tính nào cũng có thể trở thành
web server. Phần mềm Server Software là phần mềm chuyên dụng để cài đặt và
chạy trên bất cứ máy tính nào có thể đáp ứng đủ yêu cầu về bộ nhớ. Nhờ có nó mà
ngƣời dùng có thể truy cập đến các thông tin của website từ một máy tính khác qua
internet. Ngƣời ta thƣờng thuê các máy chủ nhỏ, máy chủ ảo VPS hay Hosting để
lƣu trữ dữ liệu cho website của mình.
Một server có thể cung cấp cả nội dung Static và Dynamic. Static có nghĩa là
nội dung nguyên vẹn và dễ dàng để thiết lập. Dynamic là nội dung đã đƣợc sever xử
lý hoặc tạo mới với dữ liệu từ Database, định dạng, đẩy vào trong HTTP Template
rồi gửi kết quả đến ngƣời dùng.
2.5.3. Các bƣớc lấy dữ liệu của một website
Để công khai một trang web, chúng ta cần một web server tĩnh hoặc một web
server động.
- Một web server tĩnh hay bao gồm một máy tính với một HTTP server.
Chúng ta gọi đó là web server tĩnh vì web server gửi file không hề thay đổi của nó
đến trình duyệt của ngƣời dùng.
- Một web server động bao gồm một web server tĩnh cùng với các phần mềm
mở rộng của chúng, nhìn chung nhất đó là các ứng dụng server và databases. Chúng
ta gọi nó là web động vì application server cập nhật các host file trƣớc khi gửi nó về
trình duyệt của ngƣời dùng thông qua HTTP server.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 31


Báo cáo khóa luận tốt nghiệp 2020

Ví dụ để tạo ra trang web cuối cùng bạn nhìn thấy trên trình duyệt,
application server sẽ điền đầy đủ vào các HTML template với nội dung đƣợc lấy ra
từ databases. Ví dụ nhƣ MDN và Wikipedia có hàng nghìn trang web. Nhƣng chúng
không phải là tài liệu HTTM thực. Chỉ một khuôn mẫu HTML và một database rất
lớn. Cài đặt này làm cho nó dễ dàng và nhanh hơn cho việc quản lý và truyền nội
dung.
2.5.4. Các loại Web server phổ biến hiện nay
Web server Apache
Web server Apache đƣợc phát triển bởi quỹ Phần mềm Apache và là một
trong những web server nổi tiếng trên thế giới. Đây là phần mềm mã nguồn mở, hỗ
trợ hầu hết các hệ điều hành nhƣ Unix, Linux, Windows, Mac OS X, FreeBSD,…
Theo thống kê, khoảng 60% máy tính chạy trên web server Apache.
Web server Apache có các tùy biến đƣợc thực hiện dễ dàng bởi nó có cấu
trúc dạng Module. Bạn có thể thêm hay sửa đổi các Module vào server theo ý muốn
nếu cảm thấy phù hợp. So với bất cứ máy chủ web nào thì Apache cũng ổn định và
dễ dàng xử lý khi có vấn đề xảy ra. Các phiên bản mới của web server Apache có
khả năng xử lý đƣợc nhiều yêu cầu hơn so với phiên bản tiền nhiệm.
Web server Apache là phần mềm mã nguồn mở, hỗ trợ hầu hết các hệ điều
hành nhƣ Unix, Linux, Windows, Mac OS X
Web server IIS
Web server IIS là sản phẩm của Microsoft, nó có rất nhiều tính năng giống
nhƣ Apache. Tuy nhiên, đây không phải là mã nguồn mở và việc thêm, chỉnh sửa
các Module theo ý muốn không hề dễ dàng. Web server IIS có khả năng chạy trên
tất cả nền tảng của hệ điều hành của Windows.
Web server IIS là sản phẩm của Microsoft, nó có rất nhiều tính năng giống
nhƣ Apache.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 32


Báo cáo khóa luận tốt nghiệp 2020

Web server Nginx


Web server Nginx là một máy chủ mã nguồn mở miễn phí. Nginx bao gồm
máy chủ POP3 và IMAP. Web server Nginx có ƣu điểm là ổn định, hiệu suất cao,
cấu hình đơn giản và sử dụng tài nguyên thấp. Nginx không dùng các chuỗi (thread)
để xử lý các yêu cầu mà sử dụng kiến trúc lập trình theo sự kiện (có khả năng mở
rộng). Kiến trúc lập trình này dùng bộ nhớ khi tải nhỏ và dự đoán đƣợc. Nginx hiện
đang lƣu trữ khoảng 7.5 % các tên miền trên toàn thế giới. Trong những năm trở lại
đây, phần đông công ty web hosting sử dụng Nginx.
Web server LiteSpeed
Web server LiteSpeed có rất nhiều tính năng giống nhƣ Apache. LiteSpeed
có khả năng tải các file cấu hình Apache trực tiếp đồng thời hoạt động nhƣ một
Drop-in Replacement Apache với các Control Panel của Hosting. LiteSpeed có thể
đƣợc thay thế với web server Apache trong khoảng 15 phút với Downtime bằng 0.
Web server LiteSpeed còn có khả năng thay thế tất cả tính năng của Apache và đơn
giản hóa việc sử dụng.
2.6 Web service
2.6.1 Giới thiệu Web service
Web services là một hệ thống phần mềm đƣợc thiết kế nhằm mục đích
thông qua mạng Internet để hỗ trợ khả năng tƣơng tác giữa nhiều ứng dụng trên
máy tính khác nhau đƣợc XML mô tả giao diện chung và thực hiện chức năng gắn
kết. Web service đáp ứng nhu cầu ngƣời dùng bằng cách đƣa ra các thông tin mà họ
yêu cầu. Địa chỉ URL dùng xác định tài nguyên phần mềm.
Web service là tập hợp các giao thức và tiêu chuẩn mở đƣợc sử dụng để
trao đổi dữ liệu giữa các ứng dụng hoặc giữa các hệ thống.
 Là phƣơng thức giao tiếp giữa hai thiết bị qua mạng.
 Là ứng dụng hoặc thành phần ứng dụng để giao tiếp.
 Là tập hợp các tiêu chuẩn hoặc giao thức để trao đổi thông tin giữa hai thiết
bị hoặc ứng dụng.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 33


Báo cáo khóa luận tốt nghiệp 2020

Các ứng dụng phần mềm đƣợc viết bằng các ngôn ngữ lập trình khác nhau
và chạy trên các nền tảng khác nhau, có thể sử dụng các dịch vụ web để trao đổi dữ
liệu qua mạng máy tính.
Web service hoạt động một cách độc lập không phụ thuộc bất kỳ ngôn ngữ
nào. Các ứng dụng java, .net hoặc PHP… có thể giao tiếp với các ứng dụng khác
thông qua web service.
2.6.2 Các thành phần của web service
Nền tảng web service cơ bản là XML HTTP. Tất cả các web service chuẩn
đều hoạt động bằng các thành phần sau:
- SOAP (là viết tắt của Simple Object Access Protocol) – giao thức truy cập
đối tƣợng đơn giản: SOAP là một giao thức dựa trên XML đơn giản cho phép các
ứng dụng trao đổi thông tin qua HTTP.
- UDDI (Universal Description, Discovery and Integration): UDDI là một
tiêu chuẩn dựa trên XML để mô tả, xuất bản và tìm kiếm các dịch vụ web.
- WSDL (Web Services Description Language) – ngôn ngữ định nghĩa web
service: WSDL là một ngôn ngữ dựa trên XML để mô tả các dịch vụ web và cách
truy cập chúng.
2.6.3 Các lợi ích mang lại từ Web service
Ngoài việc cho phép các ứng dụng đƣợc viết bằng các ngôn ngữ lập trình
khác nhau giao tiếp với nhau, các dịch vụ web còn mang lại những lợi thế khác.
Đầu tiên, họ cung cấp quyền truy cập vào các tính năng thông qua internet. Thật
vậy, các tính năng đƣợc cung cấp bởi dịch vụ web cho ứng dụng khách đƣợc gọi
thông qua giao thức HTTP. Do đó, chúng có thể đƣợc gọi qua internet. Tại thời
điểm tất cả các ứng dụng đƣợc kết nối với internet, các dịch vụ web đã trở nên hữu
ích hơn nhiều so với trƣớc đây.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 34


Báo cáo khóa luận tốt nghiệp 2020

Hình 2.14 Web Services Framework


Ngoài ra, các dịch vụ web cho phép khả năng tƣơng tác giữa các ứng dụng.
Chúng cho phép các ứng dụng khác nhau giao tiếp với nhau, chia sẻ dữ liệu và dịch
vụ. Do đó, thay vì phải viết mã cụ thể chỉ có thể đƣợc hiểu bởi các ứng dụng cụ thể,
có thể viết mã chung đƣợc hiểu bởi tất cả các ứng dụng.
Một ƣu điểm khác của dịch vụ web là chúng sử dụng giao thức công nghiệp
đƣợc tiêu chuẩn hóa để liên lạc. Bốn lớp (Service Transport, XML Messaging,
Service Description và Service Discovery) sử dụng các giao thức đƣợc xác định rõ.
Cuối cùng, dịch vụ web có thể giảm chi phí liên lạc. Sử dụng SOAP thông
qua giao thức HTTP, có thể sử dụng kết nối internet chi phí thấp để triển khai các
dịch vụ web, các web service sử dụng an toàn và nhanh chóng.
2.6.4 Đặc điểm Web service
 Cho phép client và server tƣơng tác ngay cả trong môi trƣờng khác nhau. (Ví
dụ server chạy linux, client chạy windows).
 Phần lớn đƣợc xây dựng dựa trên mã nguồn mở và phát triển các chuẩn đã
đƣợc công nhận. (Ví dụ XML).
 Nó có thể triển khai bởi một phần mềm ứng dụng phía server (Ví dụ: PHP,
Oracle Application server, Microsoft .NET)
Mặc dù có nhiều ƣu điểm: Có nhiều mô-đun, có thể công bố lên internet,
khả năng hoạt động rộng lớn với phần mềm khác nhau chạy nền tảng khác nhau, sử
dụng các giao thức chuẩn mở, nâng cao khả năng tái sử dụng, cho phép các tiến trình

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 35


Báo cáo khóa luận tốt nghiệp 2020

/ chức năng nghiệp vụ đóng gói trong giao diện dịch vụ web, dễ dàng cho việc phát
triển các ứng dụng phân tán. Nhƣng những thiệt hại lớn sẽ xảy ra vào khoảng thời
gian chết của dịch vụ web, có quá nhiều chuẩn cho dịch vụ web khiến ngƣời dùng
khó nắm bắt, phải quan tâm nhiều hơn tới vấn đề an toàn và bảo mật.
2.6.5 Cách thức hoạt động Web service
o Nền tảng cơ bản của Web Service là XML + HTTP.
o XML cung cấp một ngôn ngữ mà có thể đƣợc sử dụng giữa ngôn ngữ lập
trình và các nền tảng khác. Đồng thời, nó còn có thể đƣợc dùng để mô tả những
thông điệp và chức năng phức tạp. Do web services là sự kết hợp của nhiều thành
phần khác nhau, do đó web services sử dụng các tính năng và đặc trƣng của các
thành phần này để giao tiếp với nhau. Vì vậy XML là một công cụ chính yếu để giải
quyết vấn đề này. Web service tận dụng khả năng giải quyết vấn đề của các ứng
dụng lớn trên các hệ điều hành khác nhau cho chúng giao tiếp với nhau. Yêu cầu này
đƣợc đáp ứng với lập trình Java, một ngôn ngữ viết một lần sử dụng mọi nơi là một
lựa chọn thích hợp cho phát triển web service.

 Mô hình hoạt động của ứng dụng WebService gồm 3 thành phần chính:

 UDDI register: Công cụ giúp nhà phát triển WS công bố những thông tin về
WebService của mình cho cộng đồng các nhà phát triển ứng dụng. Ngƣời dùng sẽ
dựa vào các thông tin này để sử dụng WebService trong ứng dụng riêng của mình.

 WebService: Chứa giao thức SOAP định dạng dữ liệu, tài liệu WSDL định
nghĩa các hàm trong WebService, XML để xây dựng ứng dụng phân tán.

 Application Client: Ứng dụng phía Client sử dụng WebService xây dựng
riêng cho mình

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 36


Báo cáo khóa luận tốt nghiệp 2020

2.7 Cơ sở dữ liệu NoSQL


2.7.1 NoSQL là gì?
Từ năm 60 của thế kỷ trƣớc khi máy tính đƣợc đƣa vào sử dụng rộng rãi việc
lƣu trữ dữ liệu và quản lý chúng là một vấn đề đáng quan tâm. Charles Bachman đã
là ngƣời khởi xƣớng trong việc tạo ra hệ quản trị cơ sở dữ liệu đầu tiên tiếng Anh
đƣợc gọi là Database Management System (DBMS) và xây dựng nó trên mô hình
mạng. Tiếp đến những năm 70 của thế kỷ trƣớc mô hình biểu diễn dữ liệu đƣợc ra
đời bởi ông Edgar Codd gọi mô hình dữ liệu quan hệ, điều này làm các DBMS đƣợc
xây dựng trên mô hình này phát triển rất mạnh mẽ. Sau đó, những nghiên cứu này
đƣợc áp dụng rộng rãi, đƣa vào quản lý DBMS và trở thành chuẩn. Chỉ hơn 10 năm
sau đã có rất nhiều tiến bộ trong lĩnh vực DBMS. Và bấy giờ nhiều công ty trong
lĩnh vực công nghệ thông tin cũng góp phần nghiên cứu và cống hiến cho DBMS
làm cho nó mạnh mẽ hoàn thiện hơn nhƣ IBM, Oracle, Informix. Đồng thời góp
phần với những hãng công nghệ thì có những gói ứng dụng và phần mềm mới nổi
sử dụng DBMS nhƣ là Enterprise Planning Resource (Phần mềm hoạch định doanh
nghiệp), Management Resource Planning (phần mềm hoạch định tài nguyên). Dữ
liệu đƣợc lƣu trữ trong cơ sở dữ liệu quan hệ, các ứng dụng có thể truy xuất và lấy
thông tin phục vụ nghiệp vụ khác nhau trên phần mềm. Tại thời điểm này mô hình
dữ liệu chiếm ƣu thế về số lƣợng sử dụng để phát triển ứng dụng là mô hình dữ liệu
quan hệ đƣợc sử dụng trong các cơ sở dữ liệu quan hệ. Ví dụ nhƣ Oracle, DB2,
SQL Server, MySQL và PostgreSQL.
Đến cuối những năm 2000 khi mà Internet bùng nổ mạnh nhu cầu lƣu trữ dữ
liệu và truy xuất thông tin nhiều hoặc những truy vấn phức tạp mất nhiều thời gian
xử lý. Giờ đây ngƣời ta nhận ra một số rào cản và hạn chế của DBMS nhƣ có lƣợc
đồ quan hệ cứng nhắc làm cho nó chỉ phù hợp với một số ứng dụng nhất định, hơn
thế nữa các quan hệ trong DBMS khiến cho việc cập nhật dữ liệu vào sẽ trải qua
quá trình kiểm tra các ràng buộc thoả mãn thì mới cho phép cập nhật điều này khiến
cho nó mất nhiều thời gian hơn. Cùng trong khoảng thời gian này một mô hình dữ

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 37


Báo cáo khóa luận tốt nghiệp 2020

liệu mới đƣợc đƣa vào sử dụng. Để phân biệt và phân loại với các mô hình dữ liệu
tiền nhiệm từ “NoSQL” đã đƣợc đặt ra, từ này mang ý nghĩa tƣơng đƣơng “phi
quan hệ” điều này giải quyết nhƣợc điểm của các mô hình quan hệ dữ liệu tiền
nhiệm và hứa hẹn mang đến tốc độ truy vấn, cập nhật nhanh hơn. Không chỉ phía
phần mềm phát triển bên cạnh đó các hạ tầng công nghệ thông tin cũng có những
thay đổi đáng kể. Những máy chủ ảo đám mây đơn giản có giá cả hợp lý đã xuất
hiện để thay thế những máy chủ phức tạp và đắt tiền. Hay nữa là những kỹ sƣ sử
dụng các phƣơng pháp đẩy nhanh tốc độ nhằm mục đích liên tục phát triển và rút
ngắn các chu trình mục tiêu để truy vấn dữ liệu với tốc độ nhanh, đáp ứng nhu cầu
của ngƣời dùng.
Nhƣ vậy NoSQL đã đề ra để đáp ứng nhu cầu hiện tại. Hệ thống NoSQL lƣu
trữ, quản trị dữ liệu sao cho có thể hỗ trợ đƣợc tốc độ vận hành ở công suất cao và
cung cấp tính linh hoạt tuyệt vời cho các nhà phát triển sử dụng.
NoSQL Database là cơ sở dữ liệu đƣợc xây dựng dành riêng cho mô hình dữ
liệu, có sơ đồ linh hoạt để xây dựng các ứng dụng hiện đại, dữ liệu lớn và ứng dụng
nền tảng web thời gian thực. Cơ sở dữ liệu NoSQL đƣợc công nhận rộng rãi vì khả
năng dễ phát triển, chức năng cũng nhƣ hiệu năng ở quy mô lớn.
2.7.2 Lịch sử NoSQL
Cơ sở dữ liệu NoSQL ban đầu đề cập đến cơ sở dữ liệu không phải SQL
hoặc không quan hệ cung cấp cơ chế lƣu trữ và truy xuất dữ liệu đƣợc mô hình hóa
bằng các phƣơng tiện, khác với quan hệ bảng đƣợc sử dụng trong cơ sở dữ liệu
quan hệ. Những cơ sở dữ liệu nhƣ vậy đã tồn tại từ cuối những năm 1960 nhƣng cái
tên “NoSQL” chỉ đƣợc đặt ra và đầu thế kỷ 21, nó đƣợc kích hoạt bởi nhu cầu truy
xuất dữ liệu của các công ty Web. Cơ sở dữ liệu NoSQL ngày càng đƣợc sử dụng
nhiều hơn trong Big Data và các dữ liệu Web thời gian đòi hỏi tốc độ đọc ghi nhanh
ngay lập tức. Các hệ thống NoSQL đôi khi còn đƣợc gọi là "Không chỉ SQL" để
nhấn mạnh rằng chúng có thể hỗ trợ các ngôn ngữ truy vấn giống SQL.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 38


Báo cáo khóa luận tốt nghiệp 2020

2.7.3 Kiến trúc của NoSQL


Các RDBM hiện tại đã bộc lộ những yếu kém nhƣ việc đánh chỉ mục một
lƣợng lớn dữ liệu, phân trang hoặc phân phối luồng dữ liệu media (phim, ảnh,
nhạc,...). Cơ sở dữ liệu quan hệ đƣợc thiết kế cho những mô hình dữ liệu nhỏ
thƣờng xuyên đọc viết trong khi các dịch vụ mạng xã hội lại có một lƣợng dữ liệu
cực lớn và cập nhật liên tục do số lƣợng ngƣời dùng quá nhiều ở một thời điểm.
Thiết kế trên kiến trúc phân tán NoSQL giảm thiểu tối đa các phép tính toán, I/O
liên quan kết hợp với xử lý hàng loạt đủ đảm bảo đƣợc yêu cầu xử lý dữ liệu của
các mạng dịch vụ dữ liệu cộng đồng này. Facebook, Amazon là những ví dụ điển
hình. Về cơ bản, các thiết kế của NoSQL lựa chọn mô hình lƣu trữ tập dữ liệu theo
cặp giá trị key-value. Khái niệm Node đƣợc sử dụng trong quản lý dữ liệu phân tán.
Với các hệ thống phân tán, việc lƣu trữ có chấp nhận trùng lặp dữ liệu. Một yêu cầu
(request) truy vấn tới dữ liệu có thể gửi tới nhiều máy cùng lúc, khi một máy nào đó
bị chết cũng không ảnh hƣởng nhiều tới toàn bộ hệ thống. Để đảm bảo tính Real
Time trong các hệ thống xử lý lƣợng lớn thông tin, thông thƣờng ngƣời ta sẽ tách
biệt database ra làm hai hoặc nhiều database. Một database nhỏ đảm bảo vào ra liên
tục, khi đạt tới ngƣỡng thời gian hoặc dung lƣợng, database nhỏ sẽ đƣợc gộp
(merge) vào database lớn có thiết kế tối ƣu cho phép đọc (read operation). Mô hình
đó cho phép tăng cƣờng hiệu suất I/O (đọc/ghi).

2.7.4 Đặc điểm của NoSQL


- Tính mở rộng cao (High Scalability): Gần nhƣ không có một giới hạn
cho dữ liệu và ngƣời dùng trên hệ thống.
- Tính sẵn sàng (High Availability): Chấp nhận dƣ thừa dữ liệu, khả năng
chịu lỗi cũng cao hơn cơ sở dữ liệu quan hệ khi một thành phần dữ liệu bị lỗi.
- Tính tự động (Atomicity): Trạng thái dữ liệu là độc lập mỗi khi diễn ra sự
thay đổi.
- Tính nhất quán (Consistency): chấp nhận tính nhất quán yếu, cập nhật
mới không đảm bảo rằng các truy xuất sau đó thấy ngay đƣợc sự thay đổi. Sau một

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 39


Báo cáo khóa luận tốt nghiệp 2020

khoảng thời gian lan truyền thì tính nhất quán cuối cùng của dữ liệu mới đƣợc đảm
bảo.
- Tính tồn tại lâu dài (Durability): dữ liệu có thể tồn tại trong bộ nhớ máy
tính nhƣng đồng thời cũng đƣợc lƣu trữ lại đĩa cứng.
- Tính linh động (Deployment Flexibility): việc bổ sung thêm/loại bỏ các
node, hệ thống sẽ tự động nhận biết để lƣu trữ mà không cần phải can thiệp bằng
tay. Hệ thống cũng không đòi hỏi cấu hình phần cứng mạnh, đồng nhất.
- Linh hoạt giữa các mô hình (Modeling flexibility): Dữ liệu lƣu trữ nhiều
dạng linh hoạt (key-value, document, graphs).
- Linh hoạt truy vấn (Query Flexibility): Multi-Gets, Range queries (load
một tập giá trị dựa vào một dãy các khóa).

2.7.5 Các thuật ngữ thƣờng sử dụng trong NoSQL


NoSQL còn có nghĩa là Non-Relational (NoRel) - không ràng buộc. Tuy
nhiên, thuật ngữ này ít phổ biến sử dụng hơn và ngày nay ngƣời ta thƣờng dịch
NoSQL thành Not Only SQL - Không chỉ SQL. NoSQL ám chỉ đến những cơ sở dữ
liệu không dùng mô hình dữ liệu quan hệ để quản lý dữ liệu trong lĩnh vực phần
mềm.
Một số thuật ngữ liên quan
- Không quan hệ - Non-relational: relational có nghĩa là ràng buộc - thuật
ngữ này mô tả đến các mối quan hệ giữa các bảng trong cơ sở dữ liệu quan hệ, các
mối quan hệ này liên kết nhau bằng hai loại khóa gồm: khóa chính và khóa ngoại
(hay còn gọi là khóa phụ) trong đó khóa chính của một bảng là duy nhất tại bảng đó
và khóa ngoại tại một bảng khác, sự xuất hiện của hai loại khóa này nhằm mục đích
ràng buộc dữ liệu để thể hiện tính nhất quán dữ liệu từ các bảng khác nhau. NoSQL
là khái niệm không sử dụng các ràng buộc khóa chính khóa ngoại cho tính nhất
quán của dữ liệu ở NoSQL database.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 40


Báo cáo khóa luận tốt nghiệp 2020

- Phân phối lƣu trữ - Distributed storage: mô hình lƣu trữ phân tán các
file hoặc dữ liệu ra nhiều máy tính khác nhau trong mạng LAN hoặc Internet dƣới
sự kiểm soát của phần mềm.
- Tính nhất quán cuối - Eventual Consistency: Nói đến tính nhất quán của
database thì chúng ta sẽ chia đƣợc hai loại: Tính nhất quán mạnh (Strong
Consistency) và tính nhất quán yếu (Weak Consistency), tính nhất quán cuối là một
dạng của tính nhất quán yếu. Với tính chất này sau lần cập nhật dữ liệu xảy ra, các
lần đọc sau đó không đảm bảo sẽ luôn trễ về các dữ liệu mới nhất đƣợc cập nhật.
Tuy nhiên nhờ một khoảng thời gian sau khi quá trình đồng bộ giữa các cơ sở dữ
liệu hoàn tất thì cuối cùng các lần đọc đều trả về kết quả mới nhất.
- Khả năng mở rộng chiều dọc - Vertical scalable: Khi dữ liệu lớn về
lƣợng, phƣơng pháp tăng cƣờng khả năng lƣu trữ và xử lý bằng việc cải tiến phần
mềm và cải thiện phần cứng trên một máy tính đơn lẻ đƣợc gọi là khả năng mở rộng
chiều dọc. Ví dụ việc tăng cƣờng CPU, cải thiện đĩa cứng, bộ nhớ trong một máy
tính,... cho DBMS nằm trong phạm trù này. Khả năng mở rộng chiều dọc còn có
một thuật ngữ khác scale up.
- Khả năng mở rộng chiều ngang - Horizontal scalable: Khi dữ liệu lớn về
lƣợng, phƣơng pháp tăng cƣờng khả năng lƣu trữ và xử lý là dùng nhiều máy tính
phân tán. Phân tán dữ liệu đƣợc hỗ trợ bởi phần mềm tức cơ sở dữ liệu.
2.7.6 So sánh giữa NoSQL và SQL
Đối với hai loại dữ liệu này khi đem ra so sánh thì mục tiêu các so sánh
chính là tìm ra loại cơ sở dữ liệu phù hợp với nhu cầu dự án hiện tại chứ không phải
nhằm mục đích để chọn ra cơ sở dữ liệu tốt nhất. Sau bảng so sánh này, chúng ta sẽ
có cái nhìn rõ hơn về tính chất đặc điểm cũng nhƣ cách hoạt động của hai loại cơ sở
dữ liệu giúp cho những ai đang tìm kiếm chọn lựa giữa hai loại cơ sở dữ liệu này có
một quyết định chính xác nhất.
 So sánh giữa SQL và NoSQL

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 41


Báo cáo khóa luận tốt nghiệp 2020

Nội dung Cơ sở dữ liệu SQL Cơ sở dữ liệu NoSQL


Sử dụng ngôn ngữ truy vấn Có thể chứa dữ liệu mà
có cấu trúc. không cần chỉ định ra một
Ngôn ngữ
schema cụ thể. Dữ liệu
không có cấu trúc.
Dữ liệu và các mối quan hệ Chứa các dữ liệu liên
của nó đƣợc lƣu trữ trong quan đến nhau dƣới dạng
các bảng riêng biệt. Áp dụng tài liệu JSON với các cặp
các quy tắc bảo đảm toàn key – value.
vẹn dữ liệu, có tính chặt chẽ. Cho phép lƣu bất kỳ loại
Cấu trúc
dữ liệu nào tại bất cứ đâu, ở
Dữ liệu có cấu trúc và tổ
bất cứ thời điểm nào mà
chức, chứa các dữ liệu liên
không cần xác thực.
quan đến nhau ở trong các
bảng.
Có thể mở rộng nhƣng sẽ Cung cấp hiệu năng tuyệt
Khả năng mở
tốn khá nhiều công sức. vời và tính mở rộng vô
rộng
cùng dễ dàng.

Ngôn ngữ Sử dụng ngôn ngữ SQL để Linh hoạt trong sử dụng
Query truy vấn dữ liệu. ngôn ngữ truy vấn dữ liệu.

Phần mềm MySql, Oracle, Ms-SQL. MongoDB, Oracle, NoSQL

Bảng 2.3 So sánh giữa CSDL SQL và NoSQL


 Một số hạn chế của NoSQL
Không có schema: Với NoSQL trách nhiệm sẽ đƣợc chuyển từ cơ sở dữ liệu
sang nhà phát triển ứng dụng. Ví dụ, nhà phát triển có thể áp đặt cấu trúc thông qua
một hệ thống map đối tƣợng quan hệ. Nhƣng nếu chúng ta muốn lƣợc đồ từ dữ liệu,
NoSQL thƣờng sẽ không hỗ trợ.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 42


Báo cáo khóa luận tốt nghiệp 2020

Thiếu tính nhất quán: Dữ liệu đƣợc chèn vào cụm dù thế nào cũng sẽ khả
dụng trên toàn bộ hệ thống nhƣng không thể biết chắc chắn khoảng thời gian nào.
NoSQL lock-in: Hầu hết các hệ thống NoSQL đều tƣơng tự về khái niệm,
tuy nhiên cách thực hiện lại rất khác nhau. Mỗi hệ thống sẽ có cơ chế truy vấn dữ
liệu và quản lý riêng. Điều này có thể sẽ trở gây ra trở ngại nếu xảy ra các thay đổi
hệ thống trong quá trình làm việc.
Kỹ năng NoSQL: Một hạn chế khác đối với NoSQL là ngƣời sử dụng có thể
sẽ thiếu các kỹ năng chuyên môn ở mức tƣơng đối bởi hệ thống này còn khá mới và
không phải ai cũng biết cách sử dụng thành thạo.
 Tóm lại
NoSQL database chỉ là một kiểu database có cách lƣu trữ, truy vấn dữ liệu
hoàn toàn khác so với RDBMS. Và NoSQL không thay thế đƣợc hoàn toàn RDBMS
và SQL đƣợc. RDBMS vẫn sẽ giữ đƣợc chỗ đứng của mình. Một ứng dụng không
chỉ sử dụng một database duy nhất và có thể kết hợp cả SQL lẫn NoSQL.
Nói tóm lại, SQL và NoSQL có những sự đánh đổi khác nhau trong hệ thống
của mình. Mặc dù cả hai có thể cạnh tranh trong bối cảnh của một dự án nhƣng khi
đặt trong một bức tranh tổng thể thì lại có vai trò hỗ trợ, bổ sung cho nhau. Việc
quyết định lựa chọn công cụ nào cần phụ thuộc vào tính chất công việc thực tế.
 Qua so sánh thì NoSQL bổ sung thêm các đặc điểm cần hoàn thiện của SQL:
 Dữ liệu trong NoSQL DB đƣợc lƣu dƣới dạng document. Truy vấn dễ dàng
và nhanh hơn RDBMS.
 NoSQL có thể làm việc với dữ liệu dạng không có cấu trúc.
 Việc đổi cấu trúc dữ liệu (Thêm, xóa trƣờng hoặc bảng) rất dễ dàng và
nhanh gọn trong NoSQL.

2.7.7 Sự lựa chọn giữa NoSQL và SQL

Cơ sở dữ liệu SQL sẽ là lý tƣởng cho các dự án có một yêu cầu đã đƣợc xác
định sẵn và cần có sự thống nhất chặt chẽ giữa các dữ liệu. Còn cơ sở dữ liệu
NoSQL sẽ là lựa chọn tốt cho một yêu cầu chƣa đƣợc xác định hoàn toàn, tức là dữ

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 43


Báo cáo khóa luận tốt nghiệp 2020

liệu không quá liên quan, không quá cần sự thống nhất, các dữ liệu chƣa đƣợc xác
định hết và có thể sẽ phát triển ra thêm nhiều hơn, các dự án vô cùng coi trọng yếu tố
tốc độ và tính mở rộng.
NoSQL đƣợc sử dụng tốt nhất với nhu cầu cần truy vấn động. Nó thích hợp
cho các ứng dụng tầm trung trở lên, đặc biệt nếu chúng ta cần tốc độ nhanh cho một
cơ sở dữ liệu lớn vì NoSQL ngoài tốc độ đọc nhanh ra thì tốc độ ghi của nó rất
nhanh. Đối với SQL, dữ liệu phải đƣợc cấu trúc và không thay đổi hoặc dự án đang
làm cần dữ liệu phải đạt tính nhất quán cao, có các lƣợc đồ ít thay đổi thì SQL sẽ là
sự lựa chọn phù hợp trong bối cảnh này.
2.8 Hệ quản trị cơ sở dữ liệu MongoDB
2.8.1 Giới thiệu
MongoDB là một cơ sở dữ liệu NoSQL hƣớng tài liệu, mã nguồn mở đƣợc
viết hoàn toàn bằng ngôn ngữ C++. MongoDB đƣợc trang bị khả năng mở rộng,
hiệu suất cao, đảm bảo tính nhất quán, dễ dàng mở rộng và có lƣợc đồ tự do. Đây là
một cơ sở dữ liệu phi quan hệ thay vì lƣu trữ dữ liệu theo các bảng nhƣ cơ sở dữ
liệu truyền thống, MongoDB lƣu trữ cấu trúc dữ liệu thành các văn bản dựa vào
JSON với mô hình động, các văn bản này có thể lồng vào nhau tạo nên một hệ
thống cây phân cấp phức tạp nhƣng điều này khiến cho việc tích hợp dữ liệu cho
các ứng dụng trở nên nhanh, dễ dàng truy vấn và đánh chỉ mục hơn. Mục đích chính
trong việc phát triển MongoDB chính là thu hẹp khoảng cách giữa cơ sở dữ liệu cặp
khoá – giá trị có tính đáp ứng nhanh, khả năng mở rộng cao và cơ sở dữ liệu quan
hệ truyền thống với các chức năng hỗ trợ phong phú. MongoDB giữ lại các thuộc
tính thân thiện của SQL. Do đó, các câu truy vấn khá giống với SQL nên MongoDB
khá thích hợp để chuyển đổi từ ngôn ngữ truy vấn SQL sang NoSQL.

2.8.2 Lịch sử phát triển MongoDB


MongoDB là một cơ sở dữ liệu hƣớng tài liệu và đa nền tảng. Đƣợc phân
loại là một hệ quản trị cơ sở dữ liệu NoSQL. MongoDB sử dụng các tài liệu giống

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 44


Báo cáo khóa luận tốt nghiệp 2020

json với các lƣợc đồ tùy chọn. MongoDB đƣợc phát triển bởi MongoDB Inc. và
đƣợc cấp phép theo Server Side Public License (SSPL).

2.8.3 Đặc điểm của MongoDB


Lƣu trữ hƣớng Document: Có thể lƣu trữ các kiểu tài liệu phức tạp nhƣ:
mảng, bảng, kiểu integer và tất cả các kiểu dữ liệu đƣợc JSON hỗ trợ.
- Hỗ trợ chỉ mục đầy đủ: hỗ trợ các thao tác trên chỉ mục nhƣ xoá hay cấp lại
chỉ mục. Hỗ trợ chỉ mục trên bất kỳ các thuộc tính bao gồm:
o
Chỉ mục duy nhất
o
Chỉ mục hỗn hợp
o
Chỉ mục trên mảng
o
Chỉ mục TTL (TTL- Time to live)
o
Chỉ mục rải rác
o
Chỉ mục tìm kiếm văn bản (text)
- Tính sao chép và tính sẵn sàng cao: khả năng chịu lỗi, chịu tải cao, tính nhất
quán.
- Lƣu trữ phân tán: dữ liệu sẽ đƣợc tách ra thành những phân đoạn (phân
đoạn là một bản chính có một hoặc nhiều bản sao). Dựa trên một khóa chia sẻ, khóa
này xác định các dữ liệu trong bộ sƣu tập (collection) sẽ đƣợc phân phối và dữ liệu
đƣợc chia thành các phạm vi (dựa trên khóa phân đoạn) và đƣợc phân phối trên
nhiều phân đoạn.
- GridFS: Hiệu quả trong lƣu trữ các tập tin nhị phân trong JSON nhƣ: Video,
music, picture, tập tin cấu hình,… Không làm thay đổi dung lƣợng và truy xuất nhanh
chóng.

2.8.4 Mô hình dữ liệu


Mô hình dữ liệu của MongoDB bao gồm 4 thành phần: cơ sở dữ liệu
(database), bộ sƣu tập (collection), tài liệu document và trƣờng dữ liệu (field).

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 45


Báo cáo khóa luận tốt nghiệp 2020

Hình 2.15 Cấu trúc của MongoDB


 Cơ sở dữ liệu và bộ sƣu tập (Collection)
Cơ sở dữ liệu MongoDB nằm trên một máy chủ MongoDB, máy chủ này có
thể lƣu trữ nhiều cơ sở dữ liệu một cách độc lập và riêng biệt. Một cơ sở dữ liệu
chứa một hay nhiều bộ sƣu tập, trong bộ sƣu tập chứa các tài liệu. Có thể xem một
bộ sƣu tập tƣơng đƣơng với một bảng trong cơ sở dữ liệu quan hệ. Để kiểm soát
quyền truy cập vào cơ sở dữ liệu một tập hợp các thông tin bảo mật đƣợc thiết lập
cho cơ sở dữ liệu. Bộ sƣu tập còn có nghĩa là một nhóm các tài liệu. Nhƣ MongoDB
là cơ sở dữ liệu phi cấu trúc nên các tài liệu bên trong một bộ sƣu tập có thể không
đồng nhất.
Ví dụ: Các tài liệu sau có thể cùng đƣợc lƣu trữ trên cùng một tập hợp, dù có cấu
trúc không đồng nhất.

{ {
name: “Alan”, name: “max”,
age: 18, age: 18,
status: “D”,
groups: [“politics”, “new”] }
}

Một khi tài liệu (document) đầu tiên đƣợc đƣa vào cơ sở dữ liệu, một bộ sƣu
tập đƣợc tạo ra tự động và các văn bản sẽ đƣợc chèn thêm vào bộ sƣu tập này. Một
bộ sƣu tập mặc nhiên tạo ra nhƣ vậy đƣợc thiết lập với các thông số mặc định của
MongoDB nhƣ tự động lập chỉ mục, không gian lƣu trữ hoặc kích thƣớc giới hạn.
Ngoài ra bộ sƣu tập còn có thể đƣợc tạo ra một cách rõ ràng bằng dòng lệnh Create
Collection

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 46


Báo cáo khóa luận tốt nghiệp 2020

db.createCollection(<name>, {<configuration parameters>})

- Trong đó tên của một bộ sƣu tập là một chuỗi UTF-8.


Ví dụ: để khởi tạo một bộ sƣu tập có tên Recruitment với kích thƣớc lƣu trữ là
1.000.000 bytes và không tự động đánh chỉ mục, ta dùng dòng lệnh sau:
db.createCollection “Recruitment”, {size: 1000000, autoIndexId = false})

- Ngoài ra MongoDB còn cho phép phân cấp các bộ sƣu tập bằng dấu “.”

Ví dụ: Recruitment.fulltime, Recruitment.parttime trong đó hai bộ sƣu tập


fulltime và parttime đều thuộc bộ sƣu tập Recruitment.
 Tài liệu (document)
Tài liệu (document đóng vai trò quan trọng trong việc xây dựng mô hình dữ
liệu cho các ứng dụng trong MongoDB. Nếu xem bộ sƣu tập là một bảng trong cơ
sở dữ liệu quan hệ thì tài liệu có thể xem là một dòng (row) dữ liệu. Các tài liệu
trong MongoDB đƣợc lƣu dƣới định dạng BSON đây là một bản phát triển của
JSON. Cũng giống nhƣ JSON, nhƣng BSON đƣợc lƣu trữ dƣới dạng nhị phân
binary và đƣợc bổ sung thêm một số kiểu dữ liệu nhƣ là Date và Binary. BSON hỗ
trợ hầu hết các kiểu dữ liệu có trong ngôn ngữ lập trình.
{
name: “Sussan”,
age: 28,
status: “A”,
groups: [“sports”, “news”]
}

Hình 2.16 Ví dụ về tài liệu trong MongoDB


Khi một tài liệu đƣợc thêm vào hệ thống sẽ tự động gán cho nó một giá trị
_Id kiểu chuỗi và duy nhất. Tài liệu bao gồm các cặp khoá với các giá trị tƣơng
ứng. Các giá trị đó có thể là một tài liệu khác, một danh sách các tài liệu cũng nhƣ

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 47


Báo cáo khóa luận tốt nghiệp 2020

tất cả các kiểu dữ liệu cơ bản, các khóa trong tài liệu không đƣợc giống nhau.
MongoDB phân biệt giữa chữ hoa và chữ thƣờng.
Để tạo một tài liệu trong MongoDB ta sử dụng lệnh
db.<Collection> . insert{key_1 : ” value_1”, key_2: “value_2”, … } ;

Ví dụ: Thêm vào bộ sƣu tập jobs một job có name là “Nhan vien tu van BDS”,
mucluong là 1200000 và noilamviec là “Quận Gò Vấp, TpHCM”

Collection Document

db.jobs.insert(
{
name: “Nhan vien tu van BDS”,
mucluong: 1200000,
noilamviec: “Quận Gò Vấp, TpHCM”,
}
)

Hình 2.17 Ví dụ Thêm vào bộ sƣu tập jobs

Trƣờng dữ liệu
Tài liệu là một tập hợp các trƣờng dữ liệu (field), mỗi trƣờng dữ liệu bao
gồm một cặp khoá – giá trị.

db.jobs.insert( Collection
{
name: “Developer”, field: value
age: 1200000, field: value Document
noilamviec: “TpHCM”, field: value
}
)

Hình 2.18 Ví dụ về trƣờng dữ liệu trong MongoDB

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 48


Báo cáo khóa luận tốt nghiệp 2020

Kiểu dữ liệu
MongoDB cung cấp rất nhiều kiểu dữ liệu khác nhau cho các trƣờng tài liệu
(document field), bao gồm:
- Kiểu dữ liệu vô hƣớng (scalar): boolean, integer, double.
- Kiểu chuỗi ký tự: string (UTF-8), regular expression, code (Javascript)
- Object (BSON object)
- Object id
- Ngoài ra còn các kiểu: null, array, date.
Sự tƣơng đồng giữa các khái niệm trong mô hình dữ liệu giữa SQL và MongoDB

Hình 2.19 Tƣơng quan giữa các khái niệm của SQL và MongoDB

2.8.5 Thiết kế mô hình dữ liệu


Nhƣ đã đề cập ở trên, trong mô hình dữ liệu MongoDB có 4 thành phần
chính: cơ sở dữ liệu (Database), bộ sƣu tập (collection), tài liệu (document), trƣờng
dữ liệu (field). Trong mỗi cơ sở dữ liệu bao gồm nhiều bộ sƣu tập khác nhau, trong
mỗi bộ sƣu tập là một tập hợp các tài liệu có cấu trúc có thể khác nhau và trong mỗi
tài liệu có chứa tập các trƣờng dữ liệu.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 49


Báo cáo khóa luận tốt nghiệp 2020

Thách thức trong việc xây dựng mô hình dữ liệu là làm thế nào để cân bằng
nhu cầu của ứng dụng và các đặc điểm về hiệu suất của hệ thống. Trọng điểm trong
thiết kế mô hình dữ liệu của một ứng dụng MongoDB luôn xoay quanh cấu trúc của
tài liệu và làm thế nào để mô tả mối quan hệ giữa các dữ liệu. Có hai cách để mô tả
mối quan hệ của các dữ liệu đó là nhúng (embed) hay tham chiếu (reference) vào
các tài liệu.
Mô hình dữ liệu nhúng (Embedded data model)
Nhúng (embed) xoay quanh việc lƣu trữ các tài liệu có quan hệ với nhau vào
cùng một cấu trúc tài liệu đơn giản. MongoDB cho phép nhúng các cấu trúc tài liệu
đƣợc xem là một tài liệu con vào các trƣờng dữ liệu hoặc mảng của các tài liệu cha.
Các mô hình dữ liệu nhúng đƣợc xem cho phép ứng dụng có thể truy xuất và
thao tác với dữ liệu bằng một thao tác cơ sở dữ liệu duy nhất. Có thể nhúng những
dữ liệu liên quan trong một cấu trúc đơn giản hoặc một tài liệu. Những mô hình dữ
liệu này thƣờng đƣợc gọi là mô hình “phi chuẩn hóa”. Mô hình dữ liệu nhúng cho
phép ứng dụng lƣu trữ các thông tin có liên quan với nhau vào cùng một bảng ghi.
Lúc này chƣơng trình chỉ cần thực hiện một vài bƣớc truy vấn hoặc cập nhật để
hoàn tất các thao tác thƣờng dùng.
Mô hình dữ liệu nhúng cung cấp hiệu suất tốt hơn cho hoạt động đọc cũng
nhƣ các yêu cầu và truy xuất dữ liệu. Mô hình này có thể cập nhật dữ liệu liên quan
thông qua một hoạt động ghi dữ liệu duy nhất. Nhƣng với mô hình này, nếu lƣợng
dữ liệu sau khi nhúng đƣợc tạo ra nhiều sẽ làm ảnh hƣởng đến hoạt động ghi và làm
phân mảnh dữ liệu.
Ghi chú: Dung lƣợng lƣu trữ của Document phải nhỏ hơn kích thƣớc tối đa của tài
liệu có cấu trúc BSON nghĩa là nhỏ hơn 16MB.
Sử dụng mô hình dữ liệu nhúng khi:
- Các đối tƣợng lƣu trữ mô tả chi tiết. Có thể xem là mối quan hệ một - một.
- Đối tƣợng đƣợc tham chiếu đến một số đối tƣợng khác hay là một - nhiều.
- Yêu cầu hiệu suất đọc ghi cao nên cần áp dụng mô hình dữ liệu nhúng.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 50


Báo cáo khóa luận tốt nghiệp 2020

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


Tham chiếu lƣu trữ mối quan hệ giữa các dữ liệu nhƣ liên kết hoặc các tham
chiếu từ một tài liệu này đến tài liệu khác. Mô hình dữ liệu tham chiếu hay còn gọi
là mô hình dữ liệu “chuẩn hóa”. Tham chiếu thƣờng sử dụng đối với bộ sƣu tập hoặc cơ
sở dữ liệu.
Tham chiếu thủ công (Manual reference)
- Khi nhúng các tham chiếu vào làm cho dữ liệu bị trùng lặp nhiều nhƣng
hiệu suất về truy vấn và xử lý dữ liệu không cao, nên tham chiếu.
- Khi nhúng mà dữ liệu đƣợc tạo ra vƣợt quá dung lƣợng lƣu trữ cho phép
của BSON.
- Khi mối quan hệ phức tạp của các tài liệu khác nhau ở mức nhiều – nhiều.
Tham chiếu thủ công lƣu _id của một tài liệu này vào một tài liệu khác dùng
để tham chiếu. Sau đó, ứng dụng có thể thực hiện truy vấn thứ hai để trả về dữ liệu
liên quan. Đây là kiểu tham chiếu đơn giản và đầy đủ cho hầu hết trƣờng hợp.
Ví dụ: Thêm dữ liệu vào hai tài liệu people và place. Ta dùng _id của tài liệu
people để tham chiếu đến tài liệu place.
db.Address.insert db.Employee.insert
( (
{ {
“_id”: objectId1 , “name”: “ No Name”,
“street”: “ Số 2 Quang Trung” “place_id”: objectId1
} }
) )

Sử dụng tham chiếu thủ công cho hầu hết các trƣờng hợp cần lƣu trữ quan hệ
giữa hai tài liệu. Loại tham chiếu này dễ dàng thực hiện và ứng dụng có thể xử lý
tham chiếu khi cần thiết. Nếu cần tham chiếu từ các tài liệu trong một bộ sƣu tập

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 51


Báo cáo khóa luận tốt nghiệp 2020

đến các tài liệu khác trong nhiều bộ sƣu tập khác nhau thì cần dùng kiểu tham chiếu
DBRef.
DBRef (Database Reference)
DBRef là một quy ƣớc đại diện cho một loại tài liệu, không phải là một loại
tham chiếu đặc biệt. Nó cũng dùng để tham chiếu từ một tài liệu này đến một tài
liệu khác sử dụng các thông số nhƣ _id, tên bộ sƣu tập (Collection). Một số trƣờng
hợp còn sử dụng thêm tên của cơ sở dữ liệu và các tùy chọn của _id. Bằng cách
thêm vào tên của tham chiếu, DBRef cho phép các tài liệu từ nhiều bộ sƣu tập có
thể liên kết với nhau một cách dễ dàng từ một tài liệu duy nhất do DBRef tạo ra.
Một tham chiếu DBref thường bao gồm các trường như:
- $ref: Tên của bộ sƣu tập (Collection) chứa tài liệu dùng để tham chiếu.
- $id: Chứa giá trị của _id trong tài liệu tham chiếu.
- $db: Thông tin thiết lập. Tên của cơ sở dữ liệu chứa tài liệu tham chiếu.
Ví dụ: Khảo sát DBRef address trong ví dụ sau:

{
"_id":ObjectId("53402597d852426020000002"),
"address": {
"$ref": "address_home",
"$id": ObjectId("534009e4d852427820000002"),
"$db": "EmployeeInfo"},
"contact": "0987654321",
"dob": "01-01-1991",
"name": "Julia"
}
}

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 52


Báo cáo khóa luận tốt nghiệp 2020

DBRef address xác định các tài liệu tham chiếu giá trị của trƣờng address
nằm trong bộ sƣu tập address_home của cơ sở dữ liệu EmployeeInfo và có id là
534009e4d852427820000002.
Mô hình quan hệ giữa các tài liệu (document)
Mối quan hệ một – một (one – to – one) giữa các tài liệu
Mô hình nhúng một – một là mô hình dữ liệu sử dụng phƣơng thức nhúng các tài
liệu để mô tả mối quan hệ dữ liệu.

Ví dụ : Ta có mối quan hệ một - một giữa User và address, trong đó address phụ
thuộc vào User bằng cách lƣu một giá trị tham chiếu đến User_Info nhƣ sau:

Document User Document Address


{ {
_id: "U001", _id: "A001",
name:"Corbin" UserId: “Corbin”,
} street: "123 Fake Street",
city: "Faketon",
state: "MA", zip: 12345
}

Nếu dữ liệu địa chỉ thƣờng xuyên đƣợc truy cập, lấy thông tin về tên ngƣời
sống ở địa chỉ đấy, ứng dụng sẽ phải thực hiện rất nhiều truy vấn để có thể lấy ra
thông tin cần thiết. Cách ở đây ta sẽ là nhúng văn bản địa chỉ vào văn bản tƣơng
ứng của ngƣời sống tại địa chỉ đấy. Khi đó ứng dụng có thể lấy thông tin chỉ với
một truy vấn.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 53


Báo cáo khóa luận tốt nghiệp 2020

Document User
{
_id: "U001",
name: "Corbin",

address: {
street: "12 Nguyễn Văn Bảo",

city : "HCM City",

state : "MA", zip: 1234


}

Mô hình nhúng một - nhiều giữa các tài liệu


Khảo sát mối quan hệ một nhiều giữa các tài liệu. Ví dụ trong trƣờng hợp
một ngƣời có nhiều địa chỉ nhƣ sau:
Document User
{
_id: "U002"
Name: "David",
Address_1: {
Address_id: "David",
street: "Số 2 Lê Lai",
city: "HCM City",
state: null,
zip: 70000

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 54


Báo cáo khóa luận tốt nghiệp 2020

},
Address _2
{
patron_id: "David",
street: “13 Lê Lợi",
city: "HCM City",
state: null,
zip: 70000
}
}

Mô hình hóa dữ liệu theo kiểu nhúng một – nhiều sẽ giúp truy vấn dữ liệu
nhanh hơn.
{
_id: "U002",
Name: "David",
Address:
[ {
Address_id: "David",
street: "Số 2 Lê Lai",
city: "HCM City",
state: null,
zip: 70000
},
{
patron_id: "David",
street: “13 Lê Lợi",
city: "HCM City",

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 55


Báo cáo khóa luận tốt nghiệp 2020

state: null,
zip: 70000
}
]
}

Mô hình tham chiếu One-to-Many mối quan hệ giữa các văn bản
Trong một số trƣờng hợp, mô hình hóa dữ liệu theo kiểu tham chiếu có ƣu
điểm hơn so với mô hình hóa dữ liệu theo kiểu nhúng. Hãy xem xét ví dụ sau đây
về mối quan hệ giữa Publisher và book. Nếu nhúng document publisher trong
document book sẽ dẫn đến sự lặp lại dữ liệu publisher:
Document book
{
title: "MongoDB: The Definitive Guide",
author: [ "Kristina Chodorow", "Mike Dirolf" ],
published_date: ISODate("2010-09-24"),
pages: 216,
language: "English",
publisher: {

name: "O'Reilly Media",

founded: 1980,

location: "CA"

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 56


Báo cáo khóa luận tốt nghiệp 2020

}
{
title: "50 Tips and Tricks for MongoDB Developer",
author: "Kristina Chodorow",
published_date: ISODate("2011-05-06"),
pages: 68,
language: "English",

publisher: {

name: "O'Reilly Media",

founded: 1980,

location: "CA"
}
}
Để tránh lặp lại dữ liệu publisher. Lựa chọn sử dụng tài liệu tham khảo và
giữ thông tin publisher ở một document riêng biệt.

2.8.6 Chỉ mục


Chỉ mục là một dạng cấu trúc dữ liệu giúp lƣu giá trị của các trƣờng dữ liệu
trong văn bản hay bộ sƣu tập. Đƣợc sử dụng với mục đích tăng hiệu suất của các
lệnh truy vấn phổ biến. Đánh chỉ mục tại các trƣờng dữ liệu thƣờng xuyên xuất hiện
trong các câu truy vấn và các xử lý này sẽ trả về kết quả đã đƣợc sắp xếp.
MongoDB đánh chỉ mục tự động vào trƣờng _id. Đặc biệt chỉ mục này không thể bị
xóa.
Các lƣu ý khi đánh chỉ mục:
 Mỗi chỉ mục yêu cầu dung lƣợng tối thiểu 8KB.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 57


Báo cáo khóa luận tốt nghiệp 2020

 Đánh chỉ mục làm tăng tốc độ đọc dữ liệu của ứng dụng nhƣng lại gây
chậm trễ cho các hoạt động ghi dữ liệu.
 Với những bộ sƣu tập yêu cầu đọc cao hơn ghi nên sử dụng chỉ mục,
ngƣợc lại nếu hệ thống yêu cầu ghi cao hơn đọc nên hạn chế việc đánh chỉ mục.

Đánh chỉ mục ta dùng cú pháp lệnh sau :

db.collection.createIndex(key, option)

Trong đó
- Key và option là các tài liệu.
- Key bao gồm cặp trƣờng dữ liệu và giá trị, trong đó trƣờng là khóa của chỉ
mục, key chính là kiểu index của trƣờng dữ liệu.
- Option là các giá trị tùy chọn kiểm soát việc tạo các chỉ mục.
Mongo hỗ trợ nhiều loại chỉ mục khác nhau, tùy vào kiểu dữ liệu và mục
đích truy vấn mà ta có thể chọn kiểu chỉ mục thích hợp, các loại chỉ mục đó bao
gồm: Chỉ mục đơn (Single Field Indexes), chỉ mục hỗn hợp (Compound Indexes),
chỉ mục đa khóa (Multikey Indexes), chỉ mục văn bản (Text Indexes).
2.8.7 Các bƣớc triển khai
Nhân rộng là một quá trình đồng bộ hóa dữ liệu trên nhiều máy chủ. Để dự
phòng và chuyển đổi dự phòng của một cụm dữ liệu MongoDB trong các nút dữ
liệu có sẵn, MongoDB cung cấp một giải pháp nhân rộng không đồng bộ. Sao chép
dùng để lƣu trữ dự phòng, đảm bảo toàn vẹn dữ liệu. Trong thiết lập này chỉ có một
nút chính của cơ sở dữ liệu là phụ trách các hoạt động ghi (primary server/node).
Các hoạt động đọc dữ liệu có thể thực hiện trên cùng máy chủ để đảm bảo tính nhất
quán mạnh hoặc trên các máy chủ khác để thỏa mãn nhất quán cuối.
Replica - set là một hình thức nhân rộng của MongoDB. Trong mô hình replica –
set có các thành phần nhƣ:
Primary: Hình thức nhân rộng này có một primary xử lý tất cả các hoạt
động ghi từ ngƣời dùng, một mô hình nhân rộng replica – set chỉ có duy nhất một

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 58


Báo cáo khóa luận tốt nghiệp 2020

primary. Trong tất cả các nhóm dữ liệu khác và secondaries cũng cập nhật hoạt
động từ primary nên tất cả đều có chung dữ liệu. Để hỗ trợ việc nhân rộng, mọi thay
đổi tại primary đều đƣợc lƣu trữ tại oplog của nó.
Secondaries: Sẽ nhân bản primary dựa vào oplog sẽ thực hiện ghi nhận lại
tất cả các yêu cầu để thực hiện thêm/sửa/xóa data, các thay đổi trên data này sẽ
đƣợc ghi lại vào file oplog và áp dụng tất cả các hoạt động của primary đã thực
hiện. Một replica-set có thể có nhiều hơn một secondary. Ngƣời dùng không thể ghi
dữ liệu trực tiếp vào secondary mà chỉ có thể đọc dữ liệu. Nếu primary gặp sự cố thì
secondaries sẽ thay thế trở thành một primary mới.
Arbiter: Ngoài primary và secondary ra, ta còn có một thiết lập nhân bản
khác đó là arbiter. Arbiter sẽ không lƣu trữ dữ liệu, nhiệm vụ chính của nó sẽ ghi lại
các yêu cầu về heartbeat (là một khái niệm, tên gọi dùng để duy trì kết nối giữa 1
node với database primary) và bầu chọn đối tƣợng nào sẽ trở thành primary. Arbiter
chỉ là arbiter, nó không thể trở thành primary hay secondary.

2.8.8 Phân mảnh


Phân mảnh là một phƣơng pháp để lƣu trữ dữ liệu trên nhiều máy chủ.
MongoDB sử dụng phân mảnh để hỗ trợ triển khai với dữ liệu rất lớn với lƣu lƣợng
truy xuất cao. Sharding hay còn gọi là mở rộng theo chiều ngang (horizontal
scaling), chia nhỏ dữ liệu và lƣu trữ tại nhiều máy chủ hoặc shard. Mỗi shard này là
một cơ sở dữ liệu độc lập và tập các shard này sẽ tạo thành một cơ sở dữ liệu hoàn
chỉnh. Phân mảnh dữ liệu đã giải quyết đƣợc bài toán về mở rộng quy mô để hỗ trợ
dữ liệu có tần suất truy cập cao và dữ liệu lớn.
Phân mảnh trong MongoDB
MongoDB hỗ trợ sharding thông qua cấu hình các cụm sharded. Một cụm
sharded bao gồm: shards, truy vấn định tuyến và 3 máy chủ cấu hình.
Shards dùng để lƣu trữ dữ liệu. Để tăng tính sẵn sàng cao và nhất quán dữ
liệu, trong mỗi cụm sharded sẽ lƣu trữ một replica – set.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 59


Báo cáo khóa luận tốt nghiệp 2020

Truy vấn định tuyến (query router): Dùng phân bổ yêu cầu truy vấn từ
ngƣời dùng đến các shards thích hợp. Mỗi shard có thể có nhiều truy vấn định
tuyến.
Máy chủ cấu hình (config server): Lƣu trữ các cụm siêu dữ liệu. Dữ liệu
này sẽ ánh xạ đến các cụm dữ liệu trong shards. Các truy vấn định tuyến dùng siêu
dữ liệu này để nhắm đến các shard cụ thể. Để thiết lập một cụm sharded cần chính
xác 3 máy chủ cấu hình.
Phân tán dữ liệu
MongoDB phân tán dữ liệu hoặc các shards, ở cấp độ bộ sƣu tập, việc phân
tán dữ liệu này dựa vào các khóa phân mảnh (shard key).
Để tiến hành phân mảnh một bộ sƣu tập ta cần chọn một khóa phân mảnh.
Một khóa phân mảnh hay là một chỉ mục đơn hay chỉ mục hỗn hợp nó có trên môi
trƣờng tài liệu của bộ sƣu tập. MongoDB chia các giá trị của khóa phân mảnh vào
các khối (chunks) và phân tán các khối trên các shards. Để chia các giá trị khóa
phân mảnh vào khối. MongoDB dùng nhiều phân vùng hoặc vào phân vùng bảng
băm.
Dựa vào phạm vi ảnh hƣởng: Mongo sẽ chia các tập dữ liệu theo phạm vi
ảnh hƣởng đƣợc xác định bởi các giá trị của khóa phân vùng để cung cấp các vùng
ảnh hƣởng. Với một hệ thống phân vùng dựa vào ảnh hƣởng, những tài liệu có giá
trị các khóa phân mảnh gần nhau có thể có đặt vào cùng khối và do đó sẽ thuộc về
cùng một shard.
Dựa vào bảng băm: Đối với phân vùng dựa vào bảng băm, Mongo sẽ tính
giá trị bảng băm của các trƣờng dữ liệu và sau đó dùng các bảng băm này để tạo ra
các khối dữ liệu. Đối với bảng băm hai tài liệu có giá trị khóa phân mảnh giống
nhau sẽ không cùng nằm trên một khối. Điều này đảm bảo phân phối bộ sƣu tập
một cách ngẫu nhiên tại các cụm.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 60


Báo cáo khóa luận tốt nghiệp 2020

2.8.9 Mô hình truy vấn


Truy vấn dữ liệu tại MongoDB đƣợc thể hiện thông qua cú pháp JSON sau
đó đƣợc chuyển đến các đối tƣợng BSON bởi trình điều khiển của cơ sở dữ liệu.
Mô hình dữ liệu cho phép truy vấn đến tất cả các tài liệu của bộ sƣu tập kể cả những
tài liệu nhúng hay mảng. Thông qua việc sử dụng chỉ mục các truy vấn có thể tự
động hình thành trong thời gian chạy chƣơng trình. Không phải tất cả các truy vấn
điều đƣợc MongoDB hỗ trợ sẵn mà nó còn phụ thuộc vào trình điều khiển hỗ trợ
ngôn ngữ lập trình.
Mô hình truy vấn của MongoDB hỗ trợ:
- Truy vấn tất cả các tài liệu kể cả tài liệu nhúng
- So sánh <, ≤, ≥, >
- Biểu thức điều kiện equals, not equals, exists, in, not in,…
- Biểu thức truy vấn: AND, OR
- Sắp xếp bằng nhiều thuộc tính
- Group by
Sự tƣơng quan giữa SQL và MongoDB
MongoDB SQL
Tạo bộ sƣu tập “users” CREATE TABLE users
db.users.insert (
({ id MEDIUMINT NOT NULL
user_id: "abc123", AUTO_INCREMENT,
age: 55, user_id Varchar(30),
status: "A" age Number,
}) status char(1),
Hay có thể dùng lệnh PRIMARY KEY (id)
db.createCollection("users") )

Thêm thuộc tính join_date kiểu ALTER TABLE users

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 61


Báo cáo khóa luận tốt nghiệp 2020

DateTime
db.users.update ADD join_date DATETIME
( {},
{ $set: { join_date: new Date() } },
{ multi: true })
Bảng 2.5 Sự tƣơng quan giữa SQL và MongoDB
2.9 Cơ sở dữ liệu SQL
2.9.1 SQL là gì?
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 là ngôn ngữ truy vấn có cấu trúc.
Tất cả RDBMS (hệ thống quản lý cơ sở dữ liệu quan hệ) nhƣ MySQL,
Oracle, MS Access, Sybase, Informix, Postgres và SQL Server đều sử dụng SQL
nhƣ là ngôn ngữ cơ sở dữ liệu chuẩn. SQL là một ngôn ngữ đƣợc tiêu chuẩn hóa
bởi ANSI (American National Standards Institute) – Viện tiêu chuẩn quốc gia Hoa
Kỳ. Đây cũng đồng thời là ngôn ngữ đƣợc sử dụng phổ biến trong các hệ thống
quản lý cơ sở dữ liệu quan hệ và hỗ trợ sử dụng trong các công ty lớn về công nghệ.
Ngoài việc là một ngôn ngữ máy tính phổ biến, SQL còn là ngôn ngữ máy tính hữu
dụng. Vì vậy, ngƣời ta thƣờng sử dụng SQL cho các mục đích:
 Tạo cơ sở dữ liệu, bảng và view mới.
 Để chèn các bảng ghi vào trong một cơ sở dữ liệu.
 Để xóa các bảng ghi từ một cơ sở dữ liệu.
 Để lấy dữ liệu từ một cơ sở dữ liệu.
Hiện nay hầu hết các website đều sử dụng MySQL làm cơ sở quản lý dữ liệu
cho website trên hosting. Việc hiểu biết về ngôn ngữ lập trình SQL sẽ giúp chúng ta
thao tác dữ liệu tốt hơn mà không cần nhờ đến hỗ trợ từ các dịch vụ cho thuê
hosting. Đó là viết tắt của Structured Query Language là ngôn ngữ truy vấn có cấu
trúc. Nó là một ngôn ngữ, là tập hợp các lệnh để tƣơng tác với cơ sở dữ liệu. Dùng

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 62


Báo cáo khóa luận tốt nghiệp 2020

để lƣu trữ, thao tác và truy xuất dữ liệu đƣợc lƣu trữ trong một cơ sở dữ liệu quan
hệ. Trong thực tế, SQL là ngôn ngữ chuẩn đƣợc sử dụng hầu hết cho hệ cơ sở dữ
liệu quan hệ. Tất cả các hệ thống quản lý cơ sở dữ liệu quan hệ (RDMS) nhƣ
MySQL, MS Access, Oracle, Postgres và SQL Server đều sử dụng SQL làm ngôn
ngữ cơ sở dữ liệu chuẩn.
Hầu nhƣ công ty nào lớn cũng cần xây dựng một hệ thống để lƣu trữ cơ sở
dữ liệu. Mọi thứ trong cơ sở dữ liệu này sẽ đƣợc diễn tả ra thành nhiều bảng, có mối
quan hệ với nhau. Để truy vấn và lấy dữ liệu từ các bảng này nhằm tổng hợp thành
thông tin nào đó, ngƣời ta dùng đến SQL thông qua các câu query.

2.9.2 Lịch sử SQL


Nhìn chung, để phát triển đƣợc nhƣ ngày nay, SQL đã phải trải qua giai đoạn
hình thành và thay đổi suốt nhiều năm:
 1970 – Tiến sĩ Edgar F. “Ted” Codd của IBM đƣợc biết đến nhƣ là cha đẻ
của các cơ sở dữ liệu quan hệ mô tả một mô hình quan hệ cho cơ sở dữ liệu trong
quyển sách của mình.
 1974 – Structured Query Language đầu tiên đƣợc phát triển.
 1978 – IBM đã làm việc để phát triển các ý tƣởng của Codd và đƣa ra một
sản phẩm có tên System / R. Cùng thời điểm đó Relational Software, Inc cũng phát
triển cơ sở dữ liệu của riêng họ.
 1979 – Relational Software, Inc. giới thiệu Oracle V2 và nhận đƣợc nhiều
sự chú ý từ công chúng.
 1986 – IBM đã phát triển nguyên mẫu đầu tiên của cơ sở dữ liệu quan hệ và
đƣợc tiêu chuẩn hóa bởi ANSI. Cơ sở dữ liệu quan hệ đầu tiên đƣợc phát hành bởi
Relational Software sau này đƣợc gọi là Oracle.

2.9.3 Chức năng của SQL


Một trong những lý do khiến cho SQL đƣợc sử dụng phổ biến, chính là nó đã
cho phép ngƣời dùng thực hiện đa dạng các chức năng sau:

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 63


Báo cáo khóa luận tốt nghiệp 2020

 Cho phép ngƣời dùng truy cập dữ liệu trong các hệ thống quản lý cơ sở dữ
liệu quan hệ.
 Cho phép ngƣời dùng mô tả dữ liệu.
 Cho phép ngƣời dùng xác định dữ liệu trong cơ sở dữ liệu và thao tác dữ liệu đó.
 Cho phép nhúng trong các ngôn ngữ khác sử dụng mô-đun SQL, thƣ viện và
trình biên dịch trƣớc.
 Cho phép ngƣời dùng tạo, thả các cơ sở dữ liệu và bảng.
 Cho phép ngƣời dùng tạo chế độ view, thủ tục lƣu trữ, chức năng trong cơ sở dữ
liệu.
 Cho phép ngƣời dùng thiết lập quyền trên các bảng, thủ tục và view.

Ví dụ: Trƣớc đây, các trƣờng đại học thƣờng lƣu trữ thông tin sinh viên bằng
hồ sơ giấy. Sau đó, cất giữ hồ sơ trong kho. Khi cần tìm kiếm hoặc thêm/xóa/sửa
thông tin nào đó, họ phải mất rất nhiều thời gian để lục tìm lại hồ sơ. Trong khi, nếu
lƣu trữ thông tin vào một hệ thống cơ sở dữ liệu, họ chỉ cần gõ một câu lệnh SQL
ngắn là đã có thể trích xuất đƣợc thông tin cần. Việc thêm/xóa/sửa cũng đƣợc thực
hiện một cách dễ dàng, nhanh chóng.

2.9.4 Đặc điểm của SQL


SQL là ngôn ngữ tựa tiếng Anh: khi viết các câu truy vấn thao tác lên dữ
liệu thì các câu lệnh này rất gần gũi với ngôn ngữ tiếng anh nên rất dễ sử dụng.
SQL là ngôn ngữ phi thủ tục: SQL không yêu cầu ta cách thức truy nhập
CSDL nhƣ thế nào. Tất cả các thông báo của SQL đều rất dễ sử dụng và ít khả năng
mắc lỗi. SQL cung cấp lƣợng lệnh to lớn để thao tác lên dữ liệu: giúp cho quá trình
thao tác với dữ liệu trở nên dễ dàng và nhanh chóng hơn.
SQL cung cấp tập lệnh phong phú cho các công việc truy vấn dữ liệu:
bao gồm các thao tác chèn, cập nhật, xóa các hàng trong một quan hệ: Tạo, sửa đổi,
thêm, xóa các đối tƣợng trong của CSDL, điều khiển việc truy nhập tới cơ sở dữ
liệu và các đối tƣợng của CSDL để đảm bảo tính bảo mật của cơ sở cho dữ liệu.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 64


Báo cáo khóa luận tốt nghiệp 2020

Đảm bảo tính nhất quán và sự ràng buộc của CSDL. Tuy nhiên để sử dụng tốt các
tập lệnh trên thì ngƣời viết các câu lệnh phải thực sự hiểu rõ cấu trúc database của
mình.
2.10 Hệ quản trị cơ sở dữ liệu SQL (SQL Server)
2.10.1 SQL Server là gì?
Hệ quản trị cơ sở dữ liệu là một khái niệm trong lĩnh vực công nghệ thông
tin. Đây là thuật ngữ đƣợc dùng để chỉ các chƣơng trình, phần mềm có tác dụng lƣu
trữ dữ liệu mà vẫn đảm bảo đƣợc các tính chất của cấu trúc trong cơ sở dữ liệu. Bên
cạnh đó, hệ quản trị cơ sở dữ liệu cũng cung cấp cho ngƣời sử dụng nhiều tính năng
hữu ích để hỗ trợ quá trình đọc, thêm, xóa, sửa dữ liệu trên cơ sở dữ liệu.
Microsoft SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ (Relational
Database Management System - RDBMS) cung cấp cách tổ chức dữ liệu bằng cách
lƣu chúng vào các bảng. Dữ liệu quan hệ đƣợc lƣu trữ trong các bảng và các quan
hệ đó đƣợc định nghĩa giữa các bảng với nhau.
Ngƣời dùng truy cập dữ liệu trên Server thông qua ứng dụng. Ngƣời quản trị
CSDL truy cập Server trực tiếp để thực hiện các chức năng cấu hình, quản trị và
thực hiện các thao tác bảo trì CSDL.
Ngoài ra, SQL Server là một CSDL có khả năng mở rộng, nghĩa là chúng có
thể lƣu một lƣợng lớn dữ liệu và hỗ trợ tính năng cho phép nhiều ngƣời dùng truy
cập dữ liệu đồng thời.

2.10.2 Lịch sử của SQL Server


Năm 1989, phiên bản đầu tiên của SQL Server 1.0 ra đời đƣợc dùng cho các
hệ điều hành 16 bit và đƣợc phát triển cho tới ngày nay. Cho tới khi SQL Server ra
phiên bản 6.5 thì đƣợc thị trƣờng chấp nhận rộng rãi. Một đột phá cải tiến cho SQL
Server 7.0 khi đƣợc Microsoft viết lại một engine hoàn toàn mới. Đến khi SQL
Server từ phiên bản 7.0 cải tiến lên 8.0 chủ yếu phát triển về tính năng thiết kế
website. Cho đến ngày nay thì phiên bản mới nhất đó là SQL Server 2016 hỗ trợ bộ
vi xử lý 64 bit ra đời vào ngày 1 tháng 6 năm 2016.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 65


Báo cáo khóa luận tốt nghiệp 2020

2.10.3 Chức năng, vai trò của hệ quản trị cơ sở dữ liệu


Chức năng của hệ quản trị cơ sở dữ liệu
 Thực hiện lƣu trữ các dữ liệu
 Tạo và duy trì cơ sở dữ liệu
 Cho phép cùng lúc nhiều ngƣời dùng truy xuất
 Hỗ trợ bảo mật và riêng tƣ
 Cho phép ngƣời dùng đƣợc xem và thực hiện xử lý dữ liệu
 Cho phép ngƣời dùng đƣợc cập nhật và lƣu trữ các dữ liệu sau khi đã cập
nhật
 Cung cấp tính nhất quán giữa các bản ghi khác nhau
 Giúp việc truy cập các dữ liệu đƣợc chọn nhanh hơn bằng cách cung cấp một
cơ chế chỉ mục index hiệu quả
 Bảo vệ dữ liệu, tránh đƣợc tình trạng mất dữ liệu khi thực hiện sao lƣu –
backup hoặc phục hồi – recovery
Vai trò của hệ quản trị cơ sở dữ liệu
 Cung cấp môi trƣờng tạo lập cơ sở dữ liệu: Nhắc đến vai trò của hệ quản trị
cơ sở dữ liệu thì không thể nhắc tới khả năng này. Vai trò của các hệ quản trị cơ sở
dữ liệu đó chính là cung cấp cho ngƣời dùng một ngôn ngữ định nghĩa dữ liệu để
cho họ có thể tự mô tả, khai báo kiểu và cấu trúc của dữ liệu.
 Cung cấp cách cập nhật và khai thác dữ liệu: Các hệ quản trị cơ sở dữ liệu
SQL có nhiệm vụ cung cấp cho ngƣời dùng ngôn ngữ thao tác dữ liệu để họ có thể
diễn tả các yêu cầu cũng nhƣ thực hiện các thao tác cập nhật, khai thác CSDL.
Những thao tác dữ liệu mà ngƣời dùng có thể thực hiện là nhập, sửa và xóa dữ liệu.
Còn các khai thác dữ liệu bao gồm tìm kiếm và kết xuất dữ liệu.
 Cung cấp các công cụ kiểm soát và điều khiển các truy cập vào cơ sở dữ liệu:
Đây là một trong các vai trò rất quan trọng của hệ quản trị cơ sở dữ liệu. Mục đích
là để đảm bảo thực hiện một số yêu cầu cơ bản của hệ quản trị cơ sở dữ liệu. Các
yêu cầu đó gồm:

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 66


Báo cáo khóa luận tốt nghiệp 2020

o Đảm bảo an ninh và kịp thời phát hiện, thực hiện các hành động để
ngăn chặn sự truy cập bất hợp pháp
o Duy trì đƣợc tính nhất quán của dữ liệu
o Tổ chức, điều khiển các truy cập dữ liệu
o Có thể khôi phục lại đƣợc cơ sở dữ liệu khi xảy ra các sự cố về phần
cứng hoặc phần mềm
o Quản lý các mô tả dữ liệu

2.10.4 Kiến trúc của SQL Server


Các thành phần của SQL Server 2000
Nhân của nó là các thành phần server, các thành phần này đƣợc thực hiện
nhƣ windows 32 bit. Các công cụ đồ họa dựa trên client và các dòng tiện ích phục
vụ cho công tác quản trị. Các công cụ và tiện ích này sử dụng các thành phần giao
tiếp client do SQL Server 2000 cung cấp. Các thành phần giao tiếp cung cấp các
cách khác nhau mà trong đó ứng dụng client có thể truy cập dữ liệu thông qua các
thành phần server.
Các thành phần server
Các thành phần server của SQL Server 2000 thƣờng đƣợc thực hiện nhƣ các
dịch vụ Windows 32 bit. Do đó các dịch vụ của SQL Server và SQL Server Agent
có thể chạy nhƣ các ứng dụng độc lập trên bất kỳ nền tảng nào đƣợc hỗ trợ hệ điều
hành Windows.
Các thành phần giao tiếp Client
Ngƣời dùng truy cập SQL Server 2000 thông qua các ứng dụng client, SQL
Server 2000 cung cấp hai kiểu ứng dụng client chính:
Các ứng dụng CSDL quan hệ là kiểu ứng dụng truyền thống dùng môi
trƣờng client/server 2 lớp. Các ứng dụng này gửi các phát biểu T-SQL đến cỗ máy
CSDL quan hệ và nhận kết quả trả về nhƣ tập kết quả quan hệ.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 67


Báo cáo khóa luận tốt nghiệp 2020

Các ứng dụng Internet, chúng là thành phần của nền tảng Microsoft.NET.
Chúng gửi các phát biểu T-SQL hoặc các truy vấn Xpath tới cỗ máy CSDL quan hệ
và nhận về kết quả dạng XML.
2.11 Điện toán đám mây - Cloud Computing
2.11.1 Điện toán đám mây là gì?
Điện toán đám mây hay còn gọi là Cloud Computing là mô hình cung cấp
các tài nguyên máy tính cho ngƣời dùng thông qua Internet. Điện toán đám mây chỉ
đơn giản là một tập hợp các tài nguyên máy tính gộp lại và các dịch vụ cung cấp
trên web. Khi chúng ta biểu đạt mối quan hệ giữa tất cả các yếu tố tƣơng tự nhƣ một
đám mây. Nguồn tài nguyên này bao gồm rất nhiều thứ liên quan đến điện toán và
máy tính. Ví dụ nhƣ: phần mềm, dịch vụ, phần cứng,… và sẽ nằm tại các máy chủ
ảo (đám mây) trên mạng. Ngƣời dùng có thể truy cập vào bất cứ tài nguyên nào trên
đám mây. Vào bất kỳ thời điểm nào và ở bất kỳ đâu, chỉ cần kết nối với hệ thống
mạng internet.
Cloud Computing hay còn gọi là Điện toán máy chủ ảo, là mô hình điện
toán sử dụng các công nghệ máy tính và phát triển dựa vào mạng Internet. Thuật
ngữ "đám mây" ở đây là chỉ mạng Internet và nhƣ một liên tƣởng về độ phức tạp
của các cơ sở hạ tầng chứa trong nó.
2.11.2 Lịch sử điện toán đám mây
Một trong những cột mốc đầu tiên cho điện toán đám mây là sự xuất hiện
của Salesforce.com năm 1999 mà đi tiên phong trong khái niệm của các ứng dụng
doanh nghiệp cung cấp thông qua một trang web đơn giản. Công ty dịch vụ mở
đƣờng cho cả chuyên gia và các công ty phần mềm chính thống để cung cấp các
ứng dụng trên Internet.
Sự phát triển tiếp theo là Amazon Web Services trong năm 2002, trong đó
cung cấp một bộ các dịch vụ dựa trên đám mây bao gồm lƣu trữ, tính toán và ngay
cả trí tuệ nhân tạo thông qua Amazon Mechanical Turk.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 68


Báo cáo khóa luận tốt nghiệp 2020

Sau đó vào năm 2006, Amazon ra mắt điện toán đám mây Elastic Compute
của nó (EC2) là một dịch vụ web thƣơng mại cho phép các công ty nhỏ, cá nhân
thuê máy tính mà trên đó để chạy các ứng dụng máy tính của mình.
“Amazon EC2/S3 là một dịch vụ cơ sở hạ tầng điện toán đám mây có thể
truy cập rộng rãi đầu tiên”, Jeremy Allaire, giám đốc điều hành của Brightcove.
Brightcove chuyên cung cấp SaaS nền tảng video trực tuyến đến Vƣơng quốc Anh
đài truyền hình và báo chí.
Trong năm 2009, với Web 2.0 là bƣớc tiến triển lớn, Google và các công ty
khác bắt đầu cung cấp các ứng dụng doanh nghiệp dựa trên trình duyệt, dịch vụ nhƣ
Google Apps. Các dịch vụ cao cấp nhất của điện toán đám mây của các hệ thống
cung cấp dịch vụ là Amazon S3 (Simple Storage Service). Amazon cung cấp các
giải pháp phát triển với một dịch vụ web để lƣu trữ dữ liệu. Bất kỳ số lƣợng dữ liệu
có thể đƣợc đọc, viết hoặc đã bị xóa trên một cơ sở trả cho mỗi lần sử dụng.
2.11.3 Phân loại mô hình điện toán đám mây
Hiện nay, có 4 mô hình triển khai điện toán đám mây chính đang đƣợc sử
dụng phổ biến đó là: Public Cloud, Private Cloud, Hybrid Cloud và Community
Cloud.
Public Cloud (Điện toán đám mây cộng đồng)

Hình 2.20 Đám mây công cộng

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 69


Báo cáo khóa luận tốt nghiệp 2020

Public Cloud là mô hình triển khai điện toán đám mây sử dụng phổ biến
nhất hiện nay. Các dịch vụ, ứng dụng trên Public Cloud đều nằm trên cùng một hệ
thống Cloud. Tức là tất cả ngƣời dùng sẽ dùng chung tài nguyên. Nhà cung cấp dịch
vụ sẽ trực tiếp quản lý và bảo vệ dữ liệu trên đám mây.
Ƣu điểm:
 Phục vụ đƣợc nhiều đối tƣợng ngƣời dùng, không bị giới hạn về không gian,
thời gian.
 Đặc biệt Public Cloud có chi phí đầu tƣ thấp. Tiết kiệm đƣợc hệ thống máy
chủ, giảm chi phí quản lý, cơ sở hạ tầng.
 Đám mây công cộng còn có thể co giãn theo nhu cầu thực tế của ngƣời sử
dụng.
Nhƣợc điểm:
 Mất an toàn và khó kiểm soát dữ liệu

Private Cloud ( Điện toán đám mây riêng)

Hình 2.21 Đám mây riêng


Private Cloud là dịch vụ điện toán đám mây riêng thƣờng đƣợc cung cấp
cho các doanh nghiệp để đảm bảo an toàn dữ liệu. Private cloud sẽ đƣợc bảo vệ bên
trong tƣờng lửa của công ty và doanh nghiệp trực tiếp quản lý.
Ƣu điểm:
 Chủ động hơn trong việc sử dụng và quản lý dữ liệu
 Bảo mật thông tin tốt hơn

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 70


Báo cáo khóa luận tốt nghiệp 2020

Nhƣợc điểm:
 Gặp khó khăn trong việc triển khai công nghệ
 Tốn chi phí để xây dựng, duy trì hệ thống
 Chỉ phục vụ trong nội bộ doanh nghiệp. Những ngƣời dùng khác bên ngoài
không thể tiếp cận và sử dụng.
Hybrid Cloud (Điện toán đám mây lai)
Đám mây lai (Hybrid Cloud) là sự kết hợp giữa đám mây công cộng và
đám mây riêng. Nó cho phép ngƣời dùng khai thác đƣợc điểm mạnh của 2 mô hình
trên. Đồng thời hạn chế đƣợc điểm yếu của 2 mô hình đó. Đám mây lai thƣờng sẽ
do doanh nghiệp tạo ra, việc quản lý thông tin dữ liệu sẽ đƣợc phân chia giữa doanh
nghiệp và nhà cung cấp Public Cloud.
Ƣu điểm:
 Đảm bảo đƣợc an toàn cho các dữ liệu quan trọng
 Sử dụng đƣợc nhiều dịch vụ điện toán đám mây mà không bị giới hạn
Nhƣợc điểm:
 Khó khăn khi triển khai và quản lý hệ thống
 Tốn nhiều chi phí để xây dựng cơ sở hạ tầng
Community Cloud (Điện toán đám mây cộng đồng)

Hình 2.22 Đám mây cộng đồng

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 71


Báo cáo khóa luận tốt nghiệp 2020

Đám mây cộng đồng đƣợc xây dựng nhằm mục đích chia sẻ hạ tầng, dữ liệu cho
nhiều tổ chức, ngƣời dùng khác nhau. Ví dụ, các doanh nghiệp cùng hoạt động
trong ngành giáo dục có thể chia sẻ chung một đám mây để trao đổi dữ liệu cho
nhau.
Ƣu điểm:
 Các tổ chức/doanh nghiệp/cá nhân chung lĩnh vực hoạt động có thể chia sẻ
dữ liệu, thông tin dễ dàng để phục vụ cho công việc của mình.
 Đảm bảo sự riêng tƣ, an ninh và tuân thủ các chính sách tốt hơn.
Nhƣợc điểm:
 Việc điều hành, quản lý tƣơng đối khó khăn.
 Cần nhiều chi phí để xây dựng, triển khai.
2.11.4 Các mô hình cung cấp điện toán đám mây
Hiện nay, có 3 mô hình cung cấp điện toán đám mây cơ bản. Chúng
là: Infrastructure as a service (Iaas), Platform as a service (Paas) và Software
as a service (Saas).
Infrastructure as a service (Iaas) – Dịch vụ cơ sở hạ tầng
Iaas là mô hình dịch vụ pay-per-use (trả tiền cho những gì sử dụng). Chi phí
sử dụng dịch vụ này đƣợc tính dựa trên chức năng và lƣợng tài nguyên mà khách
hàng dùng. Theo Amazon thì đây là mức độ cơ bản nhất của điện toán đám mây.
Nhà cung cấp dịch vụ Iaas sẽ bán cho khách hàng các server, thiết bị mạng, bộ nhớ,
CPU, storage (không gian lƣu trữ), máy tính (có thể máy thật hoặc máy ảo, tùy nhu
cầu), trang thiết bị trung tâm dữ liệu và một số tính năng bảo vệ an ninh nâng cao.
Với hạ tầng mà Iaas tạo ra, chúng ta cần vào đó và thiết lập. Và cài thêm những
phần mềm cần thiết khác nhƣ web server, database,… Iaas không đƣợc tạo ra để
phục vụ cho ngƣời dùng. Mà nó để cho các công ty, đơn vị phát hành web sử dụng
với mục đích triển khai phần mềm.
Platform as a service (Paas) – Dịch vụ nền tảng

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 72


Báo cáo khóa luận tốt nghiệp 2020

Paas là mô hình dịch vụ giúp các developer có thể phát triển. Nó cho phép
triển khai các ứng dụng, website trên đám mây. Paas về cơ bản cũng khá giống
với Iaas nhƣng cấp độ cao hơn một chút. Paas đƣợc trang bị thêm các công cụ phát
triển doanh nghiệp thông minh (BI), middleware và nhiều tool khác. Với Paas, bạn
sẽ có một nền tảng (Platform) đƣợc cài đặt sẵn để phù hợp cho việc phát triển ứng
dụng.
Software as a service (Saas) – Dịch vụ phần mềm
Saas là một mô hình dịch vụ điện toán đám mây cao nhất hiện nay. Cho
phép ngƣời dùng sử dụng đƣợc các ứng dụng dễ dàng trên nền tảng đám mây thông
qua internet. Đơn giản hơn, Saas sẽ cung cấp phần mềm/ứng dụng chạy trên
internet. Từ đó, ngƣời dùng có thể sử dụng ngay. Nhà cung cấp dịch vụ Saas có thể
lƣu trữ trên server của họ. Hoặc cho phép ngƣời dùng tải xuống và vô hiệu hóa nó
khi hết hạn.
Ví dụ điển hình cho mô hình dịch vụ này là Microsoft Office 365. Đôi khi
các web email (Gmail, Outlook, Yahoo Mail,..) cũng dùng dịch vụ này. Đây đều là
các sản phẩm hoàn chỉnh. Ngƣời dùng có thể sử dụng ngay lập tức mà không cần
phải thiết lập server để quản lý.
Tƣơng tự, OneDrive, Dropbox cũng là mô hình điện toán đám mây
kiểu Saas. Các trang web (phần mềm) này cung cấp không gian lƣu trữ cần thiết để
chúng ta có thể upload/download dữ liệu thông qua internet.
2.11.5 Lợi ích của điện toán đám mây
 Tiết kiệm chi phí: Giúp giảm thiểu chi phí. Bạn sẽ không tốn tiền đầu tƣ cơ
sở hạ tầng ban đầu. Ví dụ nhƣ: mua phần cứng, phần mềm, lắp đặt hệ thống,…
 Tiện lợi: Ngƣời dùng có thể nhanh chóng truy cập, sử dụng tài nguyên thông
qua internet mà không cần cài đặt phức tạp
 An toàn và liên tục: Mọi dữ liệu đƣợc đồng bộ hóa trên đám mây. Giúp đảm
bảo độ an toàn cao hơn, tránh trƣờng hợp mất dữ liệu do hƣ hỏng ổ cứng. Ngoài ra,

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 73


Báo cáo khóa luận tốt nghiệp 2020

nhà cung cấp sẽ sao lƣu định kỳ và có các phƣơng thức bảo mật để bảo vệ dữ liệu
tốt hơn.
 Triển khai nhanh chóng ở bất kỳ đâu: Chỉ với một vài thao tác đơn giản để
triển khai chúng mọi nơi. Điều này đồng nghĩa với việc ngƣời dùng sẽ có đƣợc trải
nghiệm tốt hơn với độ trễ thấp hơn.
2.11.6 Đối tƣợng sử dụng điện toán đám mây
Điện toán đám mây có thể đƣợc sử dụng rộng rãi:
 Công ty, doanh nghiệp, tổ chức có nhu cầu lƣu trữ, chia sẻ dữ liệu.
 Nhà phát triển website, ứng dụng, phần mềm.
 Ngƣời dùng cá nhân
2.11.7 Phƣơng thức hoạt động của điện toán đám mây
Điện toán đám mây hoạt động theo cách thức hoàn toàn khác với phần cứng
vật lý. Cloud Computing cho phép ngƣời dùng quyền truy cập vào máy chủ, dữ liệu
và những dịch vụ bằng internet. Nhà cung cấp dịch vụ đám mây sẽ sở hữu, quản lý
phần cứng và duy trì kết nối mạng. Trong khi đó, ngƣời dùng sẽ đƣợc cung cấp và
sử dụng thông qua nền tảng web.
Nếu chúng ta là Giám đốc điều hành của một công ty lớn. Trách nhiệm của
chúng ta bao gồm việc phải đảm bảo rằng tất cả các nhân viên công ty đều có các
phần cứng và phần mềm cần thiết để phục vụ cho công việc. Mua một hệ thống máy
tính vẫn không đủ, chúng ta cũng phải mua thêm phần mềm và bản mềm phần mềm
hợp pháp nữa. Bất cứ khi nào có một nhân viên mới, chúng ta cũng phải mua thêm
phần mềm mới hoặc phải chuyển giao giấy phép bản quyền phần mềm hiện tại cho
ngƣời dùng khác. Tất cả những việc đó khá rắc rối, tốn thời gian và tốn không ít
tiền bạc của chúng ta. Và đó là lúc chúng ta cần đến điện toán đám mây. Thay vì cài
đặt một bộ phần mềm cho mỗi máy tính, chúng ta chỉ cần cài đặt một ứng dụng/
chƣơng trình cho máy tính đó. Ứng dụng/ chƣơng trình này sẽ cho phép nhân viên
của chúng ta đăng nhập vào hệ thống trên nền tảng web trong đó có chứa tất cả các
chƣơng trình mà họ cần cho công việc của mình. Máy chủ vận hành hệ thống từ xa

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 74


Báo cáo khóa luận tốt nghiệp 2020

thuộc sở hữu của một công ty khác, có thể giúp nhân viên của chúng ta chạy tất cả
mọi thứ từ email để xử lý văn bản cho đến các chƣơng trình phân tích dữ liệu phức
tạp.

Hình 2.23 Phƣơng thức hoạt động của điện toán đám mây
Trong hệ thống điện toán đám mây, khối lƣợng công việc đƣợc thay đổi đáng
kể. Máy tính tại công ty chúng ta không còn phải làm tất cả những công việc nặng
nhọc nhƣ chạy các ứng dụng, chƣơng trình nặng. Thay vào đó, mạng máy tính tạo
nên các đám mây sẽ đảm nhận công việc xử lý chúng, giúp bạn tiết kiệm đƣợc khá
nhiều chi phí cho phần cứng và phần mềm. Điều duy nhất mà máy tính của ngƣời
sử dụng cần để chạy đƣợc phần mềm là giao diện có thể sử dụng hệ thống điện toán
đám mây, điều đó có thể đơn giản là một trình duyệt Web và mạng lƣới đám mây sẽ
đảm nhận phần còn lại.
Hầu hết chúng ta đã và đang sử dụng điện toán đám mây nhƣng không phải
ai cũng hiểu về nó. Các dịch vụ email trên nền web nhƣ Hotmail, Yahoo! Mail hoặc
Gmail chính là những ứng dụng phổ biến nhất của công nghệ điện toán đám mây.
Thay vì chạy một chƣơng trình email trên máy tính của mình, chúng ta đăng nhập
vào một tài khoản email thông qua internet từ xa. Các phần mềm lƣu trữ cho tài

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 75


Báo cáo khóa luận tốt nghiệp 2020

khoản của mình không tồn tại trên máy tính của chúng ta - đó là trên máy tính đám
mây của dịch vụ máy chủ.
2.11.8 Ứng dụng của điện toán đám mây

Hình 2.24 Điện toán đám mây có thể dùng để chia sẻ dữ liệu
Điện toán đám mây sẽ giúp chúng ta truy cập dữ liệu dễ dàng thông qua
internet. Có rất nhiều ứng dụng mà cloud computing có thể thực hiện đƣợc nhƣ:
 Cơ sở dữ liệu đám mây
 Thử nghiệm và phát triển web, ứng dụng
 Phân tích big data
 Lƣu trữ dữ liệu cho website (còn gọi là cloud server)
 Lƣu trữ, chia sẻ dữ liệu thông qua các nền tảng nhƣ: Google Drive,
Dropbox, Shutterstock,…
 Ứng dụng quản lý doanh nghiệp: Có rất nhiều ứng dụng đƣợc thiết kế trên
nền tảng đám mây để giúp doanh nghiệp quản lý, duy trì quan hệ với khách hàng tốt
hơn. Mặc dù chỉ mới đƣợc phát triển trong khoảng thời gian không lâu. Tuy nhiên,
điện toán đám mây ngày nay đã đƣợc ứng dụng rất phổ biến. Có thể rất nhiều ứng
dụng, phần mềm của các thiết bị công nghệ cao (smartphone, máy tính bảng,
laptop) bạn đang sử dụng có những chƣơng trình đang áp dụng điện toán đám mây

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 76


Báo cáo khóa luận tốt nghiệp 2020

mà bạn không để ý. Những ứng dụng của điện toán đám mây mà chúng ta thƣờng
gặp nhất hiện nay là:
+ Icloud của Apple: Iphone hay Ipad là hai loại thiết bị công nghệ cao mà
chúng ta thƣờng sử dụng nhất hiện nay. Trong các loại thiết bị này, Apple thƣờng
hay cung cấp cho các bạn một tài khoản gọi là Icloud. Tài khoản này giúp các bạn
lƣu trữ mọi dữ liệu cá nhân để sử dụng cho thiết bị trên. Icloud chính là một trong
những sản phẩm ra đời từ nền tảng điện toán đám mây mà chúng ta sử dụng thƣờng
xuyên nhất.
+ Google Drive: Google Drive là không gian lƣu trữ mà Google cung cấp
cho các tài khoản ngƣời dùng của mình. Không gian lƣu trữ mà chúng ta sử dụng
trên Google drive để lƣu trữ dữ liệu hằng ngày này cũng chính là một trong các ứng
dụng của nền tảng điện toán đám mây.
Ngoài hai ví dụ thông dụng trên, ngày nay điện toán đám mây còn đƣợc ứng
dụng rất rộng rãi để phục vụ cho sự phát triển của công nghệ thông tin. Nếu nhƣ
đang muốn mở một website cho riêng mình thì máy chủ điện toán đám mây (Cloud
Server) là giải pháp cho chúng ta.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 77


Báo cáo khóa luận tốt nghiệp 2020

Chƣơng 3. PHÂN TÍCH VÀ THIẾT KẾ


3.1 Tổng quan
3.1.1 Giới thiệu ứng dụng
Để củng cố, kết nối các kiến thức về NoSQL và NodeJS trong khóa luận này
thì nhất thiết yêu cầu cần có một ứng dụng để kết nối tích hợp những kiến thức đã
đƣợc giới thiệu ở chƣơng 1 và chƣơng 2 là thực sự cần thiết. Ứng dụng đƣợc xây
dựng ở đây sẽ là một trang web tuyển dụng đối với ngƣời tìm việc (hay còn gọi là
ứng viên) sẽ có các chức năng tìm việc theo lĩnh vực, theo mức lƣơng và ứng tuyển
vào một công việc, đối với ngƣời tuyển dụng (thƣờng là nhân sự của doanh nghiệp)
sẽ có chức năng đăng tin tuyển dụng, gỡ bài đăng. Ngoài ra, chúng ta có trang quản
trị cho phép ngƣời admin có thể quản trị những bài đăng và toàn quyền đối với
những tài nguyên trên trang web dùng để cập nhật thay đổi mà ngƣời dùng bình
thƣờng không thể làm đƣợc. Với khoảng thời gian có hạn, ứng dụng này sẽ có các
chức năng hạn hẹp hơn so với các trang web tuyển dụng đang có mặt trên Internet.
Ứng dụng dựa trên nền tảng NodeJS đƣợc viết bằng ngôn ngữ Javascript nhằm để
đơn giản hóa cho quá trình phát triển và việc dùng ngôn ngữ lập trình Javascript
cũng giúp cho quá trình phát triển đƣợc nhanh hơn cùng với kho thƣ viện - module
đồ sộ cũng đƣợc viết bằng chính thứ ngôn ngữ này do cộng đồng lập trình cung cấp.
Hơn thế nữa, ứng dụng cũng sử dụng công nghệ lƣu trữ dựa trên sự tích hợp của hai
công nghệ lƣu trữ SQL (Cụ thể sử dụng hệ quản trị cơ sở dữ liệu SQL Server) và
NoSQL (Sử dụng hệ quản trị cơ sở dữ liệu MongoDB).
3.1.2 Lý do chọn ứng dụng
Trang web này đƣợc dựng lên để tích hợp giữa hệ cơ sở dữ liệu SQL và
NoSQL. Đối với trang web này, cơ sở dữ liệu SQL sẽ đảm bảo những ràng buộc
của dữ liệu và tính nhất quán chặt chẽ cho trang web. Đối với trang web tuyển
dụng, các ràng buộc của các bảng quan hệ cũng không quá phức tạp và lƣợng dữ
liệu cũng không đƣợc đọc ghi liên tục nhƣ các ứng dụng thời gian thực hoặc các
ứng dụng mạng xã hội. Vì vậy chọn cơ sở dữ liệu SQL để lƣu trữ các giao dịch truy

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 78


Báo cáo khóa luận tốt nghiệp 2020

vấn với dữ liệu là sự lựa chọn phù hợp. Tuy nhiên áp dụng Big Data vào trang web
để thực hiện nhu cầu phân tích và lƣu trữ dữ liệu nhanh chóng, tốc độ nhanh đặc
biệt các dữ liệu này không đòi hỏi tính nhất quán cao thì NoSQL là một sự lựa chọn
hoàn hảo. Chúng ta sẽ lƣu trữ thông tin các nhật ký mà ngƣời dùng đã cập nhật thao
tác và phát triển thành big data. Từ đó phân tích xu hƣớng tìm việc và các công việc
đang hấp dẫn trên thị trƣờng hoặc dự đoán sự chuyển dịch các ngành nghề trong
tƣơng lai hay chỉ đơn giản gợi ý, đề xuất các công việc phù hợp với ứng viên nhất.
Do có sự tích hợp giữa hai cơ sở dữ liệu chúng ta có thể tận dụng những ƣu
điểm của từng loại cơ sở dữ liệu để áp dụng vào những phần phù hợp. Ngoài ra, nó
còn thích hợp cho những ngƣời đang phát triển ứng dụng tích hợp hai hoặc nhiều
hơn hai cơ sở dữ liệu hoàn toàn khác nhau do dữ liệu đảm bảo đƣợc khả năng chịu
lỗi, tốc độ đọc ghi đối với cơ sở dữ liệu NoSQL và vẫn đáp ứng đƣợc tính nhất quán
dữ liệu của cơ sở dữ liệu SQL.
3.2 Mô tả ứng dụng “Tích hợp hệ thống đăng ký tuyển dụng nhân sự trên nền
tảng điện toán đám mây”
Xây dựng ứng dụng tuyển dụng nhân sự minh họa cho việc tích hợp cả hai
loại cơ sở dữ liệu (giữa SQL và NoSQL). Ứng dụng này bao gồm một số tính năng
cơ bản nhƣ: Quản lý các bài đăng tin tuyển dụng, Xem danh sách các ứng viên ứng
tuyển vào một bài đăng tin tuyển dụng, Cập nhật/ thêm mới thông tin của công ty
ngƣời đăng tin ứng tuyển. Đối với ứng viên (ngƣời tìm việc) có thể duyệt qua danh
sách việc làm và gắn sao những công việc cũng có thể tìm những việc làm theo
ngành nghề, từ khóa,…Ngoài ra có thể xem thông tin của công ty ứng tuyển và
thông tin của ngƣời tuyển dụng.
Sau khi đã tìm đƣợc công việc mong muốn ứng viên có thể ứng tuyển vào
một công việc và ngƣời đăng tin ứng tuyển có thể thấy đƣợc thông tin của các ứng
viên. Ngoài ra, ứng dụng còn có một trang quản trị để quản lý các tài nguyên trên
website, chỉ có tài khoản admin đƣợc chỉ định mới có thể đƣợc phép cập nhật thay
đổi các tài nguyên, thông tin trên website.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 79


Báo cáo khóa luận tốt nghiệp 2020

3.3 Chức năng của ứng dụng


Trong ứng dụng này có hai đối tƣợng chính là Ứng viên, ngƣời Tuyển dụng
và một đối tƣợng quản trị viên, tùy theo đối tƣợng chúng ta có những quyền tƣơng
ứng với nhiệm vụ, chức năng của đối tƣợng đó. Mô tả chi tiết phân rã chức năng
giữa ứng viên, ngƣời tuyển dụng và ngƣời quản trị.

Hình 3.1: Sơ đồ phân rã chức năng của ứng viên

Hình 3.2 Sơ đồ phân giải chức năng của ngƣời tuyển dụng

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 80


Báo cáo khóa luận tốt nghiệp 2020

Hình 3.3 Sơ đồ phân giải chức năng của ngƣời quản trị
3.4 Mô tả chức năng của ứng dụng
3.4.1 Use Case

Hình 3.4 Sơ đồ Use Case của Ứng viên, Ngƣời tuyển dụng
và Ngƣời quản trị trong hệ thống

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 81


Báo cáo khóa luận tốt nghiệp 2020

3.4.2 Mô tả Use Case


Bảng 3.1 Mô tả chức năng đăng ký
Sign in
Mô tả Đăng ký tài khoản mới vào hệ thống
Có địa chỉ email và địa chỉ email này chƣa đƣợc dùng để đăng thành
Điều
kiện viên trong hệ thống trƣớc đó
Tại form đăng ký khi ngƣời dùng điền Email, Password và click button
đăng ký thì hệ thống sẽ kiểm tra sự tồn tại của ngƣời dùng này bằng

Xử lý cách kiểm tra


* Nếu tồn tại : Thông báo cho ngƣời dùng Email đã tồn tại
* Nếu chƣa tồn tại: Tiến hành lƣu trữ thông tin User
* Nếu thành công: Thông báo đăng ký thành công và chuyển đến trang

Kết quả cập nhật thông tin cá nhân


* Nếu không thành công: Đề nghị nhập lại thông tin cá nhân

Bảng 3.2 Mô tả chức năng đăng nhập


Login
Mô tả Đăng nhập vào hệ thống

Điều kiện Đã có tài khoản, mật khẩu đăng nhập vào hệ thống
Tại form đăng nhập sau khi ngƣời dùng điền thông tin tài khoản mật
khẩu thì hệ thống sẽ so sánh với tài khoản mật khẩu trong hệ thống

Xử lý *Nếu giống nhau: Thông báo cho ngƣời dùng đăng nhập thành công
*Nếu không giống nhau: Thông báo Username or password không
đúng
*Đăng nhập thành công: Hệ thống chuyển đến trang chủ

Kết quả *Đăng nhập không thành công: Đề nghị ngƣời dùng kiểm tra và
nhập lại thông tin Username và password

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 82


Báo cáo khóa luận tốt nghiệp 2020

Bảng 3.3 Mô tả chức năng quản lý profile


Quản lý Profile
Mô tả Cho phép ngƣời dùng quản lý thông tin cá nhân của chính mình

Điều kiện Đã đăng nhập vào hệ thống


Hệ thống lấy thông tin đăng nhập của ngƣời dùng hiện tại từ cơ sở dữ
liệu nhƣ các thông tin cá nhân, địa chỉ và cho phép ngƣời dùng thực
hiện các thao tác nhƣ:
Xử lý
- Xem thông tin cá nhân
- Chỉnh sửa thông tin cá nhân
- Xóa thông tin cá nhân (chỉ xóa một số trƣờng cho phép xóa)

Kết quả Ngƣời dùng có thể quản lý thông tin cá nhân của mình

Bảng 3.4 Mô tả chức năng ứng tuyển


Ứng tuyển
Mô tả Cho phép ngƣời dùng ứng tuyển vào một vị trí

Điều kiện Có tài khoản đã đăng nhập vào hệ thống


Tại bài đăng tin tuyển dụng ngƣời dùng click button ứng tuyển, hệ

Xử lý thống ghi cập nhật thông tin của ngƣời ứng tuyển với công việc ứng
tuyển
* Ứng tuyển thành công: Thông tin ngƣời ứng tuyển đƣợc chèn vào
tin tuyển dụng
Kết quả
* Ứng tuyển không thành công: Phần mềm hiển thị thông báo với lỗi
tƣơng ứng

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 83


Báo cáo khóa luận tốt nghiệp 2020

Bảng 3.5 Mô tả chức năng lƣu tin tuyển dụng


Lƣu tin tuyển dụng
Mô tả Cho phép ngƣời dùng lƣu tin ứng tuyển vào tài khoản của mình

Điều kiện Tài khoản đã đăng nhập vào hệ thống


Tại bài đăng tin tuyển dụng User chọn save để lƣu lại vào tài khoản

Xử lý của mình, hệ thống sẽ thực hiện lệnh thêm bài đăng tin tuyển dụng
vào hệ thống
* Lƣu thành công: Ngƣời dùng lƣu đƣợc bài đăng tin tuyển dụng

Kết quả vào tài khoản của mình


* Lƣu không thành công: Hiển thị báo lỗi nguyên nhân

Bảng 3.6 Mô tả chức năng xem thông tin Công ty


Xem Thông tin Công ty
Mô tả Cho phép xem thông tin công ty

Điều kiện Không có điều kiện


Khi click vào Tên công ty hệ thống chuyển sang trang hiển thị chi
tiết thông tin công ty và đồng thời hệ thống sẽ truy xuất dữ liệu từ hệ

Xử lý thống để lấy dữ liệu về hiển thị cho ngƣời xem


Một số Thông tin hiển thị nhƣ:
Tên Công ty, Ảnh bìa, Giới thiệu Công ty, Lĩnh vực kinh doanh.
Kết quả Xem đƣợc các thông tin của công ty yêu cầu

Bảng 3.7 Mô tả chức năng Quản lý tin tuyển dụng


Quản lý tin tuyển dụng
Mô tả Cho phép quản lý tin tuyển dụng
Đã có tài khoản đăng nhập, đăng nhập thành công trên hệ thống và là
Điều
kiện ngƣời tuyển dụng

Xử lý Đối với ngƣời tuyển dụng:

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 84


Báo cáo khóa luận tốt nghiệp 2020

Chỉ nhìn thấy tin tuyển dụng do mình đã đăng


Có đầy đủ chức năng thêm, cập nhật, xóa tin tuyển dụng
Đối với User quản trị: Nhìn thấy tất cả thông tin tuyển dụng và có
toàn quyền trên các tin tuyển dụng này

Kết quả Có thể quản lý đƣợc tin tuyển dụng

Bảng 3.8 Mô tả chức năng quản lý thông tin Công ty


Quản lý thông tin công ty
Mô tả Quản lý thông tin công ty

Điều kiện Có tài khoản đăng nhập vào hệ thống


* Đối với ngƣời tuyển dụng:
Hệ thống lấy thông tin công ty của ngƣời tuyển dụng bằng cách truy
xuất database và hiển thị lên màn hình
Hệ thống cho phép cập nhật lại thông tin của công ty tƣơng ứng

Xử lý * Đối với tài khoản Quản trị


Hệ thống lấy thông tin công ty lên và tài khoản này có toàn quyền
trên dữ liệu
* Đối với tài khoản ứng viên:
Không có quyền đối với tài nguyên này.
Kết quả Có thể quản lý đƣợc thông tin công ty

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 85


Báo cáo khóa luận tốt nghiệp 2020

3.4.3 Class Diagram

Hình 3.5 Sơ đồ class diagram

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 86


Báo cáo khóa luận tốt nghiệp 2020

3.4.4 Sequence Diagram

Hình 3.6 Chức năng đăng nhập

Hình 3.7 Chức năng đăng ký

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 87


Báo cáo khóa luận tốt nghiệp 2020

Hình 3.8 Chức năng ứng tuyển

Hình 3.9 Chức năng lƣu tin tuyển dụng

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 88


Báo cáo khóa luận tốt nghiệp 2020

Hình 3.10 Chức năng xem thông tin công ty

Hình 3.11 Chức năng cập nhật thông tin công ty

Hình 3.12 Chức năng tạo mới thông tin công ty

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 89


Báo cáo khóa luận tốt nghiệp 2020

Hình 3.13 Chức năng xóa một công ty

Chức năng quản lý tin tuyển dụng

Hình 3.14 Chức năng xem tin tuyển dụng

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 90


Báo cáo khóa luận tốt nghiệp 2020

Hình 3.15 Chức năng cập nhật tin tuyển dụng

Hình 3.16 Chức năng tạo mới tin tuyển dụng

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 91


Báo cáo khóa luận tốt nghiệp 2020

Hình 3.17 Chức năng xóa một tin tuyển dụng

3.4.5 Deployment Diagram

Hình 3.18 Sơ đồ deployment diagram

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 92


Báo cáo khóa luận tốt nghiệp 2020

3.5 Thiết kế ứng dụng


Tích hợp trên
Tên cơ sở dữ liệu
Bảng/Bộ SQL
STT Ý nghĩa No SQL
Sƣu Tập (Structured
(Non
(Collection) Query
relational)
Language)
Lƣu thông tin ngƣời dùng (bao gồm
ứng viên, ngƣời tuyển dụng và
quản trị viên)
1 User x
Bao gồm username, password đã
mã hóa, thông tin cá nhân cơ bản
của ngƣời dùng
Dùng để lƣu thông tin công ty: tên
2 Company x
công ty, địa chỉ…
Dùng để lƣu các bài đăng tin tuyển
3 Job x
dụng
Dùng để ghi lại hành động thao tác
4 Audit Entry x
lên dữ liệu tại 1 thời điểm
Dùng để ghi các thông tin chi tiết
Audit Entry các thuộc tính khi nó bị chỉnh sửa
5 x
Property hoặc xóa từ giá trị cũ sang giá trị
mới)

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 93


Báo cáo khóa luận tốt nghiệp 2020

Chi tiết các bảng và bộ sƣu tập


Bảng Jobs

Thuộc tính Kiểu dữ liệu Ý nghĩa


Dùng để định danh một tin tuyển dụng, số Id
Id Number này tự động phát sinh và tăng lên một đơn vị
khi tạo một đối tƣợng job mới
Name String Tiêu đề của Job
NameCompany String Tên công ty tuyển dụng
DeadLine Date Hạn ứng tuyển vào công ty
Quantity Number Số lƣợng nhân sự yêu cầu
Salary Number Mức lƣơng
Experience String Kinh nghiệm yêu cầu
Gender Enum Giới tính, kiểu dữ liệu liệt kê gồm “Nam” và
“Nữ”
AddressWork String Địa chỉ làm việc
LocalzoneWork String Khu vực làm việc
Description String Mô tả công việc
Requirement String Yêu cầu công việc
Benefit String Phúc lợi của công việc
Major String Chuyên ngành của công việc
Skill String Kỹ năng yêu cầu
JobType Enum Loại công việc (thuộc kiểu Enum) “Full
time” hoặc “Part time”

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 94


Báo cáo khóa luận tốt nghiệp 2020

Bảng: Company
Thuộc tính Kiểu dữ liệu Ý nghĩa
Dùng để định danh một công ty, số Id này tự
Id Number động phát sinh và tăng lên một đơn vị khi tạo
một đối tƣợng công ty mới
Name String Tên của công ty

JobId này có giá trị tham chiếu đến Id của


JobId Number bảng Job để xác định các công việc mà công
ty này đã đăng tải trên hệ thống
Introduce String Giới thiệu về công ty
ProductBusiness String Sản phẩm kinh doanh của công ty (nếu có)
Service String Dịch vụ kinh doanh của công ty
Liên kết hình ảnh của công ty hình đƣợc lƣu
nhờ vào một dịch vụ lƣu trữ và đƣợc chèn
ImagesLink String
URL vào đây mỗi hình cách nhau 1 dấu chấm
phẩy
VideoLink String Video liên quan đến công ty
Chính sách phúc lợi cơ bản mà công ty cung
PolicyBenefit String
cấp cho nhân viên của mình

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 95


Báo cáo khóa luận tốt nghiệp 2020

Bộ sƣu tập (Collection): User


Cột này đƣợc lƣu thông tin các tài khoản đã tạo trong hệ thống của ứng viên,
ngƣời tuyển dụng, ngƣời quản trị và đƣợc lƣu trên cơ sở dữ liệu MongoDB
Thuộc tính Kiểu dữ liệu Ý nghĩa
Dùng để định danh 1 công ty, số Id này tự động
Id ObjectId phát sinh và tăng lên 1 đơn vị khi tạo 1 đối
tƣợng công ty mới

Fullname String Tên của User

Password của tài khoản đã đƣợc mã hóa theo


Password String
thuật toán bCrypt [1]
Gender String Giới tính
Address String Địa chỉ liên hệ
Nếu là ngƣời quản trị viên thì là “True” ngƣợc
IsAdmin Boolean
lại là “False”

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 96


Báo cáo khóa luận tốt nghiệp 2020

Chƣơng 4. HIỆN THỰC VÀ XÂY DỰNG ỨNG DỤNG

4.1 Xây dựng Ứng dụng


4.1.1 Xây dựng Server NodeJS
Nhƣ đã nói trong các phần trƣớc, NodeJS chỉ là nền tảng do đó không có cấu
trúc chung cho một ứng dụng nhất định. Nhà phát triển sẽ tự xây dựng cấu trúc cho
ứng dụng của mình.

Recruitment Management #Tên thƣ mục project


Node module #module nodeJS
src #thƣ mục chứa source
app #chứa các controller, model
controller #các controller của các đối tƣợng
public #thƣ mục tĩnh chứa css, img, js, plugin
css #chứa css
img #chứa img
js #chứa các mã js
plugins #chứa các công cụ hỗ trợ trong
resource #thƣ mục chứa các tài nguyên trong app
scss # chứa scss (scss viết đây sẽ tự động build ra file css ở thƣ mục
public)
views #chứa các layout
particals #chứa các view con
router #để định dạng đƣờng đi cho trang web
index.js #file cấu hình server nodeJS và các thƣ viện cần thiết để sử dụng

Cấu trúc tổ chức lƣu trữ mã xử lý ứng dụng

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 97


Báo cáo khóa luận tốt nghiệp 2020

Theo đó mã xử lý chi tiết theo mô hình của ứng dụng nhƣ sau:
Phần Cấu hình phía máy chủ NodeJS

Phần cấu hình

Hình 4.1 Cấu hình phía server NodeJS

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 98


Báo cáo khóa luận tốt nghiệp 2020

Phần router phía máy chủ sẽ gọi lệnh router(app) và sau khi chạy lệnh này sẽ gọi
file index router xử lý

Hình 4.2 Mã nguồn file index.router.js


Tại đây file này import toàn bộ những router ở page con khi có một yêu cầu
của ngƣời dùng gửi lên server sẽ gọi file này, nó sẽ xử lý và gọi đến cụ thể file
router tƣơng ứng để trả về thông tin cho ngƣời dùng.

Hình 4.3 Chi tiết file router đối với từng đối tƣợng cụ thể

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 99


Báo cáo khóa luận tốt nghiệp 2020

Cài các Framework hỗ trợ


Sau khi đã cấu hình server NodeJS chúng sẽ sẽ cài đặt những thƣ viện giúp
cho quá trình phát triển dễ dàng hơn.

Hình 4.4 Các Framework đƣợc sử dụng trong ứng dụng


Render Layout
Sau khi cài đƣợc các Framework cho layout chúng ta sẽ cấu tạo 1 file view
có phần mở rộng là *.ejs
Có hai loại layout thƣờng sử dụng là partial layout và layout thông thƣờng
Partial layout: sẽ là các layout đƣợc nằm trên các layout chính khác.

Hình 4.5 Các partial layout đƣợc nằm trong 1 layout chính là layout.ejs

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 100


Báo cáo khóa luận tốt nghiệp 2020

4.1.2 Giao diện của ứng dụng


- Giao diện đăng ký tài khoản

Hình 4.6 Trang đăng ký tài khoản

- Giao diện đăng nhập

Hình 4.7 Trang đăng nhập vào hệ thống

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 101


Báo cáo khóa luận tốt nghiệp 2020

Trang chủ tuyển dụng

Hình 4.8 Trang chủ của ứng dụng

Trang quản trị (quản trị các bài đăng tin tuyển dụng)

Hình 4.9 Trang quản trị của ứng dụng (quản trị bài đăng tin tuyển dụng)
4.1.3 Kiểm nghiệm đánh giá ứng dụng
Tiến hành triển khai ứng dụng trên nền tảng điện toán đám mây, tiến hành
chạy thử hệ thống đăng ký tuyển dụng và phân tích, kiểm nghiệm này sẽ đƣợc thực

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 102


Báo cáo khóa luận tốt nghiệp 2020

hiện dựa trên thời gian đáp ứng của ứng dụng. Các tác vụ sẽ đƣợc thực hiện để kiểm
tra bao gồm các chức năng đăng ký tài khoản, xem thông tin tuyển dụng, xem thông
tin công ty và ứng tuyển vào một công việc.
Ứng dụng đƣợc xây dựng bằng ngôn ngữ lập trình Javascript dựa trên nền
tảng NodeJS chạy trên nền tảng điện toán đám mây Azure Web Service.
Thực nghiệm ứng dụng trên hai hệ quản trị CSDL Microsoft SQL Server và
NoSQL MongoBD.
Hệ thống các thành phần phần cứng dùng để thực hiện
Bảng 4.1: Thành phần và các thông số dùng để thực nghiệm ứng dụng
Thành phần Thông số
Nền tảng Azure Web Service (hệ điều hành Cent OS)
CPU 1 GHZ
RAM 1GB
HDD 32MB
Nền tảng Azure Database Service (Microsoft SQL
Hệ quản trị CSDL 2016) và nền tảng MongoDB Atlas (MongoDB
4.2.11)

Tiến hành kiểm tra hệ thống bằng cách thực hiện các tính năng và tính thời
gian đáp ứng của các ứng dụng.
- Thực hiện kiểm tra chức năng đăng ký ngƣời dùng.
Bảng 4.2: Kết quả thời gian của chức năng đăng ký một ngƣời dùng mới
Số lần thực hiện đăng ký ngƣời dùng mới Thời gian (ms)
Lần 1 631.27
Lần 2 178.09
Lần 3 183.08
Lần 4 182.63

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 103


Báo cáo khóa luận tốt nghiệp 2020

- Thực hiện kiểm tra chức năng đăng tin tuyển dụng
Bảng 4.3: Kết quả thời gian của chức năng đăng tin tuyển dụng
Số lần thực hiện đăng tin tuyển dụng Thời gian (ms)
Lần 1 592
Lần 2 529
Lần 3 555
Lần 4 542

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 104


Báo cáo khóa luận tốt nghiệp 2020

Chƣơng 5. KẾT LUẬN


Mục tiêu của khóa luận là tìm hiểu cơ sở dữ liệu NoSQL và hệ quản trị cơ sở
dữ liệu MongoDB đồng thời việc phối hợp sử dụng hai hệ cơ sở dữ liệu này bằng
cách xây dựng một hệ thống đăng ký tuyển dụng minh họa trên nền tảng điện toán
đám mây. Khóa luận này là bƣớc đầu trong việc nghiên cứu về cơ sở dữ liệu
NoSQL và SQL, áp dụng vào lập trình lấy dữ liệu dựa trên ngôn ngữ lập trình
Javascript trên nền tảng NodeJS.
5.1 Kết quả đạt đƣợc
5.1.1 Về mặt lý thuyết
 Hiểu đƣợc đặc điểm kiến thức của NoSQL, kiến trúc lƣu trữ NoSQL, sự khác
biệt giữa NoSQL và SQL. Cung cấp cho ngƣời đọc có cách nhìn tổng quan về
NoSQL và SQL để hiểu rõ hơn về chúng.
 Xem xét và duyệt qua một số hệ quản trị cơ sở dữ liệu hiện đại đại diện cho
cơ sở dữ liệu NoSQL nhƣ: Cơ sở dữ liệu hƣớng cột, cơ sở dữ liệu hƣớng đồ thị và
cơ sở dữ liệu hƣớng tài liệu…
 Sử dụng ngôn ngữ lập trình Javascript trên nền tảng NodeJS để lập trình kết
nối và truy xuất dữ liệu từ hai loại cơ sở dữ liệu khác nhau, vận dụng và sử dụng
các thƣ viện, framework trong NodeJS để phục vụ việc lập trình.
 Biết cách sử dụng cơ sở dữ liệu điện toán đám mây. Triển khai và đƣa một
ứng dụng web trên nền tảng điện toán đám mây.
5.1.2 Về mặt ứng dụng
Từ những lý thuyết trên tiến hành xây dựng ứng dụng đăng ký tuyển dụng
trên nền tảng điện toán đám mây có các chức năng cơ bản nhƣ: Tạo tài khoản, đăng
nhập, quản lý thông tin cá nhân, xem tin tuyển dụng, ứng tuyển vào một công việc.
Đối với ngƣời đăng tin tuyển dụng thì sẽ có các chức năng nhƣ đăng tin tuyển dụng
và xem những ứng viên đã ứng tuyển vào tin của mình đăng.
Đây là một ứng dụng mang tính chất minh họa cho những kiến thức đã tìm
hiểu đƣợc về NoSQL và SQL kết hợp với lập trình trên nền tảng NodeJS bằng ngôn

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 105


Báo cáo khóa luận tốt nghiệp 2020

ngữ Javascript nên về mặt quy mô còn nhiều hạn chế nhƣng đã áp dụng đƣợc các kỹ
thuật lƣu trữ dữ liệu trên cả NoSQL và SQL. Ứng dụng cũng đã nêu rõ điểm mạnh,
điểm yếu đối với NoSQL, SQL và áp dụng các công nghệ mới vào ứng dụng.
5.2 Hƣớng phát triển
Những kết quả trong quá trình phát triển ứng dụng đăng ký tuyển dụng trên
nền tảng điện toán đám mây chỉ là bƣớc đầu trong quá trình nghiên cứu ứng dụng.
Sau đó từ nền tảng đã có nhóm tôi sẽ đi sâu vào tìm hiểu về hệ cơ sở dữ liệu
NoSQL để có đầy đủ kiến thức về NoSQL, dựa vào các dữ liệu thông tin ứng viên
hoặc các hành vi thao tác ngƣời dùng để thực hiện các đề xuất đƣa ra các lựa chọn
phù hợp giúp nâng cao trải nghiệm ngƣời sử dụng thông tin các công cụ ra quyết
định.
Phát triển từ các kiến thức và kinh nghiệm khi xây dựng ứng dụng đăng ký
tuyển dụng nhóm tôi sẽ xây dựng một kênh tuyển dụng việc làm mà các đối tƣợng
hƣớng tới rộng rãi hơn (nhƣ công nhân, sinh viên partime, các ngƣời làm việc theo
giờ, làm việc theo thời vụ). Từ những dữ liệu thu đƣợc từ ứng dụng này nhóm tôi sẽ
xây dựng một hệ phân tích và đƣa ra các xu hƣớng việc làm theo các dữ liệu hiện
tại. Xây dựng công cụ hỗ trợ hƣớng nghiệp (nhƣ gợi ý việc làm, trả lời câu hỏi trắc
nghiệm) đồng thời thêm chức năng đăng các bài đăng liên quan đến việc hƣớng
nghiệp và cho phép các thành viên có thể tham gia thảo luận.

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 106


Báo cáo khóa luận tốt nghiệp 2020

TÀI LIỆU THAM KHẢO

Tài liệu Tiếng Anh


[1]. NodeJS Home page, https://nodejs.org/en/
[2]. HomeBrew, https://raw.githubusercontent.com/Homebrew
[3]. Npm, https://topdev.vn/blog/npm
[4]. NoSQL, https://en.wikipedia.org/wiki/NoSQL
[5]. MongoDB, https://en.wikipedia.org/wiki/MongoDB

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 107


Báo cáo khóa luận tốt nghiệp 2020

PHỤ LỤC

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 108


Báo cáo khóa luận tốt nghiệp 2020

Tích hợp hệ thống đăng ký tuyển dụng GVHD: TS. Trƣơng Bá Phúc
nhân sự trên nền tảng điện toán đám mây

NHẬT KÝ LÀM VIỆC

Tuần Từ ngày Đến ngày Nội dung


- Tìm hiểu về đề tài, đọc tài liệu hƣớng dẫn
để cài NodeJS.
- Cài NodeJS, IDE Webstorm, cài một số
thƣ viện cần thiết và các thƣ viện tiện ích
trong lúc lập trình nhƣ nodemon để build
lại app khi có update code, dựng Server
viết file index.js và khai báo các thƣ viện
express, cấu hình file package.json
- Dựa vào thƣ viện passport viết tính năng
1 13/09/2020 20/09/2020
login (chỉ viết đƣợc giao diện trang Login
và trang Signin), cài MongoDB để tạo
mongodb local sau đó dùng MongoLab do
MongoDB cung cấp và lƣu dữ liệu online,
dựng giao diện trang admin.
- Router cơ bản/ Render layout index.html
- Đọc tài liệu NodeJS, Big Data
- Làm bìa báo cáo, chuẩn bị mục lục đánh
trang
- Router theo mô hình MVC
- Viết tính năng login (dùng thƣ viện

2 21/09/2020 27/09/2020 passport)


- Làm sƣờn báo cáo, làm trang bìa, lời cảm
ơn, lý do chọn đề tài,…

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 109


Báo cáo khóa luận tốt nghiệp 2020

- Cài MongoDB,
- Thiết kế Database (Schema, Document)
3 28/09/2020 04/10/2020
- Làm báo cáo các chƣơng 1, 2 và trang đề
tài bằng tiếng Anh
- Connect MongoDB hiện thực Restful Api

4 05/10/2020 11/10/2020 (CRUP)


- Tiếp tục làm báo cáo các chƣơng 1, 2
- Dựng giao diện trang Admin (dựa vào

5 12/10/2020 18/10/2020 template miễn phí AdminLTE)


- Làm báo cáo các chƣơng 1, 2, 3
- Cài thƣ viện Sequelize, kết nối database
(SQL Server), tạo Schema

6 19/10/2020 25/10/2020 - Vẽ sơ đồ Use Case, Sequence và


Deployee diagram
- Làm báo cáo các chƣơng 1, 2, 3
Viết API CRUD cho các đối tƣợng trong

7 26/10/2020 01/11/2020 hệ thống


- Làm báo cáo các chƣơng 1, 2, 3
- Làm trang chủ, trang chi tiết tin tuyển

8 02/11/2020 08/11/2020 dụng và trang xem thông tin công ty


- Làm báo cáo các chƣơng 1, 2, 3, 4
- Hoàn tất làm trang chủ mất khá nhiều thời

9 09/11/2020 15/11/2020 gian để định dạng css.


- Làm báo cáo các chƣơng 1, 2, 3, 4
- Hoàn thành trang chi tiết tin tuyển dụng
trang nhanh hơn trang chủ vì dựa vào trang
10 16/11/2020 22/11/2020
chủ.
- Hoàn thành trang xem thông tin công ty

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 110


Báo cáo khóa luận tốt nghiệp 2020

- Hoàn thiện báo cáo các chƣơng 1, 2


- Viết giao diện thêm, sửa, xóa cho các đối
tƣợng trong hệ thống

11 23/11/2020 29/11/2020 - Cập nhật bổ sung báo cáo các mục nhƣ
Restful Api, Cloud Computing, Big Data
- Hoàn thiện báo cáo các chƣơng 3, 4
- Tìm hiểu và chọn công nghệ điện toán
đám mây

12 30/11/2020 06/12/2020 - Deploy ứng dụng lên Azure


- Tiếp tục hoàn thiện báo cáo các chƣơng 1,
2, 3, 4
- Hoàn thành viết chức năng ứng tuyển cho
ứng viên

13 07/12/2020 13/12/2020 - Hoàn thiện báo cáo các chƣơng 1, 2, 3, 4


và trang danh mục hình ảnh, danh mục
bảng, danh mục từ viết tắt,…
- Tiếp tục hoàn thiện báo cáo, trang tham
14 14/12/2020 20/12/2020
khảo và phụ lục

15 21/12/2020 27/12/2020 - Tiếp tục hoàn thiện báo cáo nộp

Nguyễn Tuấn An – Lê Thị Ngọc Hân Page 111

You might also like