Tải bản đầy đủ (.docx) (226 trang)

XÂY DỰNG WEBSITE HỌC TIẾNG ANH SỬ DỤNG MERN STACK

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (628.87 KB, 226 trang )

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA ĐÀO TẠO CHẤT LƯỢNG CAO
NGÀNH CÔNG NGHỆ THÔNG TIN
---o0o---

TIỂU LUẬN CHUYÊN NGÀNH

XÂY DỰNG WEBSITE HỌC TIẾNG
ANH SỬ DỤNG MERN STACK
GVHD : TS. LÊ VĂN VINH
SINH VIÊN THỰC HIỆN

MSSV

TRẦN PHƯƠNG LINH

18110146

VÕ NGỌC PHONG

18110174

Tp. Hồ Chí Minh, tháng 12 năm 2021


TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA ĐÀO TẠO CHẤT LƯỢNG CAO
NGÀNH CÔNG NGHỆ THÔNG TIN
---o0o---

TIỂU LUẬN CHUYÊN NGÀNH



XÂY DỰNG WEBSITE HỌC TIẾNG
ANH SỬ DỤNG MERN STACK
GVHD : TS. LÊ VĂN VINH
SINH VIÊN THỰC HIỆN

MSSV

TRẦN PHƯƠNG LINH

18110146

VÕ NGỌC PHONG

18110174

Tp. Hồ Chí Minh, tháng 12 năm 2021


NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................

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


.....................................................................................................................................
Giáo viên hướng dẫn

Lê Văn Vinh


NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................

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


Giáo viên phản biện


LỜI CẢM ƠN
Lời đầu tiên, nhóm sinh viên thực hiện báo cáo xin gửi lời cảm ơn chân
thành nhất đến nhà trường và q thầy cơ. Trong q trình học tập tại trường Đại
học Sư phạm kỹ thuật thành phố Hồ Chí Minh, q thầy cơ đã tạo nhiều điều kiện
cho chúng em được học tập tốt nhất, truyền đạt những kiến thức nền tảng và chuyên

ngành, cũng như hỗ trợ, giúp đỡ khi nhóm gặp khó khăn trong quá trình học tập và
trong lúc thực hiện đồ án
Tiếp đó, nhóm sinh viên thực hiện báo cáo xin gửi lời cảm ơn sâu sắc đến
thầy Lê Văn Vinh – người đã hướng dẫn, giúp đỡ cho nhóm trong suốt quá trình
thực hiện đề tài.
Do có những hạn chế về kiến thức và thiếu kinh nghiệm trong việc tìm hiểu
thực tế, vì thế nhóm chúng em cịn có nhiều thiếu sót, nhóm hy vọng nhận được
những ý kiến đóng góp quý báu từ quý thầy cô để rút ra kinh nghiệm cho các đồ án
khác trong tương lai. Nhóm thực hiện xin chân thành cảm ơn.
Lời cuối cùng, nhóm chúng em xin chúc thầy cơ có thật nhiều sức khỏe để
tiếp tục thực hiện sứ mệnh cao cả của mình đó chính là truyền đạt những kiến thức
bổ ích cho nhiều thế hệ sinh viên tiếp theo. Chúng em xin bày tỏ lịng biết ơn thầy
cơ rất nhiều!
Nhóm thực hiện
Trần Phương Linh
Võ Ngọc Phong


TĨM TẮT
1. Các vấn đề nghiên cứu
- Tìm hiểu về các hệ thống tương tự, phân tích để tìm ra điểm mạnh và phù
hợp để áp dụng.
- Tìm hiểu về Reactjs, Framework Expressjs của Nodejs để giải quyết vấn đề
cung cấp dịch vụ API cho hệ thống học tiếng Anh trực tuyến.
2. Các vấn đề phát sinh
- Bảo mật là một trong những yêu cầu quan trọng cho website thực tế.
- Không thể lưu video, audio bằng Blob.
3. Các phương pháp giải quyết vấn đề
- Sử dụng JWT để cải thiện yêu cầu bảo mật cho website.
- Chuyển đổi video, audio về chuỗi base64 và lưu chuỗi đó vào database.

