



















Preview text:
MỤC LỤC
THÔNG TIN KẾT QUẢ NGHIÊN CỨU..............................................................8
MỞ ĐẦU.............................................................................................................10
CHƯƠNG 1 TỒNG QUAN LÝ THUYẾT VỀ LĨNH VỰC NGHIÊN CỨU......12
1.1 Tình hình nghiên cứu và công nghệ liên quan............................................12
1.1.1 Ứng dụng web cung cấp khóa học trực tuyến trên thế giới.................12
1.1.2 Ứng dụng web cung cấp khóa học trực tuyến tại Việt Nam................14
1.2 Các công nghệ được sử dụng để thực hiện xây dựng đồ án........................16
1.2.1 ReactJs................................................................................................16
1.2.2 NodeJs.................................................................................................18
1.2.3 Express Framework.............................................................................20
1.2.4 MongoDB...........................................................................................22
1.3 Kết luận......................................................................................................24
CHƯƠNG 2 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG CHO ỨNG DỤNG.....25
2.1 Thu thập thông tin và mô tả bài toán..........................................................25
2.1.1 Thu thập thông tin...............................................................................25
2.1.2 Mô tả bài toán.....................................................................................25
2.2 Xác định yêu cầu hệ thống.........................................................................28
2.2.1 Xây dựng mô hình Use Case...............................................................28
2.2.2 Xây dựng kịch bản..............................................................................33
2.3 Thiết kế lược đồ cơ sở dữ liệu....................................................................54
2.3.1 Giải thích lược đồ dữ liệu Người học..................................................58
2.3.2 Giải thích lược đồ Người dạy..............................................................59
2.3.3 Giải thích lược đồ Quản trị viên..........................................................61
2.3.4 Tổng kết..............................................................................................62
2.4 Kết luận......................................................................................................63
CHƯƠNG 3 KẾT QUẢ THỰC NGHIỆM..........................................................64
3.1 Danh sách các chức năng và đánh giá độ ưu tiên.......................................64
3.2 Xây dựng cấu trúc thư mục của ứng dụng..................................................64
3.2.1 Cấu trúc thư mục front-end.................................................................64
3.2.2 Cấu trúc thư mục back-end.................................................................69
3.3 Thiết kế giao diện ứng dụng.......................................................................71
3.3.1 Giao diện dành cho Người dùng miễn phí...........................................71
3.3.2 Giao diện dành cho Người học............................................................74
3.3.3 Giao diện dành cho Người dạy............................................................75
3.3.4 Giao diện dành cho người Quản trị viên..............................................77
3.4 Kết luận......................................................................................................79
KẾT LUẬN.........................................................................................................80
TÀI LIỆU THAM KHẢO....................................................................................81 DANH MỤC HÌNH ẢNH
Hình 1 Hình ảnh ứng dụng Skooli ........................................................................ 12
Hình 2 Hình ảnh ứng dụng Udemy ....................................................................... 13
Hình 3 Hình ảnh ứng dụng Edumall ..................................................................... 14
Hình 4 Hình ảnh ứng dụng Topica kids ................................................................ 14
Hình 5 Hình ảnh logo công nghệ ReactJs ............................................................. 15
Hình 6 Hình ảnh sơ đồ DOM ................................................................................ 16
Hình 7 Hình ảnh minh họa về DOM ảo trong ReactJs ......................................... 17
Hình 8 Hình ảnh logo của công nghệ NodeJs ....................................................... 17
Hình 9 Hình ảnh về cấu trúc các chức năng cơ bản của Express .......................... 19
Hình 10 Hình ảnh logo công nghệ Express ........................................................... 20
Hình 11 Hình ảnh minh họa logo về cơ sở dữ liệu MongoDB ............................. 21
Hình 12 Sơ đồ hoạt động vi trò quản trị viên ........................................................ 24
Hình 13 Sơ đồ hoạt động vai trò người dạy .......................................................... 24
Hình 14 Sơ đồ hoạt động vai trò người học .......................................................... 24
Hình 15 Sơ đồ Use Case tổng quát ....................................................................... 26
Hình 16 Sơ đồ Use Case role Người học .............................................................. 27
Hình 17 Hình ảnh sơ đồ Use Case Người dạy ...................................................... 29
Hình 18 Hình ảnh sơ đồ Use Case Quản trị viên .................................................. 30
Hình 19 Hình ảnh danh sách các chức năng cần làm trong quy mô đồ án...........64
Hình 20 Cấu trúc thư mục fron-end.....................................................................65
Hình 21 Thư mục apis..........................................................................................65
Hình 22 Thư mục assets.......................................................................................66
Hình 23 Thư mục components.............................................................................66
Hình 24 Thư mục layout......................................................................................67
Hình 25 Thư mục pages.......................................................................................67
Hình 26 Thư mục redux.......................................................................................68
Hình 27 Thư mục routers.....................................................................................68
Hình 28 Thư mục services...................................................................................68
Hình 29 Thư mục utils.........................................................................................69
Hình 30 Cấu trúc thư mục back-end....................................................................69
Hình 31 Thư mục controllers...............................................................................70
Hình 32 Thư mục routes......................................................................................70
Hình 33 Thư mục models.....................................................................................70
Hình 34 Thư mục servies.....................................................................................71
Hình 35 Thư mục middleware.............................................................................71
Hình 36 Giao diện trang tìm kiếm khóa học........................................................72
Hình 37 Giao diện form đăng ký trở thành học sinh............................................73
Hình 38 Giao diện form đăng ký trở thành giáo viên...........................................73
Hình 39 Giao diện trang đăng nhập.....................................................................74
Hình 40 Giao diện trang thời khóa biểu...............................................................74
Hình 41 Giao diện trang nạp xu...........................................................................75
Hình 42 Giao diện trang quản lý khóa học...........................................................75
Hình 43 Giao diện form tạo khóa học..................................................................76
Hình 44 Giao diện trang thời khóa biểu vai trò người dạy...................................77
Hình 45 Giao diện trang quản lý danh mục..........................................................77
Hình 46 Giao diện form tạo mới danh mục..........................................................78
Hình 47 Giao diện trang thống kê danh sách học sinh.........................................78
Hình 48 Giao diện trang thống kê danh sách giáo viên........................................79
THÔNG TIN KẾT QUẢ NGHIÊN CỨU 1. Thông tin chung Tên đề tài:
Phát triển ứng dụng web cung cấp khóa học trực tuyến
Sinh viên thực hiện: Vũ Thiên Sơn Mã sinh viên: 1821050868
Lớp: Công nghệ thông tin địa học K63A Hệ đào tạo: Chính quy Điện thoại: 0384228442 Email: thiensonvu08@gmail.com
Thời gian thực hiện: 2023 2. Mục tiêu
Mục tiêu của đồ án là xây dựng được ứng dụng web cung cấp các khóa học trực
tuyến. Trong đó gồm những mục tiêu nhỏ sau:
Phân tích, thiết kế chức năng của mô hình cung cấp khóa học trực tuyến o
Thiết kế mô hình dữ liệu
o Phác thảo cấu trúc giao diện thông qua phần mềm Figma
Xây dựng các chức năng phía máy chủ:
o Lập bảng danh sách chức năng và đánh giá độ ưu tiên o Xây
dựng các API trả dữ liệu về phía máy khách
Xây dựng giao diện hệ thống: o Xây dựng giao diện hệ thống
o Tích hợp các API và hiển thị lên giao diện 3. Nội dung chính
Để đạt được mục tiêu, đồ án cần:
Nghiên cứu và tìm hiểu về các hệ thống cung cấp khóa học trực tuyến trong
nước và ngoài nước có liên quan, nhằm hình dung được các thành phần cần
thiết có trong một ứng dụng web cung cấp các khóa học trực tuyến. Từ đó,
lên ý tưởng và xây dựng yêu cầu nghiệp vụ cho mô hình đồ án.
Phân tích, thiết kế chức năng nhằm tổng quan hóa các chức năng và cơ sở
dữ liệu, thứ mà giải quyết được yêu cầu nghiệp vụ của mô hình đồ án.
Tìm hiểu và cách sử dụng của các công nghệ về front-end, back-end và
database (cơ sở dữ liệu) để phát triển mô hình đồ án.
Cuối cùng tiến hành xây dựng và phát triển ứng dụng.
4. Kết quả chính đạt được
Đồ án đã hoàn thành được việc phân tích và thiết kế chức năng, hoàn thành việc
xây dựng các chức năng phía máy chủ, xây dựng thành công giao diện phía máy khách,
tích hợp một số API và hiển thị thông tin các khóa học thông qua giao diện. Xây dựng
được ứng dụng web demo việc cung cấp khóa học và có thể thực hiện chức năng thanh toán trực tuyến. MỞ ĐẦU
1. Lý do chọn đề tài
Với sự phát triển của công nghệ và Internet, ngày nay việc học và dạy học không
nhất thiết phải trực tiếp có mặt tại học đường, giảng đường hay trung tâm, mà hiện có
rất nhiều phương pháp để giúp người học và người dạy kết nối với nhau, một trong số
đó chính là việc học và dạy học trực tuyến.
Việc xây dựng một ứng dụng cung cấp khóa học trực tuyến giúp kết nối người học
và người dạy một cách nhanh chóng và đặc biệt giúp người dùng có thể học tập ở mọi
nơi mà không bị ràng buộc về mặt địa lý cũng như tiết kiệm được thời gian di chuyển
tới địa điểm học cố định như phương pháp học tập truyền thống.
Trong quá trình thực tập doanh nghiệp, nhờ sự cố gắng và nỗ lực của bản thân em
đã được giao nhiệm vụ phát triển ứng dụng web cung cấp các khóa học trực tuyến cùng
đồng nghiệp. Nhận thấy mô hình này có tính ứng dụng trong thực tiễn, em đã quyết định
chọn đề tài “phát triển ứng dụng web cung cấp khóa học trực tuyến” làm đồ án tốt nghiệp
nhằm nâng cấp kỹ thuật phát triển các chức năng phía máy chủ và máy khách của bản thân.
2. Bố cục của đồ án
Bố cục của đồ án gồm 5 phần: Mở đầu
Chương 1: Tổng quan lý thuyết về lĩnh vực nghiên cứu. Bao gồm tình hình
nghiên cứu, các công nghệ được sử dụng để thực hiện đồ án.
Chương 2: Phân tích và thiết kế hệ thống cho ứng dụng.
Chương 3: Kết quả thực nghiệm. Bao gồm, quá trình thực hiện và kết quả của mỗi quá trình. Kết luận
3. Tính cấp thiết của đề tài
Ý nghĩa khoa học: đồ án sẽ đưa ra được phương pháp để xây dựng, phát triển ứng
dụng cung cấp khóa học trực tuyến.
Ý nghĩa thực tiễn: ứng dụng được xây dựng có thể làm tiền đề để phát triển thêm
các tính năng nâng cao sau này nhằm đưa vào sử dụng trong thực tiễn.
CHƯƠNG 1 TỒNG QUAN LÝ THUYẾT VỀ LĨNH VỰC NGHIÊN CỨU
1.1 Tình hình nghiên cứu và công nghệ liên quan
Khái niệm về giáo dục truyền thống đã thay đổi hoàn toàn trong vài năm qua. Việc
hiện diện, có mặt trực tiếp trong lớp học giờ đây không còn là lựa chọn duy nhất nữa. Vì
ngày nay, giáo dục trực tuyến đã và đang phát triển và ngày càng thể hiện sự thân thiện,
dễ tiếp cận đến với người dùng. Người dùng có thể học tập mọi nơi mà không bị ràng
buộc về mặt địa lý từ đó có thể tiết kiệm được thời gian và chi phí di chuyển.
Học tập trực tuyến là hình thức học tập xuất hiện dưới sự phát triển của công nghệ
thông tin. Trong đó, người học sẽ tham gia các lớp trong trên internet thay vì học tập ở
một địa điểm cố định như hình thức học tập truyền thống. Học tập trực tuyến được chia
thành hai hình thức chính đó là:
Học tập trực tuyến trong thời gian thực: người dạy và học sẽ tương tác trong
thời gian thực qua ứng dụng.
Học tập qua các khóa học có sẵn: người học sẽ tham gia các khóa học đã
được thiết kế sẵn qua video. Người dạy sẽ giảng dạy về bài giảng trong video
và đăng tải để người học có thể đăng ký và tham gia học tập.
1.1.1 Ứng dụng web cung cấp khóa học trực tuyến trên thế giới
Hiện nay trên thế giới đã có rất nhiều công ty tập đoàn hàng đầu thế giới triển khai
và phát triển mô hình cung cấp khóa học trực tuyến. Ví dụ như:
Skooli: là nền tảng gia sư trực tuyến kết nối sinh viên đại học với các gia sư
chuyên nghiệp trong một lớp học trực tuyến. Skooli cho phép học sinh có
thể đặt các khóa học với các gia sư có sẵn hoặc để đặt các khóa học cho
những ngày trong tương lai. Người dùng Skooli có thể tìm kiếm gia sư dựa trên các khóa học. [1]
Hình 1 Hình ảnh ứng dụng Skooli
Udemy: là nền tảng học tập trực tuyến được phát triển để giúp kết nối các cá
nhân trên toàn thế giới với chương trình đào tạo mà họ cần. Bên cạnh đó nền
tảng này cung cấp các khóa học trên rất nhiều lĩnh vực đa dạng. Các khóa
học trên Udemy có thể trả phí hoặc miễn phí tùy thuộc vào người hướng
dẫn. Theo các số liệu thống kê trên Wikipedia tính đến tháng 11 năm 2022,
nền tảng này đã có hơn 57 triệu sinh viên, 213 nghìn khóa học và 74 nghìn
người hướng dẫn giảng dạy các khóa học bằng hơn 75 ngôn ngữ. Đã có hơn
773 triệu lượt đăng ký khóa học. [2]
Hình 2 Hình ảnh ứng dụng Udemy
1.1.2 Ứng dụng web cung cấp khóa học trực tuyến tại Việt Nam
Ở Việt Nam cũng có nhiều nền tảng cung cấp các khóa học trực tuyến như:
Edumall: là một nền tảng trực tuyến chuyên chia sẻ, giới thiệu và kinh doanh
các khóa học trực tuyến ngắn hạn trong rất nhiều lĩnh vực đa dạng. Đội ngũ
giảng dạy bao gồm các giáo viên, giảng viên những người có kiến thức
chuyên sâu và dày dặn kinh nghiệm khắp cả nước. Sở hữu số lượng khóa
học cực lớn, mức chi phí phải chăng, chất lượng nội dung được đánh giá
cao. Khi tham gia các khóa học tại Edumall, bên cạnh việc theo dõi bài
giảng, người học còn có thể hỏi đáp trực tiếp với giảng viên. Nhờ vậy học
viên có thể đạt được kết quả tốt nhất. [3]
Hình 3 Hình ảnh ứng dụng Edumall
Topica: là một trong những website bán khóa học trực tuyến thông minh nhất
hiện nay. Topica là ứng dụng tuyệt vời giúp người học đạt kết quả cao trong
suốt quá trình học của mình. Topica cung cấp các chương trình giáo dục trực
tuyến, chương trình học tiếng Anh trực tuyến và khóa học đào tạo trên nhiều lĩnh vực. [4]
Hình 4 Hình ảnh ứng dụng Topica kids
1.2 Các công nghệ được sử dụng để thực hiện xây dựng đồ án
Để phát triển được ứng dụng web cung cấp khóa học trực tuyến ta cần 3 thành phần
chính đó là: front-end (máy khách), back-end (máy chủ) và database (cơ sở dữ liệu).
Trong đó, phần fron-end của ứng dụng sẽ được xây dựng bằng thư viện ReactJs, phần
back-end sử dụng Framework Express và môi trường NodeJs, cơ sở dữ liệu cua ứng
dụng sẽ được lưu vào hệ quản trị cơ sở dữ liệu MongoDb. 1.2.1 ReactJs
ReactJs là một thư viện JavaScript front-end mã nguồn mở để xây dựng giao diện
người dùng dựa trên các thành phần UI riêng lẻ. Nó được phát triển và duy trì bởi Meta
(trước đây là Facebook) và cộng đồng các nhà phát triển và công ty cá nhân. React có
thể được sử dụng làm cơ sở để phát triển các ứng dụng SPA (Single page), thiết bị di
động hoặc ứng dụng được kết xuất bằng máy chủ với các thư viện khác. Tuy nhiên React
chỉ hướng tới việc quản lý trạng thái và hiển thị trạng thái đó cho DOM, vì vậy việc tạo
ứng dụng bằng React thường yêu cầu sử dụng thêm các thư viện bổ sung để thực hiện
định tuyến trang, cũng như thêm một số chức năng phía máy khách. [5]
Hình 5 Hình ảnh logo công nghệ ReactJs
Trong lập trình ứng dụng front-end, lập trình viên thường phải làm việc chính trên
hai thành phần là UI (giao diện) và xử lý tương tác của người dùng. Trước khi ReactJs
ra đời lập trình viên thường gặp rất nhiều khó khăn trong việc sử dụng ngôn ngữ
Javascript thuần và Jquery để xây dựng UI. Điều đó đồng nghĩa với việc quá trình phát
triển ứng dụng sẽ lâu hơn và xuất hiện nhiều rủi ro hơn. Vì vậy vào năm 2011, Jordan
Walke – một nhân viên của Facebook đã khởi tạo ReactJs với mục đích chính là cải thiện quá trình phát triển UI.
Trọng tâm chính của bất kỳ website cơ bản nào đó là những HTML documents.
Trình duyệt Web đọc những document này để hiển thị nội dung của website trên máy
tính. Trong quá trình đó, trình duyệt sẽ tạo ra DOM (Document Object Model) – một cây
đại diện cho cấu trúc website được hiển thị. Lập trình viên có thể sử dụng ngôn ngữ
Javascript để thay đổi cây DOM nhằm thêm hoặc thay đổi nội dung cho website.
Hình 6 Hình ảnh sơ đồ DOM
JSX là một React extention giúp lập trình viên dễ dàng thay đổi cây DOM bằng
các HTML-style code đơn giản. Ngoài ra khi lập trình viên không sử dụng ReactJs và
JSX, website sẽ sử dụng HTML để cập nhật lại cả cây DOM cho chính bản thân nó (quá
trình thay đổi diễn ra tự nhiên trên trang mà người dùng không phải tải lại trang), cách
làm này sẽ ổn cho các website nhỏ, hoặc các website tĩnh. Nhưng đối với các website
lớn, đặc biệt những website thiên về xử lý các tương tác của người dùng nhiều điều này
sẽ làm ảnh hưởng đến hiệu năng website vì cả cây DOM phải tải lại cứ mỗi khi người
dùng nhấn vào tính năng yêu cầu phải tải lại trang.
Hình 7 Hình ảnh minh họa về DOM ảo trong ReactJs
Tuy nhiên, nếu lập trình viên sử dụng JSX và ReactJs thì họ sẽ giúp cây DOM cập
nhập cho chính DOM đó, ReactJs đã khởi tajoVirtual DOM (DOM ảo). Virtual DOM là
bản sao chép của DOM thật trên trang web, ReactJs sử dụng bản DOM sao chép để tìm
kiếm đúng phần mà DOM thật cần cập nhật khi bất kỳ một sự kiện nào đó khiến thành phần trong nó thay đổi. 1.2.2 NodeJs
NodeJs là một môi trường chạy Javascript được triển khai ngay trên nền hệ điều
hành máy tính (Window, Linux, Mac), thay vì được nhúng trong một trình duyệt web có
nhiều tính năng truy xuất bị giới hạn. Với NodeJs thì người dùng có thể viết code
JavaScript để tạo ra các phần mềm có khả năng sử dụng những công cụ tài nguyên mà
hệ điều hành có thể cung cấp: [6]
Tạo ra, lưu trữ, chỉnh sửa và xóa các tệp trên máy tính.
Tương tác với các phần mềm khác trong cùng máy tính ví dụ như cửa sổ dòng lệnh (Command line).
Điều khiển các thiết bị phần cứng như webcam, bàn phím, chuột và các thiết
bị ngoại vi khác có cung cấp giao diện lập trình hỗ trợ.
Hình 8 Hình ảnh logo của công nghệ NodeJs
NodeJs không phải là một ngôn ngữ lập trình mà là một môi trường runtime dùng
để chạy Javascript bên ngoài trình duyệt. Vì vậy để sử dụng được NodeJs thì người lập
trình cần có những kiến thức nhất định về một số giao thức, JavaScript hay kỹ thuật lập
trình… Bên cạnh đó NodeJs còn có thể được sử dụng như một front-end lẫn back-end
nhờ vào framework Express.js.
NodeJs là một trong những nền tảng phổ biến nhất hiện nay cho mục đích phát triển
ứng dụng mạng phía máy chủ. Sau đây là một số những đặc điểm khiến NodeJs là lựa
chọn hàng đầu cho các lập trình viên hiện nay:
Tốc độ nhanh: được xây dựng trên engine Javascript V8 của Google
Chrome, do đó các thư viện của nó có khả năng thực thi code rất nhanh.
NPM: với hơn 50.000 package khác nhau, các develop có thể dễ dàng lựa
chọn bất kỳ tính năng nào để xây dựng ứng dụng.
Lập trình bất đồng bộ: mọi API của NodeJs đề có tính bất đồng bộ, do đó
một máy chủ dựa trên NodeJs không cần phải đợi API trả về dữ liệu.
Đơn luồng: NodeJs sử dụng mô hình dơn luồng với vòng lặp sự kiện. Do đó
các ứng dụng có thể xử lý số lượng yêu cầu lớn hơn rất nhiều lần so với các
máy chủ truyền thống như Apache HTTP.
Vậy Nodejs là một môi trường lập trình phổ biến, được dùng để xây dựng các ứng
dụng quy mô lớn cần xử lý lượng request đồng thời lớn. Thuộc tính I/O nonblocking đơn
luồng giúp nền tảng này trở thành một giải pháp lý tưởng cho việc xây dựng ứng dụng
truyền dữ liệu trong thời gian thực.
1.2.3 Express Framework
Express là một Framework dành cho NodeJs nó cung cấp cho lập trình viên rất
nhiều tính năng mạnh mẽ trên nền tảng web cũng như các ứng dụng di động. Express hỗ
trợ các phương thức HTTP và Midleware tạo ra một API vô cùng nhanh chóng và dễ sử
dụng. Có thể tổng hợp một số chức năng chính của Express như sau: [7] Thiết lập các
lớp trung gian để trả về các HTTP request.
Định nghĩa router cho phép sử dụng các hành động khác nhau dựa trên phương thức HTTP và URL.
Cho phép trả về các trang HTML dựa vào các tham số.
Hình 9 Hình ảnh về cấu trúc các chức năng cơ bản của Express
Trên thực tế, nếu không sử dụng Express.js, lập trình viên sẽ phải thực hiện rất
nhiều bước lập trình phức tạp để dựng nên một API hiệu quả. Express.js đã giúp cho việc
lập trình trong NodeJs trở nên dễ dàng hơn.
Express hỗ trợ xây dựng website một cách nhanh chóng. Thời gian chính là tài sản
quý giá của bất kỳ doanh nghiệp nào. Hơn thế nữa, nhiều lập trình viên còn phải chịu áp
lực xây dựng các ứng dụng web hiệu quả trong thời gian ngắn. Express.js có thể giúp
làm một nửa thời gian viết mã mà vẫn xây dựng lên các ứng dụng web hiệu quả. Không
chỉ trợ giúp về mặt thời gian Express.js còn làm giảm những áp lực cần thiết để xây dựng
với sự trợ giúp các tính năng khác nhau của nó. Express.js còn cung cấp một phần mềm
trung gian đảm nhạn nhiệm vụ đưa ra các quyết định để phản hồi chính xác những yêu cầu của khách hàng.
Hình 10 Hình ảnh logo công nghệ Express
Một trong những yếu tố để tổ chức, doanh nghiệp nên sử dụng công cụ, ứng dụng
nào chính là chi phí. Với một ứng dụng web với nhiều tính năng như vậy mà lại không
tốn một chút chi phí nào cả.
Những tính năng của Express.js bao gồm:
Phát triển máy chủ nhanh chóng: ExpressJs cung cấp nhiều tính năng dưới
dạng các hàm để dễ dàng sử dụng ở bất kỳ đâu trong chương trình. Điều này
đã loại bỏ nhu cầu viết mã từ đó tiết kiệm được thời gian.
Phần mềm trung gian (Middleware): Đây là phần mềm trung gian có quyền
truy cập vào cơ sở dữ liệu, yêu cầu của khách hàng và những phần mềm
trung gian khác. Phần mềm middleware này chịu trách nhiệm chính cho việc
tổ chức có hệ thống các chức năng của Express.js
Định tuyến (Routing): Express.js cung cấp cơ chế định tuyến giúp duy trì
trạng thái của website với sự trợ giúp của URL.
Gỡ lỗi (Debugging): Để phát triển thành công các ứng dụng web không thể
thiếu đi việc gỡ lỗi. Giờ với Express.js việc gỡ lỗi đã trở nên dễ dàng hơn
nhờ khả năng xác định chính xác các phần ứng dụng web có lỗi. 1.2.4 MongoDB
MongoDB là một database hướng tài liệu, một dạng NoSQL database. Vì thế,
MongoDB sẽ tránh cấu trúc dựa trên bảng của cở sở dữ liệu quan hệ để thích ứng với
các tài liệu như JSON có một lược đồ rất linh hoạt đó là BSON. MongoDB sử dụng lưu
trữ dữ liệu dưới dạng tài liệu JSON các dữ liệu được truy vấn rất nhanh. [8]
Hình 11 Hình ảnh minh họa logo về cơ sở dữ liệu MongoDB
Một số các ưu điểm khi sử dụng MongoDB:
Do MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi
một collection sẽ có các kích cỡ và các document khác nhau, linh hoạt trong
việc lưu trữ dữ liệu.
Dữ liệu trong MongoDB không có sự ràng buộc lẫn nhau, không có join như
trong RDBMS nên khi insert, xóa hay update nó không phải mất thời gian
kiểm tra xem có thỏa mãn ràng buộc dữ liệu như RDBMS.
MongoDB rất dễ mở rộng. Trong MongoDB có một khái niệm là cluster là
cụm các node chứa dữ liệu giao tiếp với nhau, khi muốn mở rộng hệ thống
người dùng chỉ cần thêm một node mới vào cluster
Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tăng tốc
độ truy vấn thông tin đạt hiệu suất cao nhất.
Khi có một truy vấn dự liệu, bản ghi được cached lên bộ nhờ Ram, để phục
vụ lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc từ ổ cứng.
Hiệu năng cao: Tốc độ truy vấn (find, update, insert, delete) của MongoDB
nhanh hơn hẳn so với các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS).
Nhược điểm của MongoDB:
Một ưu điểm của MongoDB cũng chính là nhược điểm của nó. MongoDB
không có các tính chất ràng buộc như trong RDBMS nên khi thao tác với
MongoDB người lập trình viên cần phải cẩn thận hơn.
Tốn bộ nhớ do dữ liệu lưu dưới dạng key-value, các collection chỉ khác nhau
về value do dó key sẽ bị lặp lại. Không hỗ trợ join nên dễ bị dư thừa dữ liệu.
Khi (insert, update, delete) bản ghi, MongoDB sẽ chưa cập nhật ngay xuống
ổ cứng, mà sau 60 giây MongoDB mới thực hiện ghi toàn bộ dữ liệu thay
đổi từ Ram xuống ổ cứng, điều này là nhược điểm vì sẽ có nguy cơ bị mất
dữ liệu kho xảy ra các tình huống như mất nguồn điện… 1.3 Kết luận
Qua những tìm hiểu trên đồ án đã nêu ra tình hình nghiên cứu chung của mô hình
cung cấp khóa học trực tuyến ở trong và ngoài nước. Bên cạnh đó, giúp hiểu biết thêm
về các công nghệ sẽ sử dụng để xây dựng hệ thống. Chương tiếp theo sau đây, đồ án sẽ
trình bày việc phân tích thiết kế hệ thống cho ứng dụng web cung cấp khóa học trực tuyến.