Professional Documents
Culture Documents
NGUYỄN TUẤN AN
LÊ THỊ NGỌC HÂN
NGUYEN TUAN AN
LE THI NGOC HAN
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
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
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
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.
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.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/
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.
v12.18.3
brew -v
Sử dụng câu lệnh bên dƣới để cài NodeJS version mới nhất
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 đề
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).
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.
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ộ
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"
}
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ề.
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.
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
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.
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
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.
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.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”
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
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.
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.
- 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.
- 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.
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
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ó.
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.
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.
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.
/ 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
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.
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).
- 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
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.
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.
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ữ
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.
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).
{ {
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
- Ngoài ra MongoDB còn cho phép phân cấp các bộ sƣu tập bằng dấu “.”
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”,
}
)
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
}
)
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
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.
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
đế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"
}
}
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:
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.
Document User
{
_id: "U001",
name: "Corbin",
address: {
street: "12 Nguyễn Văn Bảo",
},
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",
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: {
founded: 1980,
location: "CA"
}
{
title: "50 Tips and Tricks for MongoDB Developer",
author: "Kristina Chodorow",
published_date: ISODate("2011-05-06"),
pages: 68,
language: "English",
publisher: {
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.
Đá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.
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
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.
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.
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
để 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.
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.
Đả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.
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
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.
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)
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
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)
Đá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
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,
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
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
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
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.
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.
Hình 3.2 Sơ đồ phân giải chức năng của ngƣời tuyển dụng
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
Đ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
Kết quả Ngƣời dùng có thể quản lý thông tin cá nhân của mình
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
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
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
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 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.3 Chi tiết file router đối với từng đối tƣợng cụ thể
Hình 4.5 Các partial layout đƣợc nằm trong 1 layout chính là layout.ejs
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
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
- 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
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.
PHỤ LỤC
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
- 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
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