4. Kết quả đạt được
- Hệ thống học tiếng Anh trực tuyến bao gồm: giao diện cho phía người dùng
và giao diện phía người quản trị.
- Giao diện dễ sử dụng, thân thiện và thu hút người dùng.
- Dễ dàng quản lý, sửa chữa và mở rộng.


MỤC LỤC

-


MỤC LỤC BẢNG

10


MỤC LỤC HÌNH ẢNH

11


DANH MỤC CÁC TỪ VIẾT TẮT
API: Application Programming Interface
BSON: Binary JSON
CLI: Command line interface
DOM: Document Object Model
HTML: Hyper Text Markup Language
HTTP: Hyper Text Transfer Protocol
IDE: Integrated Development Environment

JSON: JavaScript Object Notation
JSON: JavaScript Object Notation
JSX: JavaScript + XML
JWT: JSON Web Token
MAC: Media Access Control
MERN STACK: bộ công nghệ mã nguồn mở liên quan đến JavaScript, bao gồm
các công nghệ: MongoDB, Express, React/React Native và Nodejs.
MIT: Massachusetts Institute of Technology
I/O: Input/Output
URL: Uniform Resource Locator
XML: Extensible Markup Language

12


PHẦN MỞ ĐẦU
1.1. TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Trong xu thế hội nhập kinh tế thế giới như hiện nay, ngơn ngữ được coi là một yếu
tố quan trong. Nó chính là cơng cụ để giúp cho mọi người dân tại các quốc gia khác
nhau có thể hiểu nhau, giao lưu kinh tế, văn hóa xã hội và cùng nhau phát triển. Tuy
nhiên, các quốc gia khác nhau có một ngơn ngữ khác nhau. Chỉnh vì vậy mà đã tạo
ra rào cản giữa các quốc gia dân tộc có sự bất đồng về ngơn ngữ. Trước xu thế tồn
cầu, hội nhập kinh tế sâu rộng như hiện nay cùng với nhu cầu hợp tác, giao lưu kinh
tế, văn hóa – xã hội giữa các quốc gia, địi hỏi phải có một ngôn ngữ thống nhất làm
ngôn ngữ giao tiếp chung cho mọi người trên khắp thế giới. Theo các chuyên gia
ngôn ngữ học, tiếng Anh là một trong những ngôn ngữ dễ học và dễ giao tiếp nhất.
Ngoài ra, do sự ảnh hưởng các nước phát triển trong nhiều lĩnh vực, nên tiếng Anh
càng được sử dụng phổ biến hơn. Do đó, ngày nay, tiếng Anh được xem là một
ngơn ngữ chung, một hành lang quan trọng cho mọi người.
Tiếng Anh có vai trị vơ cùng quan trọng, nó khơng chỉ là công cụ giao tiếp giữa

mọi người với nhau, mà tạo cơ hội thăng tiến cho những người đang làm việc, và
nhất là những người đang làm việc trong những doanh nghiệp nước ngồi, và cịn là
một trong những điều kiện quyết định tương lai của hầu hết sinh viên khi tốt
nghiệp.
Nhận thấy được tầm quan trọng của tiếng Anh, nhóm chúng em đã quyết định
chọn đề tài “Xây dựng trang web học tiếng Anh sử dụng MERN STACK” để giúp
mọi người có thể học và rèn luyện tiếng Anh, củng cố thêm vốn từ vựng của mình.
1.2. MỤC ĐÍCH CỦA ĐỀ TÀI
Các mục tiêu của dự án nằm trong danh sách dưới đây:
- Phát triển hai mơ-đun chính. Đầu tiên là hệ thống quản lý bao gồm các tính năng
cần thiết giúp quản trị viên và người tạo nội dung có thể quản lý dữ liệu của trang
web. Phần thứ hai tập trung vào trang web của người dùng, giúp người dùng có thể
luyện nghe, học, chơi các trò chơi nhỏ để củng cố thêm vốn từ vựng và rèn luyện kỹ
năng luyện nghe.
- Bên cạnh việc thực hiện chức năng chính, hệ thống phải đáp ứng các yêu cầu phi
chức năng như xác thực giữa người dùng và máy chủ, áp dụng phương pháp mã hóa
mật khẩu người dùng và thiết lập cơ chế phân quyền cho toàn hệ thống.
13


