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 2MỤ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 31.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 41.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 5Hệ 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 72.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 82.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 9Sau 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 10Mở 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 113 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 12cũ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