1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo cuối kỳ môn học hệ quản trị cơ sở dữ liệu công nghệ thông tin

36 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết Kế Hệ Thống Website Streaming Video Online
Tác giả Nguyễn Đào Quang Tuấn, Nguyễn Quyết Thắng
Người hướng dẫn TS. Nguyễn Thị Hậu
Trường học Trường Đại học Công nghệ
Chuyên ngành Hệ Quản Trị Cơ Sở Dữ Liệu
Thể loại Báo Cáo Cuối Kỳ Môn Học
Năm xuất bản 2021
Thành phố Hà Nội
Định dạng
Số trang 36
Dung lượng 4,35 MB

Nội dung

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 3

MỤ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 4

DANH 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 5

Hinh 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 6

I 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 7

củ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 8

Hì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 9

Rank 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 10

Vớ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 11

Basic 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 15

read/write data

Hình 9: Mô hình MVC [7].

Trang 16

H 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 17

Visual 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 18

2 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

Ngày đăng: 26/09/2024, 17:27