1.3. CÁCH TIẾP CẬN VÀ PHƯƠNG PHÁP NGHIÊN CỨU
1

Đối tượng nghiên cứu

Đối với đề tài “Xây dựng trang web học tiếng Anh sử dụng MERN STACK”,
đối tượng nghiên cứu dựa trên những nhu cầu cần thiết phải học tiếng Anh. Đồng
thời kèm theo đó là các cơng nghệ áp dụng để tạo ra ứng dụng. Cụ thể như sau:



Tập trung nghiên cứu Restful API, NodeJS, ExpressJS để xây dựng nên hệ
thống các APIs hỗ trợ lấy dữ liệu một cách chính xác và nhanh chóng nhất.



Áp dụng cơ sở dữ liệu noSQL là MongoDB để lưu trữ dữ liệu người dùng
của hệ thống.



Về phần bảo mật hệ thống, tiến hành nghiên cứu công nghệ Json Web Token
làm bảo mật cho hệ thống, tất cả các luồng dữ liệu vào ra đều được kiểm sốt
thơng qua Token. Người dùng bắt buộc phải đăng nhập vào hệ thống để có
một Token riêng và mỗi request từ phía người dùng đều phải thơng qua một
“cánh cửa” Interceptor và Token là “chìa khóa”.



Về phần hiển thị cho người sử dụng cuối nhóm chúng em tiến hành nghiên
cứu Framework ReactJS và một số thư viện được hỗ trợ cho ReactJS để xây
dựng và xử lý giao diện và cho người dùng sử dụng.

2

Phạm vi nghiên cứu

Đề tài “Xây dựng trang web học tiếng Anh sử dụng MERN STACK” chủ yếu
tập trung vào các chức năng cơ bản của một trang web học tiếng Anh trực tuyến bao
gồm 2 phần là phần Quản trị và phần Người dùng.
Trong phần Quản trị, tập trung vào các nghiệp vụ như:



Quản lý tài khoản



Quản lý bài nghe



Quản lý ngữ pháp



Quản lý từ vựng



Quản lý bài trắc nghiệm

Trong phần Người dùng tập trung vào:


Đăng ký



Đăng nhập
14





Học bài nghe



Học ngữ pháp



Học phát âm



Học từ vựng



Chơi trò chơi

1.4. PHÂN TÍCH CÁC ỨNG DỤNG CĨ LIÊN QUAN
Hầu hết các website học tiếng anh đã được xây dựng và ra mắt rất nhiều, có nhiều
tính năng từ cơ bản đến phức tạp. Tuy nhiên một số ứng dụng vẫn có những nhược
điểm sau:
-

Có tính phí người dùng.
Giao diện cịn hơi khó sử dụng đối với một số người mới dùng lần đầu.
Các trang web hầu như chỉ chuyên về một tính năng nhất định.


1.5. KẾT QUẢ DỰ KIẾN ĐẠT ĐƯỢC
Xây dựng một trang web học tiếng Anh trực tuyến với các tính năng cơ bản, đáp
ứng được nhu cầu học tiếng Anh cho người dùng.

15


PHẦN NỘI DUNG
1
1
3

CƠ SỞ LÝ THUYẾT

NODEJS [1]
Định nghĩa về NodeJS

NodeJS là một mã nguồn mở, đa nền tảng, chạy trên môi trường JavaSript, được
xây dựng trên V8 JavaScript engine của Chrome - V8 thực thi mã JavaScript bên
ngồi trình duyệt. Nó được tạo ra vào năm 2009 đi kèm với một lợi thế chính NodeJS cho phép thực hiện lập trình bất đồng bộ.
Ở chế độ đồng bộ thực thi từng dòng và tiến hành thực thi dòng tiếp theo khi
dòng hiện tại đã thực thi xong.
Khi bất đồng bộ thực thi tất cả dòng code cùng một lúc.
NodeJS là một nền tảng được xây dựng trên JavaScript runtime của Chrome với
mục đích xây dựng các ứng dụng mạng nhanh chóng và có thể mở rộng được một
cách dễ dàng hơn. NodeJS sử dụng mơ hình I/O lập trình theo sự kiện, nonblocking, do đó nodeJS khá gọn nhẹ và hiệu quả - cơng cụ hồn hảo cho các ứng
dụng chuyên sâu về dữ liệu theo thời gian thực chạy trên các thiết bị phân tán.
NodeJS là môi trường runtime mã nguồn mở đa nền tảng, được sử dụng để phát
triển các ứng dụng mạng và ứng dụng server-side. Các ứng dụng NodeJS được viết

