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

Xây dựng mạng xã hội chia sẻ khoảng khắc cho những người yêu động vật

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 (2.76 MB, 106 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG THUẬT PHẦN MỀM

Trần Diệu Bảo Trân – 17521150
Đồn Thế Duy - 17520391

KHĨA LUẬN TỐT NGHIỆP

Xây dựng mạng xã hội chia sẻ khoảng khắc cho những
người yêu động vật
Social Networking for Animal Lovers

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

GIẢNG VIÊN HƯỚNG DẪN
ThS. Nguyễn Thị Thanh Trúc
TS. Nguyễn Hà Giang

TP. HỒ CHÍ MINH, 2021


CỘNG HÒA XÃ HỘI CHỦ NGHĨ VIỆT NAM
ĐẠI HỌC QUỐC GIA TP.HCM

Độc lập – Tự do – Hạnh phúc

TRƯỜNG ĐẠI HỌC CƠNG NGHỆ

Ngày



THƠNG TIN

Tháng

Năm 2021

NHẬN XÉT KHĨA LUẬN TỐT
NGHIỆP
(CỦA CÁN BỘ HƯỚNG DẪN/PHẢN BIỆN)
Tên khóa ḷn:
Xây dựng mạng xã hợi chia sẻ khoảnh khắc cho những người u đợng vật
Nhóm SV thực hiện:
Trần Diệu Bảo Trân
Đồn Thế Duy

17521150
17520391

Cán bợ hướng dẫn/phản biện:
ThS. Nguyễn Thị Thanh Trúc
TS. Nguyễn Hà Giang
Đánh giá Khóa luận:
1. Về cuốn báo cáo:
Số trang

_______

Số chương


_______

Số bảng số liệu

_______

Số hình vẽ

_______

Số tài liệu tham khảo

_______

Sản phẩm

_______

Mợt số nhận xét về hình thức cuốn báo cáo:
2. Về nợi dung nghiên cứu:
3. Về chương trình ứng dụng:
4. Về thái đợ làm việc của sinh viên:
-


Đánh giá chung: Khóa ḷn đạt/khơng đạt u cầu của mợt khóa ḷn tốt nghiệp kỹ
sư/, xếp loại Giỏi/ Khá/ Trung bình
Điểm từng sinh viên:
Đồn Thế Duy:………../10
Trần Diệu Bảo Trân:………../10

Người nhận xét
(Ký tên và ghi rõ họ tên)


ĐẠI HỌC QUỐC GIA TP.HCM

CỘNG HÒA XÃ HỘI CHỦ NGHĨ VIỆT NAM

TRƯỜNG ĐẠI HỌC CƠNG NGHỆ

Đợc lập – Tự do – Hạnh phúc

THÔNG TIN

Ngày

Tháng

Năm 2021

ĐỀ CƯƠNG CHI TIẾT
Tên đề tài:
Xây dựng mạng xã hội chia sẻ khoảnh khắc cho những người yêu động vật
Cán bộ hướng dẫn :
ThS. Nguyễn Thị Thanh Trúc - TS. Nguyễn Hà Giang
Sinh viên thực hiện:
Trần Diệu Bảo Trân
Đồn Thế Duy

17521150

17520391

Nợi dung đề tài:
1. Đặt vấn đề
Ngày nay, mạng xã hợi khơng cịn xa lạ với chúng ta và nó ngày càng phát triển
mạnh mẽ. Có thể nói nhu cầu chia sẽ, kết nối giữa người với người ngày càng
tang mang đến cho người sử dụng các mối quan hệ và giúp ta giải tỏa cảm
xúc… Hiện nay Facebook đang là một trong những mạng xã hội lớn nhất để
người sử dụng kết nối bạn bè hoặc cợng đồng có cùng mối quan tâm. Chính vì là
một mạng xã hội lớn như vậy cho nên chúng ta rất khó tìm được những người
bạn thật sự có chung sở thích và tìm được các bài viết liên quan tới những gì mà
ta quan tâm. Ví dụ: mợt người u thích thú cưng thì họ chỉ muốn được hịa vào
mợt cợng đồng những người u thích thú cưng như mình mà khơng bị chi phối
bằng những bài viết khơng liên quan khác. Chính vì vậy Mạng xã hợi Petlove
dành riêng cho những người yêu thích thú cưng sẽ giúp cho họ dễ dàng kết nối
được với những người bạn có đặc điểm chung đó chính là u đợng vật.
2. Phạm vi đề tài
2.1 Phạm vi công nghệ


• NodeJS (Back-end)
• EJS engine (view)
• AJAX (client)
• MongoDB (database)
2.2 Phạm vi đối tượng
Người dùng ở mọi đợ tuổi có máy tính và điện thoại thơng minh, có nhu cầu
tìm kiếm những người bạn có chung sở thích hoặc tìm kiếm những hình ảnh thú
vị của thế giới dợng vật
3. Mô tả yêu cầu đề tài
3.1 Các yêu cầu về mặc chức năng:















Đăng kí tài khoản để sử dụng mạng xã hội
Đăng nhập
Thay đổi mật khẩu
Cập nhật trang cá nhân (thơng tin cá nhân, avatar, ảnh bìa)
Viết bài
Like bài, comment, share bài
Kết bạn (gửi yêu cầu, hủy yêu cầu, chấp nhận, từ chối, hủy kết bạn)
Chat với bạn bè
Tìm kiếm người dùng, page, group
Gợi ý các bạn bè, page mới, group mới
Tạo group thảo luận, bàn bạc
Tạo page
Load newfeed dựa trên bài viết của user, friend, page đã like và group đã

join 
3.2 Các yêu cầu phi chức năng:

• Website chạy ổn định
• Giao diện thân thiện, dể sử dụng
• Thiết kế hợp xu hướng (trendy)
• Có responsive cho các thiết bị di đợng
• Database có khả năng mở rợng, truy suất nhanh
4. Nợi dung thực hiện
4.1 Cơng nghệ sử dụng
• Front-end: EJS Engine Template : một template dựa trên HTML, CSS làm giao
diện; AJAX dùng trong xử lí và tương tác giữa người dùng với hệ thống.
• Back-end: NodeJS


• Database: MongoDB
4.2 Lựa chọn công nghệ
Về phần ngôn ngữ lập trình, nhóm chọn các cơng nghệ liên quan đến
Javascript nhằm tạo ra một trang web chỉ với một ngôn ngữ. Javascript hiện
nay là ngơn ngữ lập trình chun về lập trình các ứng dụng web hướng
người dùng, quan tâm đến tương tác, dễ học và có cợng đồng lập trình viên
phong phú.
Về phần cơ sở dữ liệu, với mục đích đề ra ban đầu, là ưu tiên về mặt tốc đợ
truy xuất và khả năng mở rợng cực kì linh hoạt, MongoDB là sự lựa chọn
của nhóm. Qua tìm hiểu trên Internet, do đáp ứng khả năng “thời gian thực”
của website, việc sử dụng No-SQL là thực sự cần thiết.
5. Kết quả mong đợi
Tạo ra một trang web kết nối những người có cùng đam mê về đợng vật, chia sẽ,
lưu giữ những khoảnh khắc đẹp đáng nhớ
Kế hoạch thực hiện:
STT

Nợi dung


Thời gian

Phân tích đề tài, u cầu, đề xuất danh sách chức năng
1

Tìm hiểu về HTML, CSS, Javascript,

15/03/2021 - 1/4/2021

Node JS
2

Tìm hiểu JWT (Json Web Token), EJS

15/03/2021 - 1/4/2021

Template
3

Xây dựng cấu trúc Database

15/03/2021 - 1/4/2021

4

Tìm hiểu các chức năng của một mạng xã

15/03/2021 - 1/4/2021


hội
5

Dựng UI Mockup

15/03/2021 - 1/4/2021

6

Tìm hiểu Realtime Chat, SocketIO cho

8/4/2021 - 5/5/2021

tính năng Chat và Notification


7

Thiết kế giao diện trang wed người dùng

8/4/2021 - 5/5/2021

8

Thiết kế giao diện web Admin

8/4/2021 - 5/5/2021

9


Tạo và kết nối database dùng MongDB

8/4/2021 - 5/5/2021

Compass và MongDB Atlas
10

Hiện thực backend và viết API cho trang

8/4/2021 - 5/5/2021

web.
11

Gắn backend vào layout cho các tính năng

8/4/2021 - 5/5/2021

12

Responsive, optimize performance

8/4/2021 - 5/5/2021

13

Kiểm tra, fix lỗi, kiểm thử

8/4/2021 - 5/5/2021


14

Triển khai trên môi trường Internet

8/4/2021 - 5/5/2021

15

Tiếp thu feedback, cải thiện website

8/4/2021 - 5/5/2021

16

Thu thập phân tích dữ liệu, tối ưu hiển thị

15/03/2021 - 1/4/2021

thông tin trên trang người dùng

Xác nhận của CBHD

TP.HCM, ngày….tháng ….năm 2021

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

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



LỜI CẢM ƠN
Đầu tiên, chúng em xin gởi lời cảm ơn chân thành đến tập thể quý Thầy Cô Trường
Đại học Công nghệ thông tin – Đại học Quốc gia TP.HCM và quý Thầy Cô khoa
Công nghệ phần mềm đã giúp cho nhóm tác giả có những kiến thức cơ bản làm nền
tảng để thực hiện đề tài này.
Đặc biệt, chúng em xin gửi lời cảm ơn và lòng biết ơn sâu sắc nhất tới Ths. Nguyễn
Thị Thanh Trúc và Ts. Nguyễn Hà Giang đã hướng dẫn, hỡ trợ nhóm hồn thành đồ
khóa ḷn tốt nghiệp.
Trong thời gian mợt học kỳ thực hiện đề tài, nhóm tác giả đã vận dụng những kiến
thức nền tảng đã tích lũy đồng thời kết hợp với việc học hỏi và nghiên cứu những
kiến thức mới. Từ đó, nhóm vận dụng tối đa những gì đã thu thập được để hồn
thành mợt báo cáo đồ án tốt nhất. Tuy nhiên, trong quá trình thực hiện, chúng em
khơng tránh khỏi những thiếu sót. Chính vì vậy, chúng em giả rất mong nhận được
những sự góp ý từ phía các Thầy Cơ nhằm hồn thiện những kiến thức mà chúng
em đã học tập và là hành trang để nhóm tác giả thực hiện tiếp các đề tài khác trong
tương lai.
Xin chân thành cảm ơn các quý Thầy Cô!


MỤC LỤC

Chương 1. Mở đầu


DANH MỤC HÌNH
Hình 2.1 - NodeJS (Nguồn: />Hình 2.2– Event-driven
Hình 2.3 – Cách hoạt đợng của mongoDB
Hình 2.4 – Cách hoạt đợng của ExpressJS
Hình 2.5 – Cách hoạt đợng của JWT
Hình 2.6 – Sự tương tác của socket.io

Hình 2.7 socket.io hoạt động trong ChatApp


DANH MỤC BẢNG


DANH MỤC TỪ VIẾT TẮT

Viết tắt
JWT
CO
DE

Diễn giải
JSON Web Token
Constraint
Dependency


TĨM TẮT KHĨA LUẬN

Ngày nay mạng xã hợi trở nên vô cùng phổ biến và được sử dụng bởi
một cộng đồng lớn. Mạng xã hợi có nhiểu chức năng khác nhau, nhưng mục
đích cốt lõi là chia sẽ những khoảng khắc đẹp, ý nghĩa về một câu chuyện mà
người dùng muốn cho mọi người cùng hưởng ứng. Với những năm gần đây,
việc mợt vấn đề nào đó trở nên trở thành xu hướng nhanh chóng (trending) ,
đồng thời mạng xã hợi là cơng cụ nhanh chóng nhất để truyền đạt tin tức đó.
Mạng xã hợi cũng được chia thành nhiều loại với nhiều mục đích khác nhau.
Facebook là đại diện cho mạng xã hội tin tức, Instagram cũng là một biến thể của
mạng xã hội tin tức, nhưng dữ liệu chính là hình ảnh. Youtube, Tiktok là đại diện

cho mạng xã hợi video kèm theo tính năng xu hướng (trend). Theo đó, bên cạnh các
mạng xã lớn như trên, có tồn tại các mạng xã hội ngách tập trung vào mợt số lượng
nhỏ người dùng có chung sở thích nhận được khơng ít sự đón nhận của cợng đồng.
Chính vì thấy mạng xã hội ngách này tập trung vào một nhóm đối tượng nhất định
mà khơng bị những “ơng lớn” đè nặng, chúng em đã xây dựng nên mạng xã hợi
Petpedia dành riêng cho những người u thích thú cưng cũng như các lồi đợng vật
bằng cách áp dụng nền tảng NodeJS và cơ sở dữ liệu mã nguồn mở MongoDB. Để
thực hiện tốt đề tài này, chúng em đã tham khảo mạng xã hội dành cho thú cưng
mang tên “DruzhOK” – nghĩa là “Người bạn nhỏ” được phát triển tại Nga và quyết
định xây dựng mạng xã hội dành cho thú cưng tại Việt Nam. Kết thúc đề tài, nhóm
chúng em đã đạt được kết quả:
• Học và sử dụng thành thạo nền tảng NodeJS
• Xây dựng được mợt ứng dụng mạng xã hội

13


CHƯƠNG 1. MỞ ĐẦU

1.1. Đặt vấn đề
Các trang mạng xã hợi là mợt hình thức giao tiếp của con người ngày càng mở
rợng nhanh chóng. Chúng được định nghĩa là “Những địa điểm ảo phục vụ cho mợt
nhóm dân cư cụ thể, trong đó là những người cùng sở thích tụ tập giao tiếp, chia sẽ
và thảo luận về ý tưởng”. Người ta đã đề xuất rằng sự thay đổi trong giao tiếp của
con người đã tạo ra một nền vắn hóa kỹ tḥt số, mợt phương pháp đợc đáo để chia
sẽ các chuẩn mực xã hội và quản lý hành vi. Văn hóa này có thể có các tác đợng
tích cực và tiêu cực. Tuy nhiên, chúng ta khơng thể phủ định sự đợc đáo của văn
hóa này đó chính là khả năng chia sẽ của nó. Mợt nghiên cứu cho rằng “sự hài lịng
xã hợi”, “Số lượt thích”, “Bình ḷn” và “Chia sẽ” của mợt bài đăng nhận được là
đợng lực tích cực của hoạt đợng chia sẽ trên mạng xã hợi. Điều này khơng có gì

đáng ngạc nhiên vì hành vi của con người được trung gian mạnh mẽ bởi danh tiếng
xã hội và các tương tác. Mạng xã hội cung cấp cơ chế để mọi người đánh giá những
đóng góp cho cợng đồng của họ.
Khi người dùng sử dụng mạng xã hội Facebook để ghi lại mối quan hệ của họ với
những người khác thì mạng xã hội dành cho thú cưng Petpedia được tập trung sử
dụng để mô tả, xây dưng cộng đồng chia sẽ các khoảng khắc giữa người với thú
cưng cũng như những loại đợng vật khác.Với xu hướng sở hữu cho mình thú cưng
ngày càng gia tăng, vật nuôi ngày càng trở nên gắn bó với đời sống của mỡi người.
Việc có những bức ảnh ngộ nghĩnh đáng yêu của các giống loài trên những thiết bị
và tải lên những nền tảng giải trí cũng tang. Petpedia được tạo ra để phục vụ cho
những người muốn khoảng khắc sống động bên nhau mỡi ngày. Facebook cho phép
tạo nhóm để người dung theo dõi, nhưng vì đó là mạng xã hợi hướng tới đối tượng
là mọi người, ai cũng có thể dùng mạng xã hợi cho nên sẽ rất khó để kiểm sốt cho
mợt cợng đồng ví dụ như cơng đồng những người u thích thú cưng. Việc mất
kiểm sốt nợi dung sẽ mau chóng làm cho những người thật sự u thích thú cưng
14


sẽ cảm thấy đó khơng cịn là nơi lý tưởng để giao lưu. Khảo sát cho thấy, đa số
những người dùng mạng xã hội tham gia vào một cộng đồng thú cưng chủ yếu là
tìm kiếm những lời khuyên, sự giúp đỡ cho thú cưng của họ thì họ cần một cộng
đồng “sạch” để tin tưởng chia sẽ. Tuy nhiên, việc nhấn mạnh ở đây là chúng ta thu
hẹp phạm vi người dùng tạo các bài đăng và nhận xét để mạng lại các cợng đồng
đáng tin cậy.
Bản thân nhóm chúng em là những người yêu thích thú cưng nên việc tạo ra
mợt cợng đồng mạng lành mạnh, sạch, có cùng chung sở thích đã thúc đẩy đợng lực
cho chúng em quyết định xây dựng mạng xã hội thú cưng mang tên Petpedia.
1.2. Mục tiêu đề tài
• Áp dụng các công nghệ về xây dựng web application để tạo ra mợt sản phẩm hồn
chỉnh, có khả năng sử dụng trong thực tế. Nghiên cứu các khía cạnh, vấn đề, giải

pháp và quy trình tạo ra mợt mạng xã hợi.
• Tạo ra mợt trang web kết nối những người có cùng đam mê về động vật, chia sẽ,
lưu giữ những khoảnh khắc đẹp đáng nhớ, lan tỏa đam mê
• Tạo ra các nhóm, trang để chia sẽ kinh nghiệm các vấn đề liên quan tới chăm sóc,
ni dưỡng hay mua bán thú cưng.
• Nghiên cứu, đề xuất các bài viết, hợi nhóm phù hợp đến sở thích của người dùng.
• Tối ưu hóa trải nghiệm người dùng, hệ thống chạy nhanh ổn định, realtime chat.
• Thu hút được số lượng lớn người dùng sử dụng .
• Tìm hiểu các vấn đề về bảo mật thơng tin, mã hóa dữ liệu, truyền thông tin bảo
mật giữa server với client.
1.3. Đối tượng và phạm vi nghiên cứu
1.3.1.

Đối tượng

• Tất cả các người dùng mạng xã hội, giới trẻ hiện nay

15


• Những người có đam mê, u thích đợng vật muốn chia sẽ, lan toa tinh thần đến
với cộng đồng.
1.3.2.

Phạm vi nghiên cứu




Về khơng gian: ở Việt Nam và trên thế giới.

Về thời gian: xu hướng thiết kế web,công nghệ, nhu cầu về mạng xã hợi từ
2019- nay
• Về cơng nghệ:
o NodeJS (Back-end)
o EJS engine (view)
o AJAX (client)
o MongoDB (database)
1.4. Cấu trúc khóa ḷn
Các phần cịn lại của khóa ḷn có cấu trúc như sau:
Chương 2 : Cơ sở lý thuyết và cơng nghệ - trình bày nền tảng NodeJS, cơ sở dữ
liệu mã nguồn mở MongoDB.
Chương 3: Phân tích yêu cầu – chương này sẽ phân tích các ứng dụng như đặc tả
yêu cầu, kiến trúc ứng dụng
Chương 4: Thiết kế và xây dựng ứng dụng – chương này sẽ có các thiết kế của ứng
dụng như: cơ sở dữ liệu và các biểu đồ
Chương 5: Kết quả
Kết luận và định hướng phát triển

16


Chương 2.

Cơ sở lý thuyết và áp dụng công nghệ

2.1. Nền tảng NodeJS
2.1.1.

Giới thiệu chung


Node.js là một mã nguồn mở, một môi trường cho các máy chủ và ứng dụng mạng.
Node.js sử dụng Google V8 JavaScript engine để thực thi mã, và một tỷ lệ lớn các
mô-đun cơ bản được viết bằng JavaScript. Các ứng dụng node.js thì được viết bằng
JavaScript phục vụ cho việc viết các ứng dụng trên Internet có khả năng mở rợng
đặc biệt là ứng dụng web. Node.js chứa một thư viện built-in cho phép các ứng
dụng hoạt động như một Webserver mà không cần phần mềm như Nginx, Apache
HTTP Server hoặc IIS.Mọi hàm trong Node.js là khơng đồng bợ (asynchronous).
Do đó, các tác , vụ đều được xử lý và thực thi ở chế độ nền (background
processing).

Hình 2.1 - NodeJS (Nguồn: />2.1.2.

Đặc điểm nổi bật của NodeJS

Đặc điểm nổi bật của Node.js là nó nhận và xử lý nhiều kết nối chỉ với một
single-thread. Điều này 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 giống PHP. Ngoài ra, tận dụng ưu điểm

17


non-blocking I/O của Javascript mà Node.js tận dụng tối đa tài nguyên của server
mà không tạo ra độ trễ như PHP.
Shelling tools unix 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 1 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. Streamming Data (Luồng dữ
liệu) 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.

Ứng dụng Web thời gian thực Với sự ra đời của các ứng dụng di động &
HTML 5 nên Node.js rất hiệu quả khi xây dựng những ứng dụng thời gian thực
(real-time applications) như ứng dụng chat, các dịch vụ mạng xã hội.
2.1.3.

Lý do sử dụng NodeJS

NodeJS được viết bằng ngôn ngữ Jacascript nên việc xử lý JSON dễ dàng hơn.
NodeJS hỡ trợ giao thức TCP vì vậy chúng ta dễ dàng xây dựng bất kỳ một
phương thức custom nào.
Ứng dụng thời gian thực (Realtime). Đó là một trong những ưu điểm tốt nhất của
NodeJS trong việc giao tiếp giữa máy chủ và máy khách. Thay vì phải tiếp nhận và
xử lý thông tin thay đổi một cách tuần tự của máy chủ, NodeJS sẽ xử lý sự thay đổi
đó ngay lập tức và gửi thơng tin đó đến các máy khách khác.
Máy chủ hướng sự kiện (Event-driven server) thường có mợt luồng duy nhất quản
lý tất cả các kết nối đến máy chủ. Luồng sử dụng lệnh gọi hệ thống select () để đồng
thời đợi các sự kiện trên các kết nối này.
Khi một lệnh gọi select () trả về, vịng lặp chính của máy chủ sẽ gọi các
trình xử lý sự kiện cho từng bợ mơ tả sẵn sàng. Các trình xử lý này thực hiện
nhiều tác vụ khác nhau tùy thuộc vào bản chất của sự kiện cụ thể. Ví dụ: khi
mợt socket được sử dụng để lắng nghe các kết nối mới sẵn sàng, trình xử lý
tương ứng gọi accept () để trả về một bộ mô tả tệp cho kết nối mới. Các trình
18


xử lý được gọi khi một kết nối sẵn sàng để đọc hoặc ghi, thực hiện đọc hoặc
ghi thực tế vào bợ mơ tả thích hợp. Việc thực thi các trình xử lý có thể gây ra
việc thêm hoặc xóa các bộ mô tả khỏi tập hợp do máy chủ quản lý.
Máy chủ hướng sự kiện nhanh vì chúng khơng có khóa hoặc chi phí chuyển
đổi ngữ cảnh. Cùng mợt luồng quản lý tất cả các kết nối và tất cả các trình xử

lý được thực thi đồng bợ giúp việc xử lý nhiều kết nối khác nhau một cách dễ
dàng hơn. Tuy nhiên, một máy chủ đơn luồng không thể khai thác bất kỳ sự
đồng thời thực sự nào trong luồng tác vụ. Do đó, trên các hệ thống đa xử lý,
máy chủ hướng sự kiện có nhiều luồng như bợ xử lý.

Hình 2.2– Event-driven

2.2. MongoDB
2.2.1.

Giới thiệu

MongoDB là mợt cơ sở dữ liệu mã nguồn mở và là cơ sở dữ liệu NoSQL(*) hàng
đầu, được hàng triệu người sử dụng. MongoDB được viết bằng C++.
19


Ngồi ra, MongoDB là mợt cơ sở dữ liệu đa nền tảng, hoạt động trên các khái niệm
Collection và Document, nó cung cấp hiệu suất cao, tính khả dụng cao và khả năng
mở rộng dễ dàng. MongoDB đã trở thành một trong những NoSQL database nổi
trội nhất bấy giờ, được dùng làm backend cho rất nhiều website như eBay,
SourceForge và The New York Times.
Các feature của MongoDB gồm có:
• Các ad hoc query: hỗ trợ search bằng field, các phép search thơng thường,
regular expression searches, và range queries.
• Indexing: bất kì field nào trong BSON document cũng có thể được index.
•Replication: có ý nghĩa là “nhân bản”, là có mợt phiên bản giống hệt phiên
bản đang tồn tại, đang sử dụng. Với cơ sở dữ liệu, nhu cầu lưu trữ lớn, địi hỏi cơ sở
dữ liệu tồn vẹn, khơng bị mất mát trước những sự cố ngồi dự đốn là rất cao. Vì
vậy, người ta nghĩ ra khái niệm “nhân bản”, tạo một phiên bản cơ sở dữ liệu giống

hệt cơ sở dữ liệu đang tồn tại, và lưu trữ ở mợt nơi khác, đề phịng có sự cố.
• Aggregation: Các Aggregation operation xử lý các bản ghi dữ liệu và trả về
kết quả đã được tính tốn. Các phép tốn tập hợp nhóm các giá trị từ nhiều
Document lại với nhau, và có thể thực hiện nhiều phép tốn đa dạng trên dữ liệu đã
được nhóm đó để trả về một kết quả duy nhất. Trong SQL, count(*) và GROUP BY
là tương đương với Aggregation trong MongoDB.
• Lưu trữ file: MongoDB được dùng như một hệ thống file tận dụng những
function trên và hoạt động như một cách phân phối qua sharding.

20


2.2.2.

Các hoạt đợng của MongoDB

Hình 2.3 – Cách hoạt đợng của mongoDB
MongoDB hoạt đợng dưới mợt tiến trình ngầm service, luôn mở một cổng (Cổng
mặc định là 27017) để lắng nghe các yêu cầu truy vấn, thao tác từ các ứng dụng gửi
vào sau đó mới tiến hành xử lý. Mỗi một bản ghi của MongoDB được tự động gắn
thêm mợt field có tên “_id” tḥc kiểu dữ liệu ObjectId mà nó quy định để xác định
được tính duy nhất của bản ghi này so với bản ghi khác, cũng như phục vụ các thao
tác tìm kiếm và truy vấn thông tin về sau. Trường dữ liệu “_id” luôn được tự động
đánh index (chỉ mục) để tốc độ truy vấn thơng tin đạt hiệu suất cao nhất.
Mỡi khi có mợt truy vấn dữ liệu, bản ghi được cache (ghi đệm) 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.
Khi có yêu cầu thêm/sửa/xóa bản ghi, để đảm bảo hiệu suất của ứng dụng mặc
định MongoDB sẽ chưa cập nhật xuống ổ cứng ngay, mà sau 60 giây MongoDB
mới thực hiện ghi tồn bợ dữ liệu thay đổi từ RAM xuống ổ cứng.
21



2.2.3.

Ưu điểm

• Dữ liệu lưu trữ phi cấu trúc, khơng có tính ràng ḅc, tồn vẹn nên tính sẵn sàng
cao, hiệu suất lớn và dễ dàng mở rợng lưu trữ.
• Dữ liệu được caching (ghi đệm) lên RAM, hạn chế truy cập vào ổ cứng nên tốc
độ đọc và ghi cao.
2.2.4.

Nhược điểm

• Khơng ứng dụng được cho các mơ hình giao dịch nào có u cầu đợ chính xác
cao do khơng có ràng ḅc.
• Khơng có cơ chế transaction (giao dịch) để phục vụ các ứng dụng ngân hàng.
• Dữ liệu lấy RAM làm trọng tâm hoạt đợng vì vậy khi hoạt đợng u cầu mợt bợ
nhớ RAM lớn.
• Mọi thay đổi về dữ liệu mặc định đều chưa được ghi xuống ổ cứng ngay lập tức
vì vậy khả năng bị mất dữ liệu từ nguyên nhân mất điện đột xuất là rất cao.
2.2.5.

Trường hợp sử dụng

Nên sử dụng trong trường hợp sau:
Nếu website của bạn có tính chất INSERT cao Bởi vì mặc định MongoDB có sẵn
cơ chế ghi với tốc đợ cao và an tồn.Website của bạn ở dạng thời gian thực nhiều,
nghĩa là nhiều người thao tác với ứng dung. Nếu trong q trình load bị lỡi tại mợt
điểm nào đó thì nó sẽ bỏ qua phần đó nên sẽ an tồn.

Website bạn có nhiều dữ liệu quá Giả sử web bạn có đến 10 triệu records thì đó là
cơn ác mợng với MYSQL. Bởi vì MongoDB có khả năng tìm kiến thơng tin liên
quan cũng khá nhanh nên trường hợp này nên dùng nó.
Máy chủ khơng có hệ quản trị CSDL Trường hợp này thường bạn sẽ sử dụng
SQLITE hoặc là MongoDB.

22


2.2.6.

MongoDB Atlas

Mongodb Atlas là một giải pháp phần mềm Database as a Service Provider có
chức năng và chi phí hồn toàn phù hợp cho mọi doanh nghiệp từ nhỏ đến vừa và
đến lớn. Khi đó, phần mềm MongoDB Atlas sẽ được đánh giá bởi tất cả các người
dùng lẫn với chuyên gia trong các lĩnh vực Database Software. Giai3 pháp này hộ
trợ trong việc đồng bộ data giữa các thành viên trong quá trình xây dựng web.
2.3. Các thư viện, package và công cụ liên quan
2.3.1.

ExpressJS

Express js là một framework mã nguồn mở và miễn phí cho Node.js. Express
js được sử dụng để thiết kế và xây dựng các ứng dụng web mợt cách nhanh
chóng, Express được sử dụng cùng với NodeJS, Angular/React, cùng với
MongoDB, tạo thành các chuẩn thiết kế MEAN/MERN stack phổ biến hiện nay.
Trong đề tài Express dùng để routing đến các trang khác nhau của website, hỡ trợ
việc render layout.


Hình 2.4 – Cách hoạt đợng của ExpressJS
Có thể thấy từ hình trên, khi u cầu đi vào máy chủ, Express sẽ xử lý nó
thành lệnh gọi lại mà khơng chặn ngăn xếp chính. Nếu tưởng tượng rằng người
23


dùng cần truy xuất một số dữ liệu từ tệp hoặc cơ sở dữ liệu, q trình như vậy có
thể tốn rất nhiều thời gian. Máy chủ trung bình sẽ chặn tất cả các yêu cầu khác
cho đến khi các dữ liệu này được phân phối.
Mongoose là phần bổ trợ trình điều khiển Mongo, hồn tồn phù hợp với hệ
sinh thái Express. Ưu điểm chính của MongoDB là nó được định hướng
JavaScript. Nó có nghĩa là trình điều khiển chuyển tất cả dữ liệu người dùng có
mà khơng mất thời gian vào việc điều chỉnh chúng cho môi trường lập trình.
MongoDB được phát triển cho các máy chủ hướng dữ liệu mở rộng.
Mỗi yêu cầu trong MongoDB được xử lý theo cách tương tự như trong lệnh
gọi lại. Nó có nghĩa là máy chủ không phải đợi (chặn) cho đến khi dữ liệu nhất
định được chuyển và xử lý đồng thời các yêu cầu khác. Điều này cực kì quan
trọng bởi vì cơ sở dữ liệu mở rợng quy mơ có thể đươc đặt trên mợt hoặc mợt số
máy chủ từ xa, cho nên việc truy xuất dữ liệu từ chúng sẽ tiết kiệm thời gian.
Tóm lại, Server nhận yêu cầu và đăng ký xử lý dữ liệu sự kiện. Sau đó, sự
kiện sẽ gửi yêu cầu đến máy chủ Mongo từ xa. Sau khi hồn tất, cần mợt khoảng
thời gian để dữ liệu quay lại và đồng thời máy chủ xử lý yêu cầu khác. Khi dữ
liệu đến, trình điều khiển Mongo gọi trình xử lý yêu cầu đến người dùng. Trình
xử lý yêu cầu người dùng cung cấp dữ liệu trở lại máy khách.
2.3.2.

JWT (JSON Web Token)

JWT là một chuẩn mở (RFC 7519) định nghĩa một cách nhỏ gọn và khép kín
để truyền mợt cách an tồn thơng tin giữa các bên dưới dạng đối tượng JSON.

Thông tin này có thể được xác minh và đáng tin cậy vì nó có chứa chữ ký số.
JWTs có thể được ký bằng mợt tḥt tốn bí mật (với tḥt tốn HMAC) hoặc
mợt public / private key sử dụng mã hố RSA.(Nguồn: techmaster.vn). Mục đích
sử dụng JWT khơng phải để ẩn dữ liệu mà để d9am4 bảo tính xác thực của dữ
liệu như là xác thực user đăng nhập, phục vụ cho việc routing website chính xác.

24


Hình 2.5 – Cách hoạt đợng của JWT
Nhà cung cấp danh tính IdP tạo JWT xác nhận danh tính người dùng và máy
chủ tài nguyên giải mã và xác minh xác thực của mã thông báo bằng cách sử
dụng public key. Người dùng đăng nhập bằng username và mật khẩu hoặc đăng
nhập bằng Google hay Facebook. Máy chủ sẽ xác thực thơng tin đó và cấp mợt
JWT được ký hiệu bằng cách sử dụng private key. User client sử dụng JWT để
truy cập các tài nguyên được bảo vệ bằng cách chuyển JWT trong hình thức xác
thực HTTP. Sau đó, máy chủ tài nguyên sẽ xác minh tính xác thực của token bằng
cách sử dụng private key.
2.3.3.

Socket io

Socket.IO được tạo ra vào năm 2010. Nó được phát triển để sử dụng các kết nối
mở để tạo điều kiện giao tiếp thời gian thực.
Socket.IO cho phép giao tiếp hai chiều giữa máy khách và máy chủ. Truyền thông
hai chiều được bật khi máy khách có Socket.IO trong trình duyệt và máy chủ cũng

25



×