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

Báo Cáo Cuối Kỳ Ứng Dụng Website Bán Giày.pdf

16 1 0
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 đề Ứng dụng website bán giày
Tác giả Hoàng Trung Kiên, Nguyễn Huy Hoàng, Phạm Nhật Duy, Tạ Đức Hoàng
Người hướng dẫn Lê Hoàng Quỳnh
Trường học Đại học Quốc gia Hà Nội, Trường Đại học Công nghệ
Chuyên ngành Quản trị Cơ sở Dữ liệu
Thể loại Báo cáo cuối kỳ
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 16
Dung lượng 364,93 KB

Nội dung

Hệ thống Web Client-Server được xây dựng dựa trên mô hình kiến trúc ba lớp, bao gồm client giao diện người dùng, serverNodejs và express.js và hệ quản trị cơ sở dữ liệu MySQL và Elastics

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

INT3202 2

BÁO CÁO CUỐI KỲ Ứng dụng website bán giày

Nhóm: ScyllaDB

20020428 - Hoàng Trung Kiên

20020052 - Nguyễn Huy Hoàng

20020042 - Phạm Nhật Duy

20020412 - Tạ Đức Hoàng Giảng viên: Lê Hoàng Quỳnh

Trang 2

MỤC LỤC

1 Tổng quan về hệ thống 3

1.1 Giới thiệu 3

1.2 Công nghệ sử dụng 3

1.3 Kiến trúc hệ thống 4

2 Cài đặt 5

2.1 Nodejs và các thư viện liên quan 5

2.2 Hệ quản trị cơ sở dữ liệu MySQL 7

2.3 Cài đặt Elasticsearch và logstash 8

3 Thiết kế cơ sở dữ liệu 11

3.1 Lược đồ cơ sở dữ liệu 11

3.2 Các kĩ thuật quản lý và xử lý dữ liệu 11

● Sao lưu và phục hồi 11

● Replication 12

● Bảo mật 14

● Logging 15

● Transaction và Locking 16

3.3 Tối ưu hoá truy vấn 16

● Index 16

● Elasticsearch 16

4 Đánh giá 16

5 Kết luận 16

6 Nguồn 16

Trang 3

1.Tổng quan về hệ thống

1.1 Giới thiệu

Website bán giày và phụ kiện thể thao là một trang thương mại điện tử cung cấp các sản phẩm liên quan đến thể thao như giày, phụ kiện, dụng cụ thể thao v.v Trang web này thường cung cấp các sản phẩm từ những thương hiệu nổi tiếng trong lĩnh vực thể thao như Nike, Adidas, Puma v.v

Website bán giày bóng đá thường sẽ có giao diện trực quan, dễ sử dụng và

có nhiều thông tin về các sản phẩm giày bóng đá Ở trang chủ, người dùng

có thể tìm kiếm sản phẩm theo các tiêu chí như thương hiệu, giá cả, kích cỡ hoặc màu sắc Ngoài ra, trang chủ cũng có thể hiển thị các sản phẩm mới nhất, sản phẩm bán chạy nhất hoặc các ưu đãi đặc biệt

Khi người dùng chọn một sản phẩm, trang thông tin sản phẩm sẽ hiển thị các thông tin chi tiết về sản phẩm đó, bao gồm mô tả sản phẩm, hình ảnh chi tiết, kích cỡ, thông tin về chất liệu và giá cả Người dùng cũng có thể đánh giá sản phẩm và xem các đánh giá của người dùng khác

Trang web bán giày bóng đá cũng cung cấp các dịch vụ hỗ trợ người dùng như chính sách đổi trả, hướng dẫn sử dụng sản phẩm và cách chăm sóc giày Ngoài ra, trang web cũng có thể cung cấp thông tin về các sự kiện và tin tức liên quan đến giày bóng đá

Cuối cùng, để đặt mua sản phẩm, người dùng cần đăng ký tài khoản và thực hiện thanh toán trực tuyến hoặc thanh toán khi nhận hàng Trang web bán giày bóng đá thường có các hình thức thanh toán đa dạng để thuận tiện cho người dùng

Trang 4

1.2 Công nghệ sử dụng

- Node.js:

- Là môi trường chạy Javascript Node.js cho phép chạy mã JavaScript trên máy chủ, thay vì chỉ chạy trên trình duyệt web

- Elasticsearch:

Apache Lucene Nó cung cấp một bộ máy tìm kiếm dạng phân tán, có đầy đủ công cụ với một giao diện web HTTP

có hỗ trợ dữ liệu JSON Elasticsearch được phát triển bằng Java và được phát hành dạng nguồn mở theo giấy phép Apache

- MySQL:

- MySQL là 1 hệ thống quản trị về cơ sở dữ liệu với mã nguồn mở (được gọi tắt là RDBMS) và đang hoạt động theo

mô hình dạng client-server Đối với RDBMS – Relational Database Management System thì MySQL đã được tích hợp apache và PHP