bằng JavaScript và có thể chạy trong NodeJS runtime trên OS X, Microsoft
Windows và Linux.
NodeJS cũng cung cấp một thư viện bao gồm rất nhiều các module JavaScript
khác nhau nhằm đơn giản hóa việc phát triển các ứng dụng web, qua đó giảm thiểu
tình trạng sử dụng q nhiều Node.js.
4

Các tính năng của NodeJS

Lập trình hướng sự kiện và khơng đồng bộ: Tồn bộ API trong thư viện NodeJS đều
không đồng bộ, hay không bị chặn. Về cơ bản điều này có nghĩa là một server sử
dụng NodeJS sẽ không bao giờ chờ một API trả về dữ liệu. Server sẽ chuyển sang

16


API kế tiếp sau khi gọi API đó và cơ chế thông báo của Events trong NodeJS giúp
server nhận được phản hồi từ lần gọi API trước.
Cực kỳ nhanh chóng: Được xây dựng trên Công cụ JavaScript V8 của Google
Chrome, thư viện NodeJS có khả năng xử lý mã vơ cùng nhanh.
Đơn luồng/Single thread nhưng có khả năng mở rộng cao: NodeJS sử dụng một mơ
hình luồng đơn với vịng lặp sự kiện/event. Cơ chế event cho phép máy chủ phản
hồi non-blocking và cũng cho phép khả năng mở rộng cao hơn so với các server
truyền thống hỗ trợ giới hạn các thread để xử lý yêu cầu. NodeJS sử dụng một
chương trình đơn luồng, cùng một chương trình có thể cung cấp dịch vụ cho một số
lượng yêu cầu lớn hơn so với các máy chủ truyền thống như Apache HTTP Server.
Khơng có buffer - Các ứng dụng NodeJS khơng có vùng nhớ tạm thời (buffer) cho
bất kỳ dữ liệu nào. Các ứng dụng này chỉ đơn giản xuất dữ liệu theo khối.
License - NodeJS được phát hành theo giấy phép MIT.
5


Đối tượng và ứng dụng của NodeJS

1

Đối tượng

Các cơng ty đang sử dụng Nodejs có thể kể đến một số tên tuổi lớn như eBay,
General Electric, GoDaddy, Microsoft, PayPal, Uber, Wikipin, Yahoo, và Yammer
2

Ứng dụng
-

Hệ thống Notification - Giống như Facebook hay Twitter.

-

Websocket server - Các máy chủ web socket như là Online Chat, Game
Server…

-

Fast File Upload Client - Các chương trình upload file tốc độ cao.

-

Ad Server - Các máy chủ quảng cáo.

-


Cloud Services - Các dịch vụ đám mây.

-

RESTful API - Những ứng dụng mà được sử dụng cho các ứng dụng khác
thông qua API.
17


-

Any Real-time Data Application - Bất kỳ một ứng dụng nào có yêu cầu về
tốc độ thời gian thực.

-

Ứng dụng Single Page Application (SPA) - Những ứng dụng này thường
request rất nhiều đến server thông qua AJAX

-

Ứng dụng truy vấn tới NoSQL database - Như MongoDB, CouchDB, …

-

Ứng dụng CLI - Các công cụ sử dụng command-line.

6


Một số ưu, nhược điểm của NodeJS

1

Ưu điểm
-

Nhận và xử lý nhiều kết nối chỉ với một single-thread giúp hệ thống tốn ít
RAM nhất và chạy nhanh nhất khi không phải tạo thread mới cho mỗi truy
vấn.

