Kiến trúc tông quan của hệ thống: Ứng dụng web được xây dựng theo kiến trúc đa tầng n-tier architecture, trong đó mỗi tầng thực hiện một số chức năng riêng, cung cấp dịch vụ cho tầng liề
Trang 1
BAO CAO CUOI KY MON HOC HE QUAN
TRI CO SO DU LIEU Ngành: Công nghệ thông tin
HÀ NỘI — 2021
Trang 2
A er, GIA HA NOI =) si]
- O0000 -
THIET KE HE THONG WEBSITE STREAMING VIDEO ONLINE
Cảng viên: TS Nguyễn Thị Hậu Sinh viên thực hành: Nguyễn Đào Quang Tuấn
Nguyễn Quyết Thắng Lớp môn học: INT3202 1
Si ‘ ie HA NOI- 2021
Trang 3MỤC LỤC
DANH SÁCH BẢNG 4 DANH SÁCH ẢNH 4
1 Ly do chon đề tải: TT ng ng HH HH Hee 6
2 Yêu cầu của hệ thống: ¬ 6
3 Kiến trúc tổng quan của hệ thống: 2+ +s1111111111511111111111111111111 2111 1x0 6
2 Chic nang insert, update, delete phim cho admin của trang web: 17
3 Chức năng đôi mật khâu, đôi username, đổi avatar cho người dùng: 19
4 Chức năng 1nsert, delete, update, set phim vào favourIte ÏIst: 20
5 Chức năng tìm kiếm theo tên phim, điễn viÊn: - ¿2s SE SE2212152222125 te 21 6ó, Chức năng xem phim theo thể loại: - 5s 2 E1 EEE121E1E151115171E11121E71 E11 ee 22 7 Chức năng đề xuất các phim tương tự phim được chọn: 5 c2 s22 23 8 Chức năng xem lại phim đang xem đổ: - + - 2 2c 21221122231 1211 122122512252 24 Lược để cơ sở đữ liệu: 2 - ST H T11 1212111 1515151151111 12121E 1E Ea 24 1 Sử dụng IIIdeX: 2 201 10201022011101 1111111111111 11111 1111111111111 111111111 11111111 ra 29 2 Sử dung explain dé phân tích kết quả query: 5: + SsSt 111 E222 112222 xe2 31 3 Su dung ODM Mongo0Se? cccccccccccccscctesenecsesesecsesesesseseseesssessesesessesssestesseesaes 31 4 Sử dụng limit dé giới hạn kết quả tìm kiếm cho những query không cần thiết: 33
THAM KHẢO 35
Trang 4DANH SACH BANG
Bảng 1: Thông tin của bang User
Bảng 2: Thông tin cua bang Movie
Bang 3: Thong tin cua bang List
Bang 4: Thong tin cua bang Actor
Bang 5: Thong tin cua bang Episode
DANH SACH ANH
Hình 1: Kiến trúc tổng quan hệ thống
Hình 2: Bảng xếp hạng các hệ quản trị cơ sở dữ liệu theo độ phổ biến theo db-engiges [8]
Hình 3: Dữ liệu dạng BSON
Hình 4: Tốc độ insert của MongoDB so với MySQL [10]
Hình 5: Mongoose giúp quản lý mối quan hệ giữa đữ liệu, cung cấp sự xác thực và biểu diễn các đối tượng trong MongoDB [11]
Hình 6: Định nghĩa một lược đồ (model) trong Mongoose
Hình 7: Trả về kết quả dạng JSON sau khi query câu lệnh băng Mongoose
Hình 8: Thống kê lượt sử dụng framework front-end trong các năm gân đây theo github ranking [9]
Hình 9: Mô hình MVC [7]
Hình 10: Biểu đồ hoạt động cho chức năng Đăng nhập
Hình 11: Các REST API khai báo router đề thực hiện thao tác CRUD
Hình 12: Biểu đồ hoạt động cho chức nang CRUD phim cho admin
Hình 13: Biểu đồ hoạt động cho chức năng đôi thông tin user
Hình 14: Biéu dé hoat déng cho chire nang insert, delete, update, get phim theo vao Favourite List
Hinh 15: Biéu dé hoat động cho chức năng tìm kiếm phim theo tên phim, diễn viên Hình 16: Biêu đồ hoạt động cho chức năng xem phim theo thể loại
Hình 17: Biêu đồ hoạt động cho chức năng đề xuất phim
Hình 18: Biểu đồ hoạt động cho chức năng xem lại phim
Hình 19: Lược đồ cơ sở dữ liệu
Trang 5Hinh 20: Compound index trong MongoDB
Hinh 21: Tao text index trong MongoDB
Hinh 22: Sir dung explain dé phan tich két qua query
Hinh 23: Model schema trong Mongoose
Hinh 24: Su dung cau lénh trong Mongoose
Hình 25: Sử dụng câu lệnh limit để giới hạn kết quả trả về
DANH SACH TU VIET TAT
API: Application Programming Interface - Giao dién lap trinh Wng dụng
BSON: Binary JavaScript Object Notation
DDL: Data Definition Language — Ng6n ngtr dinh nghia dtr ligu
DOM: Document Object Model — M6 hinh déi tong các tài liệu
HTML: Hypertext Markup Language — Ng6n ngit danh dau siéu văn bản
JS: Javascript
JSON: JavaScript Object Notation
JWT: JavaScript Object Notation Web Token
MVC: Model — View — Controller
NoSQL: No Structured Query Language —- Ngôn ngữ truy vẫn phi cau trúc
ODM: Object Data Modeling- Mô hình hướng đối tượng
RDBMS: Relational Database Management System - Hệ quản trị cơ sỡ dữ liệu quan
hệ
REST: Representational state transfer
SQL: Structured Query Language —- Ngôn ngữ truy vấn có cấu trúc
URL: Uniform Resource Locator - Dinh vi thống nhất tải nguyên
XML: Extensible Markup Language — Ngdn ngit danh dau mo réng
Trang 6I GIỚI THIỆU TÓNG QUAN HỆ THÓNG:
1 Lý do chọn đề tài:
Nhằm đáp ứng nhu cầu xem phim của mọi người, phục vụ nhu cầu giải trí, website streaming video online là dịch vụ phát trực tuyến cho phép người dùng xem các chương trình truyền hình vả phim không có quảng cáo trên thiết bị được kết nối internet
2 Yêu cầu của hệ thống:
- Yêu cầu đối với người sử dung:
+ Nhu cầu xem phim của mọi người hiện nay rất lớn trong thời kỳ địch Coviđ-
19 mà không được ra rạp xem phim
+ Có các chức năng đa dạng, có nhiều gói đăng ký cho người dùng chọn + Tốc độ nhanh chóng, độ trễ streaming video thấp, giao diện thân thiện để sử
dụng
- Yêu cầu đối với quản trị viên:
+ Theo dối và cập nhật phim
+ Đảm bảo tính an toàn và bảo mật
3 Kiến trúc tông quan của hệ thống:
Ứng dụng web được xây dựng theo kiến trúc đa tầng (n-tier architecture), trong
đó mỗi tầng thực hiện một số chức năng riêng, cung cấp dịch vụ cho tầng liền trên và
sử dụng địch vụ được cung cấp bởi tầng liền dưới Kiến trúc đa tầng được áp đụng cho ứng dụng web thường bao gồm ba tầng (three-tier): giao diện, máy chủ và cơ sở đữ liệu
Trang 7của Admin
Lọc phim theo thể loại
Xem phim / Xem Trailer
Tạo tài khoản Đăng nhập Trả dữ liêu qua API
MongoDB Atlas
Trang 8Hình 1: Kiến trúc tổng quan hệ thống
- Tầng 1: Tầng giao diện:
Tầng nảy có nhiệm vụ chính giao tiếp với người dùng Nó gồm các thành phần giao diện và thực hiện các công việc như nhập liệu, hiển thị dữ liệu Đối với kiến trúc web, giao điện hay tương tác với người dùng được thông qua gián tiếp trình duyệt web như Chrome, Microsoft Edge, Mozilla Firefox Tầng này quản lý, thực hiện việc hiển thị các thông tin đến người dùng, tương tác với người dùng Người dùng có thê thực hiện các chức năng, yêu cầu đến tầng máy chủ thông qua REST API dé lay thong tin về
phim, thêm phim vào danh sách yêu thích, tìm kiếm phim
- Tang 2: Tang may chu:
Tang may chủ web có nhiệm vụ xử lý các vấn để về logic, thuật toán, xử lý truy vấn, nhận yêu cầu từ tầng giao điện và thao tác trực tiếp với cơ sở đữ liệu đề lấy
dữ liệu trả về cho tầng giao diện Máy chủ web được cài đặt các chương trình dé phuc
vụ ứng dụng web, nắm quyền quản lý, diéu khién luéng dit ligu Day con 1a noi kiém tra các ràng buộc, tính toàn ven và hợp lệ dữ liệu, thực hiện tính toán và xử lý các yêu cầu nghiệp vụ, trước khi trả kết quả về tầng giao diện Web server có thê lấy thông tin request từ phía trình đuyệt web và gửi phản hồi tới tầng giao điện thông qua giao thức HTTP
- Tang 3: Tầng cơ sở dữ liệu:
Tang cơ so dữ liệu có nhiệm vụ lưu trữ và thao tác dữ liệu, nhận yêu cầu thao tác dữ liệu từ tầng máy chủ và trả đữ liệu về cho tầng máy chủ Tùy vảo nghiệp vụ, mả
ta có thể sử dụng cơ sở dữ liệu quan hệ (SQL) hoặc cơ sở dữ liệu phi quan hệ (NoSQL) đề phù hợp với hệ thông Với bải tập này, hệ thống sử dụng cơ sở dữ liệu NoSQL MongoDB với mục đích lưu trữ, quản lý dữ liệu người dùng, phim, diễn viên
và thao tác đữ liệu như tìm kiếm, thêm, sửa xóa phim, người dùng, diễn viên
4 Các công nghệ sử dụng:
a MongoDB:
Trang 9Rank Score
1 1 1 Oracle Relational, Multi-model @ 1270.35 -1.19 -98.42
2 2 2 MySQL & Relational, Multi-model @ 1219.77 +7.24 -36.61
3 3 3 Microsoft SQL Server Relational, Multi-model @@ 970.61 -0.24 -72.51
6 6 @s Redis Key-value, Multi-model @ 171.35 -0.59 +18.07
Hình 2: Bảng xêp hạng các hệ quản trị cơ sở dữ liệu theo độ phô biên theo db-engiges
[8]
- Sơ lược vé MongoDB:
MongoDB là một hệ quản tri co sở dữ liệu có mã nguồn mở, là cơ sở dữ liệu thuộc NoSQL và MongoDB là một cơ sở dữ liệu hướng tai ligu (document oriented), các đữ liệu được lưu trữ trong document kiểu JSON thay vì đạng bảng như cơ sở dữ liệu quan hệ nên truy vẫn sẽ rất nhanh [1] Thay vì lưu trữ đata vào row hoặc column của bảng giống như cơ sở dữ liệu SQL, mỗi một bản ghi (record) trong MongoDB 1a một document được biểu diễn dưới dang BSON, BSON document là các document c6 cau trac JSON nhung khéng ở dang text mà là dạng binary, câu trúc nhị phân của BSON mã hóa thông tin kiêu vả độ dải, cho phép phân tích cú pháp nhanh hơn, tốn it tài nguyên sử đụng hơn so với JSON nhưng sẽ khó để người dùng có thế đọc được, MongoDB lưu trữ data dưới dạng BSON để tối ưu hiệu suất hơn nhưng khi người dùng làm việc voi MongoDB shell (la Javascript interface ding dé thao tac véi MongoDB) hay MongoDB Compass (là GUI mạnh mẽ để tương tác, truy vấn với MongoDB), MongoDB sẽ người dùng sẽ làm việc với JSOÓN vì JSON thân thiện và có thê đọc bởi con IBƯỜI
_1d[a2_\ >E@<@§
saleDate"@uHLitems@Omnameprinter papertags%0officeiOstationaryprice@
<6quantity1rnamenotepadtags96office 1lwriting2schoolprice®
<Oquantity2@namepenstagsBOwriting1o ffice2school3Ostationaryprice@<Oqua ntity3pname
BSON:
Binary JSON backpacktags-Oschoolitravel2kidspri
ce[<0quant1ty4rnamenotepadtags00off iceiwriting2schoolprice7<@quantity5 xname
nvelopestags40 stationaryloffice2generalprice@<Oqu antity6xname
Hình 3: Dữ liệu dạng BSON
Trang 10Với cơ sở dữ liệu quan hệ chúng ta có khái niệm bảng, các cơ sở dữ liệu quan
hé (nhu MySQL hay SQL Server ) sử dụng các bảng đề lưu đữ liệu thì với MongoDB chúng ta sẽ dùng khái niệm Ia collection thay vi bang So voi RDBMS thi trong MongoDB collection tng voi table, con document sẽ tng voi row, MongoDB sé dung cac document thay cho row trong RDBMS [2] Cac collection trong MongoDB dugc cầu trúc rất linh hoạt, cho phép các đữ liệu lưu trữ không cần tuân theo một cấu trúc nhất định
+ MongoDB rất đễ mở rộng (Horizontal Scalability) Trong MongoDB có một khái niệm cluster là cụm các node chứa dữ liệu g1ao tiếp với nhau, khi muốn mở rộng
hệ thống ta chỉ cần thêm mét node véi vao cluster [2]
+ Trường dữ liệu “ 1d” (tương đương với Primmary Key trong RDBMS) luôn được tự động thêm vào mỗi document và luôn được tự động đánh index (chi muc) dé tốc độ truy van 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 (fñnd, 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) Với một lượng
dữ liệu đủ lớn thì thử nghiệm cho thấy tốc độ insert của MongoDB có thê nhanh tới gap 100 lan so voi MySQL
Trang 11Basic Insert (smaller is better)
- Sơ lược về Mongoose:
Mongoose la mét thu vién mé hinh héa déi tugng (Object Data Model - ODM) cho MongoDB Mongoose cho phép người dùng tạo ra một lược đồ giúp biểu diễn các đối tượng trong MongoDB Ngoài việc tạo ra một lược đồ, Mongoose cũng cung cấp nhiều các function, các câu lệnh query giúp làm việc để dàng hơn với MongoDB [4]
Y
0 mongo $A MONGO DRIVER
Hình 5: Mongoose gitip quan lý mối quan hệ giữa dữ liệu, cung cấp sự xác thực và biểu diễn các đối tượng trong MongoDB [II]
Trang 12- Ly do dung MongoDB di kém voi Mongoose [11]:
+ Lược đồ: Một lợi ích to lớn của việc sử dụng cơ sở dữ liệu NoSQL, như MongoDB, là không bị ràng buộc vào một mô hình dữ liệu cứng nhắc Người dùng có thể thêm hoặc xóa các trường, lồng dữ liệu sâu vào nhiều lớp và có một mô hình đữ liệu thực sự linh hoạt đáp ứng nhu cầu Nhưng quá linh hoạt cũng có thể là một điểm trừ Nếu không có sự thống nhất về mô hình dữ liệu sẽ trông như thé nao va moi document trong một collection chứa rất nhiều trường khác nhau, lúc đó sẽ gây khó sử dụng cho người dùng
+ Xác thực: Mongoose đã tích hợp xác thực cho các định nghĩa lược đồ Điều nảy giúp người dùng không phải viết một loạt mã xác thực bằng MongoDB driver Người dùng chỉ cần thêm thuộc tính khi tạo ñeld trong model, ví dụ như muốn | field luôn luôn được tồn tại khi đó cần thêm “requrred: true”, hoặc một field có thể có giá trỊ default nếu như chưa được khai báo, trong định nghĩa lược đồ
1
Lộ
Hình 6: Định nghĩa một lược đồ (model) trong Mongoose
+ Instance method: Mongoose cung cấp các câu lệnh lưu trước và sau tùy chọn cho các mô hình dữ liệu Điều này giúp đễ dảng xác định hook và function tùy chỉnh khi đọc / ghi thành công Người dùng cũng có thể xác định các method tùy chỉnh hoạt động trên một Instance (hoặc document) cu thể Mặc dù có thé dat được chức năng tương tự với trình điều khiến MongoDB driver, Mongoose giúp người dùng dé
Trang 13
dàng xác định và tổ chức các phương thức như vậy hơn trong định nghĩa lược đồ của minh
+ Tra vé két qua: Mongoose gitip cho viée tra lai cac document sau khi duoc cập nhật hoặc kết quả truy vấn đễ dàng hơn Một ví đụ điển hình có thê được tìm thấy với các truy vấn tìm kiếm Trong khi trình MongoDB driver trả về một đối tượng có găn cờ thành công và số lượng đocument được sửa đối, thì Mongoose trả về chính đối tượng đã cập nhật để người đùng cé thé dé đảng làm việc với kết quả, ví dụ như hình Sau khi đã thực hiện câu lệnh tìm kiếm, instance Movie trả về một movie đã tìm kiếm từ điều kiện cho biến movie từ đó server có thê kiếm tra movie có tồn tại hay không, nếu có sẽ trả kết quả dạng JSON thông qua API cho tầng giao diện
Hình 7: Trả về kết quả dạng JSON sau khi query câu lệnh bang Mongoose
bộ, đồng nghĩa với việc DOMI tree cũng sẽ phải thay đổi một phần, điều nảy sẽ ảnh hưởng đến tốc độ xử lý Virtual DOM là một object Javascript, mỗi object chứa đầy
đủ thông tin cần thiết dé tạo ra một DOM,, khi dữ liệu thay đổi nó sẽ tính toán sự thay đổi giữa object va tree thật, điều nảy sẽ giúp tối ưu hoa viée re-render DOM tree that React sử dụng cơ chế one-way data binding - luồng dữ liệu I chiều Dữ liệu được truyền từ parent đến child thông qua props Luồng đữ liệu đơn giản giúp chúng ta dễ dang kiểm soát cũng như sửa lỗi Với các đặc điểm ở trên, React đùng đề xây đựng các ứng dụng lớn mả dữ liệu của chúng thay đối liên tục theo thời gian Dữ liệu thay đổi (ở đây là state) thì hầu hết kèm theo sự thay đổi về giao diện [5] Ví đụ như
Trang 14
Facebook: trên Newsfeed cùng lúc sẽ có các status khác nhau và mỗi status lại có số like, share, comment liên tục thay đổi Khi đó Reaet sẽ rất hữu ích đề sử dụng
——— —-Yx TT”
Hình 8: Thống kê lượt sử dụng framework front-end trong các năm gần đây
theo github ranking [9]
4 Express:
Express la mét framework danh cho Nodejs Nó cung cấp rất nhiều tính năng mạnh mẽ trên nền tảng web cũng như trên các ứng dụng di động Express hỗ trợ các phương thức HTTP và middleware tạo ra API giúp lấy đữ liệu hoặc cập nhật từ cơ sở
dữ liệu Ngoải ra, ứng dụng web sử dụng mô hình MVC để phát triển vả cải đặt mã nguồn Nó đại điện cho các nhả phát triển kiến trúc áp dụng khi xây dựng các ứng dụng Với kiến trúc MVC, chúng ta xem xét cấu trúc ứng đụng liên quan đến cách luỗng đữ liệu của ứng dụng của chúng ta hoạt động như thế nào Mỗi bộ phận thực hiện chức năng nhất định, nhưng chúng có sự thống nhất, liên kết với nhau tạo nên mô hình MVC [6] Mô hình MVC được chia làm 3 lớp xử ly g6m Model — View — Controller:
- Model: là nơi chứa những nghiệp vụ tương tác với dữ liệu hoặc hệ quan tri co
sở dữ liệu, nó sẽ bao gồm các class/function xử lý nhiều nghiệp vụ như kết nối database, truy vấn dữ liệu, thêm — xóa — sửa đữ liệu
- View: là nơi chứa những giao diện như một nút bâm, khung nhập, menu, hình ảnh nó đảm nhiệm nhiệm vụ hiển thị đữ liệu và giúp người dùng tương tác với hệ thống
- Controller: là nơi tiếp nhận những yêu cầu xử lý được gửi từ người đùng, nó
sẽ gồm những class/ function xử lý nhiều nghiệp vụ logic giúp lẫy đúng đữ liệu thông tin cần thiết nhờ các nghiệp vụ lớp Model cung cấp vả hiển thị đữ liệu đó ra cho người dùng nhờ lớp View [7]
Trang 15read/write data
Hình 9: Mô hình MVC [7].
Trang 16H MÔ HÌNH CHỨC NANG THEO HE THONG:
1 Chức năng đăng nhập (đăng ký) thông qua JWT dùng để authentication và authorization: Mỗi khi người dùng đăng nhập, email và password được trả về từ client cho server, server nhận được email và password sẽ tiến hành kiểm tra xem thông tin đăng nhập có phù hợp không Nếu không thì sẽ gửi lại response báo lỗi về cho người dùng, nếu thông tin đăng nhập là phù hợp, server sẽ trả về cho client l access token va | refresh token Access token sé duoc luu 6 localStorage va refresh token 6 cookie Day la 2 token sé duoc su dung dé authorization trong suốt quá trình người dùng muốn truy cập tài nguyên của trang web Đối với access token, ví đụ sau khi đăng nhập xong muốn xem danh sách phim Hành động, thì request của client phải đính kèm access token rồi gửi lên cho server xác thực, nếu server decode access token
và thấy hợp lệ thì sé cho client lay dit liéu Con céng viéc cua refresh token 1a khi nao access token hét han thi refresh token sé duoc gửi đến cho server dé lay access token mới Tránh cho việc người dùng đang sử dụng mà phải đăng nhập lại và sẽ giúp bảo mật hơn khi access token bị lấy cắp
Trang 17Visual Paradigm Online Free Edition
Visual Paradigm Online Free Edition
Hình 10: Biêu đồ hoạt động cho chức năng Đăng nhập
Trang 182 Chức năng insert, update, delete phim cho admin của trang web: tầng giao diện
sẽ giao tiếp với tầng server thông qua REST API để gửi các yêu cầu HTTP đến một URL dé xt lý dữ liệu như POST để insert một hoặc nhiều phim vào cơ sở đữ liệu,
DELETE một hoặc nhiều phim hoặc sửa thông tin của một phim REST hoạt động chủ
yếu dựa vào giao thức HTTP Các hoạt động cơ bản nêu trên sẽ sử đụng những phương thức HTTP riêng Thêm vào đó, mỗi khi admin tải phim lên, hệ thống sẽ sử dụng dịch vụ lưu trữ tài liệu của Firebase Storage nhằm mục đích lưu những phim
Hình 11: Các REST API khai báo router đề thực hiện thao tác CRUD
GET (SELECT): Trả về một Resource hoặc một danh sách Resource
POST (CREATE): Tạo mới một Resouree
PUT (UPDATE): Cap nhat thông tin cho Resource
DELETE (DELETE): X6a m6t Resource
Những phương thức hay hoạt động này thường được gọi là CRUD tương ứng với Create, Read, Ủpdate, Delete — Tạo, Đọc, Sửa, Xóa