1.3 Kiến trúc hệ thống

Trang 5

Hệ thống Web Client-Server được xây dựng dựa trên mô hình kiến trúc ba lớp, bao gồm client (giao diện người dùng), server(Nodejs và express.js) và hệ quản trị cơ sở dữ liệu (MySQL và Elasticsearch).Ở đây ta sử dụng Logstash để đồng bộ dữ liệu từ MySQL và

elasticsearch

- MySQL lưu trữ các dữ liệu liên quan đến thông tin người dùng , thông tin về sản phẩm, địa chỉ của hình ảnh lưu trên server

- Elasticsearch được tạo một node lưu trữ dữ liệu về thông tin sản phẩm như tên sản phẩm , mã sản phẩm , thông tin giới thiệu về sản phẩm , nhằm tối ưu hóa thanh công cụ tìm kiếm với hệ quản trị này

Việc sử dụng những công nghệ và kiến trúc này ,hướng đến một ứng dụng monolothic có khả năng phát triển nhanh , cung cấp hiệu suất tốt với website có lượt truy cập tương đối (không quá lớn) MySQL và elasticsearch cung cấp khả năng lưu trữ và tìm kiểm ổn định với hệ thống vừa và nhỏ

2 Cài đặt

2.1 Nodejs và các thư viện liên quan

- Ở đây ta sử dụng nvm (node version manager ) để quản lý các phiên bản nodejs được tải suống

- Việc cài đặt nvm được tiến hành theo các bước sau trên hệ điều hành Windows 11:

+ Lên trang xuất bản của dự án mã nguồn mở Releases · coreybutler/nvm-windows (github.com)

Trang 6

+ Ở dự án này phiên bản của nodejs là 18.10 nên ta dùng hai lệnh liên tiếp để tải xuống và sử dụng nodejs phiên bản 18.10 là “nvm install 18.10” và “nvm use 18.10”

- Cài đặt các thư viện liên quan:

+ Các framework và thư viện liên quan đã được định nghĩa từ trước bằng lệnh “npm install”

Trang 7

2.2 Hệ quản trị cơ sở dữ liệu MySQL

Cài đặt hệ quản trị cơ sở dữ liệu MySQL trên hệ điều hành windows

11 bằng cách sử dụng câu lệnh sau trong window powershell ( với quyền quản trị viên) :

Khi cài đặt xong hệ quản trị mysql , ta tạo một file conection.js kết nối

hệ MySql với dự án này bằng cách sử dụng Sequelize ( là một Object-relational mapping giúp ta tương tác với Mysql hay các cơ sở

dữ liệu quan hệ với các ứng dụng nodejs chở nên dễ dàng và bảo mật hơn so với query truyền thống)

Trang 8

2.3 Cài đặt Elasticsearch và logstash

Dự án sử dụng phiên bản mới nhất của elasticsearch là v8.7.0 , cách cài đặt elasticsearch như sau :

Tải suống file nén cài đặt elasticsearch từ trang : Download Elasticsearch | Elastic

Trang 9

Sau khi tải xuống , giải nén file và chạy tập lệnh thực thi

elasticsearch.bat từ terminal:

Kết nối dự án với elasticsearch bằng :

Sử dụng logstash dùng để đồng bộ dữ liệu Mysql và elasticsearch (nguồn :How to keep Elasticsearch synced with a RDBMS using Logstash and JDBC | Elastic Blog ) , ở dự án này logstash phiên bản 8.7.0 được sử dụng

Việc cài đặt logstash cơ bản giống elasticsearch : ta tải xuống file nén cài đặt logstash từ trang : Download Logstash Free | Get Started Now | Elastic Giải nén chúng

Việc dữ liệu từ Mysql và logstash kết nối được với nhau ta cần phải tải một connector java của mysql , dự án sử dụng “mysql-connector-j-8.0.32.jar”

Tạo file cấu hình của logstash là “jdbc.conf” như sau :

Trang 10

Mở window terminal trong folder logstash và chạy lệnh sau :

Kiểm tra index products đã được tạo trong elasticsearch chưa bằng câu lệnh :

curl -XGET "http://localhost:9200/_cat/indices" -H

"kbn-xsrf: reporting"

Như vậy đã xong phần cài đặt các thành phần cần thiết của dự án

Trang 11

3 Thiết kế cơ sở dữ liệu

3.1 Lược đồ cơ sở dữ liệu

3.2 Các kĩ thuật quản lý và xử lý dữ liệu

● Sao lưu và phục hồi

Các chiến lược được hệ thống sử dụng để sao lưu dữ liệu phục hồi cơ

sở dữ liệu bao gồm :

- Sử dụng mysqldump cho mục định sao lưu dữ liệu , chiến lược sao lưu là sao lưu theo ngày file thực thi của window và task Sceduler