-

NodeJS tận dụng tối đa tài nguyên của server mà khơng tạo ra độ trễ vì áp
dụng ưu điểm non-blocking I/O của Javascript.

-

Với cơ chế event-driven, non-blocking I/O (Input/Output) và mơ hình kết
hợp với Javascript là sự lựa chọn tuyệt vời cho các dịch vụ Website làm bằng
JSON.

-

Với khả năng xử lý nhiều Request/s đồng thời thời gian phản hồi nhanh. Rất
phù hợp để áp dụng NodeJS để xây dựng các ứng dụng Single page
Application, các ứng dụng không muốn tải lại trang, gồm rất nhiều request từ
người dùng cần sự hoạt động nhanh, các **ứng dụng thời gian thực **như
ứng dụng chat, các dịch vụ mạng xã hội như Facebook, Twitter, …


-

NodeJS sẽ tận dụng tối đa Unix để hoạt động. Tức là NodeJS có thể xử lý
hàng nghìn process và trả ra một luồng khiến cho hiệu xuất hoạt động đạt
mức tối đa nhất và tuyệt vời nhất.

-

Streaming Data: Các web thông thường gửi HTTP request và nhận phản hồi
lại (Luồng dữ liệu). Giả xử sẽ cần xử lý 1 luồng giữ liệu cực lớn, NodeJS sẽ
xây dựng các Proxy phân vùng các luồng dữ liệu để đảm bảo tối đa hoạt
động cho các luồng dữ liệu khác.
18


-

2

7

Viết được cho cả 2 phía server và client. Chạy đa nền tảng trên Windows,
MAC hoặc Linux. Hơn nữa cộng đồng NodeJS rất lớn và hồn tồn miễn
phí.
Nhược điểm

-

Rất hạn chế khi áp dụng NodeJS khi xây dựng ứng dụng nặng, tốn tài
nguyên. Bởi vì NodeJS được viết bằng C++ & Javascript, nên phải thơng qua

thêm 1 trình biên dịch của NodeJS sẽ lâu hơn 1 chút.

-

Giống như hầu hết các công nghệ mới, việc triển khai NodeJS trên host
không phải là điều dễ dàng.

-

Thiếu sự kiểm duyệt chất lượng các module NodeJS.
Sử dụng NodeJS trong đề tài

Sử dụng NodeJS để làm mơi trường xây dựng website bên phía server.
1.6. EXPRESSJS
8

Định nghĩa về ExpressJS [2]

ExpressJS là một framework được xây dựng trên nền tảng của NodeJS. Nó cung
cấp các tính năng mạnh mẽ để phát triển web hoặc mobile. ExpressJS hỗ trợ các
method HTTP và middleware tạo ra API vô cùng mạnh mẽ và dễ sử dụng.

Hình 1. Cấu trúc một API được xây dựng với ExpressJS
19


9
1

Tại sao nên sử dụng Expressjs trong lập trình web? [3]

Sự phổ biến của Javascript

Javascript là một ngôn ngữ lập trình được sử dụng rộng rãi hiện nay, dễ đọc
và được hỗ trợ ở mọi nơi. Mà Expressjs lại hỗ trợ Javascript, do đó nếu bạn đã biết
đến Javascript thì chắc chắn việc lập trình bằng Express.js là vơ cùng đơn giản.
Ngay cả những người mới bắt đầu tham gia vào lĩnh vực phát triển web này cũng có
thể sử dụng Expressjs.
Javascript là ngơn ngữ lập trình dễ học với cả những người khơng có bất kỳ
kiến thức gì về ngơn ngữ lập trình khác. Chính vì tính phổ biến, dễ học và dễ sử
dụng này mà Express.js cho phép các tài năng trẻ tham gia và đạt được nhiều thành
công trong phát triển ứng dụng web.
2

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ế, 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 một cách hiệu quả trong
thời gian ngắn. Nhưng để thực hiện tốt công việc này cần rất nhiều thời gian và
Express.js chính là cơng cụ cứu cánh cho các nhà lập trình.
Express.js có thể giúp làm giả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 Expressjs 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ủa 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 u cầu của khách hàng.
Nếu khơng có Express.js, các lập trình viên phải viết mã code riêng để xây dựng
nên thành phần định tuyến. Đó là một cơng việc vô cùng tẻ nhạt và tốn thời gian.
Express.js đã giúp cho công việc này trở nên đơn giản và hiệu quả hơn rất nhiều.
3

Express.js hồn tồn miễn phí


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 tuyệt vời như
vậy mà lại khơng tốn một chút kinh phí nào thì khơng có lý do gì để khơng sử dụng
nó.
20


10

Những tính năng của Expressjs là gì?[3]
-

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.

-


Tạo mẫu - Templating: Các công cụ tạo khuôn mẫu được Express.js cung cấp
cho phép các nhà xây dựng nội dung động trên các website bằng cách tạo
dựng các mẫu HTML ở phía máy chủ.

-

Gỡ lỗi - Debugging: Để phát triển thành công các ứng dụng web không thể
thiết đi việc gỡ lỗi. Giờ đây với Expressjs 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.

Hình 2. Express.js cung cấp cơ chế định tuyến giúp duy trì trạng thái của website
11

Sử dụng ExpressJS trong đề tài

ExpressJs được dùng để xây dựng các API bên phía server cho website.
21


1.7. MONGODB [4]
12

Giới thiệu về MongoDB

MongoDB là phần mềm cơ sở dữ liệu mã nguồn mở NoSQL, được thiết kế
hướng theo đối tượng và hỗ trợ trên đa nền tảng. Các bảng MongoDB có cấu trúc
linh hoạt, cho phép dữ liệu không cần tuân theo bất kỳ dạng cấu trúc nào.
MongoDB hoạt động trên collection, hướng tài liệu kiểu JSON thay cho bảng để
tăng tốc độ truy vấn. MongoDB có chức năng định hướng tài liệu cung cấp, hiệu

suất cao, tính sẵn sàng cao và khả năng mở rộng dễ dàng.

Hình 3. MongoDB
Collection trong MongoDB về bản chất thì có thể hiểu là nhóm các
document, một collection sẽ chứa các tập document.
Ở MongoDB, các collection không theo bản chất cũ vì các document khơng
tn theo cấu trúc, nghĩa là các document trong một collection khơng có cấu trúc cố
định như nhau (không cần chia ra các cột để lưu trữ), vậy thì khơng cần phải định
nghĩa thành phần các cột trong một collection như trong cơ sở dữ liệu quan hệ.
Giải thích thêm về NoSQL được nhắc đến ở khái niệm MongoDB
NoSQL là cơ sở dữ liệu được xây dựng dành riêng cho các ứng dụng hiện
đại, dữ liệu lưu trữ lớn và ứng dụng nền web thời gian thực. NoSQL cần đơn giản
trong thiết kế, kiểm sốt tính khả dụng tốt và yêu cầu database lưu trữ dữ liệu dung
22


lượng cực lớn, tăng khả năng chịu lỗi tốt, thực hiện các truy vấn tốc độ cao khơng
địi hỏi năng lực phần cứng và tài nguyên hệ thống.
13

Sử dụng MongoDB mang lại những lợi ích gì?

Nhờ vào tính linh hoạt và sự đa dạng hóa trong cách thức chuyển hóa cơ sở dữ
liệu, MongoDB trở thành giải pháp đáng tin cậy đối với nhiều doanh nghiệp.
MongoDB không chỉ là một cơ sở dữ liệu dựa trên tài liệu điển hình, mà nó cịn nổi
bật nhờ vào một số tính năng khác như sau.
1

Truy vấn cơ sở dữ liệu đặc biệt


Thay vì sử dụng các lược đồ để xác định trước thì MongoDB lại sử dụng một
trong những lợi thế của mình là khả năng xử lý dữ liệu mà khơng cần lược đồ xác
định. Để nâng cao tính tối ưu và khả năng tiếp cận với các nhà phát triển,
MongoDB đã sử dụng ngôn ngữ truy vấn tương tự như cơ sở dữ liệu SQL. Với khả
năng này, MongoDB sẽ giúp chúng ta đơn giản hóa việc sắp xếp, truy vấn, cập nhật
và xuất dữ liệu của mình thơng qua các phương pháp phổ biến khác.