+ Việc sử dụng mysqldump đem đến cho ta cách sao lưu dữ liệu một cách đơn giản dề dàng , nhưng nó

Trang 12

cũng đem đến nhược điểm khi dữ liệu trong cơ sở

dữ liệu quá lớn , mysqldump sẽ chạy với thời gian tương đối và quá trình phục hồi dữ liệu của mysql

từ file sql chứa dữ liệu với cơ sở dữ liệu lớn tốn tương đối lớn thời gian

● Replication

Sử replication trên mysql bằng cách sử dụng mysql slave trong hệ thống , nhằm tạo ra một bản sao của master chạy trên một máy tính khác.Các truy vấn viết (wirte ) phải thực hiện qua master , các truy vấn đọc (read ) có thể thực hiện trên cả master và slave

Việc sử dụng salve đem đến các lợi ích:

Trang 13

+ •Tính sẵn sàng (availablity): Các bản sao

có thể sử dụng như "hot" backup, nếu CSDL chủ không sẵn sàng, các bản sao

có thể đảm nhiệm như là bên chủ cho đến khi lỗi được xử lý

+ •Sao lưu: Replicas có thể sử như bản sao lưu, có thể được sư dụng để thực hiện các sao lưu dài mà không cần khóa bản chính (master)

+ •Cân bằng tải (Load Balancing): Các truy vấn đọc có thể phân tán tới các bản sao khác nhau

+ •Tăng thời gian đáp ứng: Các bản sao có thể ở gần người dùng, dẫn đến tăng thời gian đáp ứng

- Nhược điểm của replication :

+ Không có đảm bảo ràng dữ liệu trên master và các slave nhất quán tại một thời điểm ( Nguồn từ slide bài học của cô

lê hoàng quỳnh nhé ae) Các file cấu hình của replication của dự án , nhóm demo slave và master trên cùng một máy

File my.ini của slave và master như sau :

File my.ini của slave:

File my.ini của master:

Trang 14

● Bảo mật

MySQL có hai bước quan lý truy cập là Authentication (định danh) và Authorization (định quyền)

Bảng mysql.user chứa các tài khoản người sử dụng và các quyền truy cập vào database mysql

Tại dự án này ta sử dụng các thuật toán nhằm mã hóa mật khẩu của người dùng trước khi lưu vào database , sử dụng thuật toán bcrypt (bcrypt là một hàm băm mật khẩu được thiết kế bởi Niels Provos và David Mazières, dựa trên mật mã Blowfish và được trình bày tại USENIX vào năm 1991 wikipidea)

● Logging

Chức năng logging trong hệ thống web bán đồ thể thao giúp cải thiện khả năng quản lý, xác định và xử lý các vấn đề, đồng thời cung cấp khả năng khôi phục thông qua các file log

Trang 15

Ở đây ta có thể thấy các file log nhị phân được mysql tạo ra chúng lưu lại tất

cả các thay đổi dữ liệu sảy ra trong mysql ( nguồn slide của cô quỳnh )

Hệ thống này cũng cung cấp general log của mysql

Bật general log trong mysql :

Và cấu hình trong file my.ini :

General log lưu lại là một bản ghi chung về những gì mysqld đã làmlàm.MySql lưu lại các truy vấn đã được sử dụng đến nó.General log mang đến khả năng giúp các người phát triển biết chính xác những thứ gì đã sảy ra và có cách sử lý phù hợp Lưu trữ file general log của mysql :

Bên cạnh những lợi ích của việc lưu log lại của cơ sở dữ liệu , việc lưu lại các file log này gây ảnh hưởng đến hiệu suất của MySQL (Nguồn : Impact of General Query Log on MySQL Performance | FromDual MySQL :: MySQL 8.0 Hướng , dẫn tham khảo :: 5.4.4 Nhật ký nhị phân )

● Transaction và Locking

Đảm bảo tính toàn vẹn dữ liệu, giúp tránh các vấn đề như duplicate record, lost update hay concurrency issues

Trang 16

Ở đây việc sử dụng transaction với việc tạo các order , để đảm bảo việc order của khách hàng với ứng dụng nếu bị lỗi với cơ sở dữ liệu có thể rollback lại , đảm bảo quyền lợi của phía khách hàng

3.3 Tối ưu hoá truy vấn

● Index

● Elasticsearch

Về mặt thiết kế: Ứng dụng có các giao diện chính:

Trang chủ: những mẫu giày nổi bật sẽ được hiển thị lên đầu

Trang chi tiết:

Thông tin của một mẫu giày Ở cuối có thêm các thông tin riêng của mẫu giày, có ghi những đánh giá của khách hàng

Trang cài đặt tính năng toàn hệ thống: Người dùng có thể xác thực tài khoản, thay đổi thông tin, mật khẩu

Các công nghệ sử dụng:

Giao diện người dùng (Frontend): Nodejs

Server (Backend): JavaScript

Database: MySQL

Ngày đăng: 04/05/2024, 12:47

w