Hình 4. Hình minh họa chức năng truy vấn cơ sở dữ liệu đặc biệt
2

Cân bằng tải

Để đảm bảo tính khả dụng và độ tin cậy của dịch vụ, yêu cầu quy mô ứng
dụng đám mây của doanh nghiệp phải tăng lên. MongoDB sẽ duy trì sự cân bằng
23


thông qua sự phân phối các tập dữ liệu trên nhiều máy ảo cùng lúc, có thể thực hiện
tác vụ đọc và ghi ở mức có thể chấp nhận. Đối với MongoDB dữ liệu lưu trữ được
mở rộng tính qui mô theo chiều ngang, đây được gọi là Sharding. Dựa vào điều này,
các tổ chức, doanh nghiệp sẽ tiết kiệm được chi phí mở rộng theo chiều dọc của
phần cứng, trong khi khả năng hoạt động trên đám mây vẫn giữ nguyên.
3

Hỗ trợ đa ngôn ngữ

Đây là một trong những điều tuyệt vời khi nhắc đến MongoDB, các phiên bản
được cập nhật và phát triển liên tục nhằm hỗ trợ cho q trình điều khiển các ngơn
ngữ lập trình phổ biến như Python, PHP, Ruby, C++, Javascript, …
14


MongoDB có những ưu và nhược điểm gì?

1

Ưu điểm
-

MongoDB là một cơ sở dữ liệu hướng tài liệu, sử dụng bộ nhờ nội tại,
truy cập dễ dàng nhờ vào việc lập ra các chỉ mục, tăng tốc độ phản hồi
truy vấn nhanh. Theo đánh giá thì tốc độ MongoDB có thể nhanh hơn
100 lần so với cơ sở dữ liệu quan hệ.

-

Sự linh hoạt của cơ sở dữ liệu: MongoDB sử dụng lưu trữ dữ liệu dưới
dạng Document JSON nên mỗi collection sẽ có kích cỡ khác nhau và các
document cũng khác nhau. Do sử dụng cơ sở dữ liệu khơng có lược đồ
nên điều này mang lại sử linh hoạt và tự do lưu trữ dữ liệu thuộc nhiều
loại khác nhau.

-

Khả năng mở rộng: Lợi thế về cơ sở dữ liệu theo chiều ngang, vì vậy, khi
xử lý một dữ liệu lớn thì chúng ta có thể phân phối cho nhiều máy.

-

Đội ngũ hỗ trợ chuyên nghiệp: Khi gặp phải bất kỳ sự cố nào chúng ta có
thể liên hệ trực tiếp đến hệ thống hỗ trợ để xử lý kịp thời.


-

Tính khả dụng cao: MongoDB khơng chỉ có các tính năng về sao chép
mà có thể sử dụng gridFS (có thể lưu trữ và truy xuất các tệp vượt quá
kích thước 16MB). Các tính năng giúp tăng tính khả dụng và đạt hiệu
suất cao.

24


Hình 5. Hình minh họa ưu điểm của MongoDB
2

Nhược điểm
-

Do MongoDB khơng có tính ràng buộc. Do đó, người dùng phải thực sự
cẩn trọng khi thao tác để tránh những sai số khơng đáng có.

-

Các dữ liệu lớn hơn 16MB sẽ khơng được lưu trữ do giới hạn về kích
thước lưu trữ.

-

MongoDB không được phép Joins như cơ sở dữ liệu quan hệ. Để sử dụng
chức năng Joins, chúng ta có thể thêm Coding theo cách thủ cơng, vì là
thủ cơng nên có thể làm chậm q trình và bị ảnh hưởng đến hiệu suất.


-

Lồng dữ liệu trong BSON bị hạn chế, không được phép lồng những dữ
liệu hơn 100 cấp.

-

Khơng có chức năng Joins nên sẽ có sự dư thừa dữ liệu, điều này là dung
lượng bộ nhớ tăng không cần thiết.

25


×