Báo cáo bài tập lớn Phát triển phần mềm hướng dịch vụ . SQL LAB

15 3 1
Tài liệu đã được kiểm tra trùng lặp
Báo cáo bài tập lớn Phát triển phần mềm hướng dịch vụ . SQL LAB

Đ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

Phát triển phần mềm hướng dịch vụ . SQL LAB Học viện công nghệ bưu chính viễn thông ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA CÔNG NGHỆ THÔNG TIN 1

BÁO CÁO BÀI TẬP LỚNĐỀ TÀI: SQL LAB

Học phần: Phát triển phần mềm hướng dịch vụ Nhóm học phần: 04

Nhóm bài tập lớn: 18

Thực hiện: 1 Bùi Hoàng Vinh – B20DCCN736 2 Phạm Văn Tới – B20DCCN606 3 Nguyễn Hữu Tuấn – B20DCCN616

Trang 2

1 Với bài tập bao gồm các câu lệnh truy vấn dữ liệu 3

2 Với bài tập bao gồm các lệnh ghi dữ liệu và thay đổi cấu trúc của dữ liệu 4

V TRIỂN KHAI HỆ THỐNG 4

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

2 Tự động triển khai bằng CICD Pipline 5

VI KẾT QUẢ TRIỂN KHAI 5

VII PHƯƠNG HƯỚNG PHÁT TRIỂN 14

Trang 3

I GIỚI THIỆU

Ngày nay, công nghệ thông tin được xem là lĩnh vực đầu thể hiện mức độ phát triển của một quốc gia Cùng với sự phát triển của ngành công nghệ thông tin, Database (cơ sở dữ liệu) đóng một vai trò vô cùng quan trọng và là thành phần không thể thiếu trong hầu hết ứng dụng công nghệ hiện nay Chúng không chỉ đơn thuần là nơi lưu trữ dữ liệu cho các ứng dụng như: Web, AI, Mobile, IOT, … mà còn là hệ thống quản lý thông tin và hỗ trợ quyết định kinh doanh Từ việc lưu trữ thông tin về khách hàng, sản phẩm, đến việc phân tích xu hướng và dự đoán, database đóng vai trò không thể phủ nhận trong việc cung cấp thông tin chính xác, quan trọng cho các cá nhân, tổ chức và doanh nghiệp cũng như lưu trữ và quản lý những thông tin này

Vì vậy, việc nắm bắt được các kiến thức nền tảng của Database hiện nay đang là điều trở nên vô cùng quan trọng cho những người muốn theo đuổi công nghệ, đặc biệt là cá nhân có định hướng phát triển liên quan đến công nghệ thông tin Do đó, SQL Lab sinh ra nhằm để hỗ trợ những cá nhân đặc biệt là các bạn sinh viên có nhu cầu học tập, phát triển kiến thức chuyên môn và niềm đam mê với cơ sở dữ liệu có thể tìm hiểu, thực hành trực tuyến thông qua các bài tập liên quan đến các câu lệnh truy vấn đến Database từ cơ bản cho đến nâng cao

Hiện nay, trên thế giới có rất nhiều trang web giúp chúng ta có thể luyện tập các câu lệnh về cơ sở dữ liệu (đa số về SQL) trực tuyến, nổi bật nhất như là: SQL Zoo, LeetCode, HackerRank, CodeCademy

Các trang web trực tuyến đó đều có những bài tập đa dạng từ cơ bản đến nâng cao đi hết đa số các kiến thức, câu lệnh truy vấn thao tác với Database và có môi trường runtime giúp người dùng có thể chạy và chấm điểm các câu lệnh trên trang web

Chi tiết hơn, HackerRank đem đến người dùng một loạt bài luyện tập trực tuyến từ những bài toán đơn giản đến phức tạp đi qua hầu hết các kiến thức về câu lệnh truy vấn đến Database với SQL như: SELECT, SELECT DISTINCT, JOIN, WHERE Condition, GROUP, HAVING, ORDER, AGGEGATION, LIKE, IN, … Đa phần các bài toán hiện tại mang ý nghĩa đọc dữ liệu (SELECT) và không làm thay đổi dữ liệu, trạng thái của Database

Ngoài các bài tập liên quan đến câu lệnh truy vấn dữ liệu, các trang web lớn khác như SQL Zoo và LeetCode còn có thêm những bài tập liên quan đến việc thay đổi dữ liệu và cấu trúc dữ liệu như: CREATE, INSERT, UPDATE, DELETE, ALTER, … Tuy những bài tập liên quan đến câu lệnh này có độ khó thấp hơn và thường không có nhiều các bài toán phức tạp như các câu lệnh SELECT, nhưng đây cũng là những kiến thức cơ bản, vô

Trang 4

III MỤC TIÊU

- Mục tiêu tối thiểu:

+ Xây dựng được trang web với mô hình kiến trúc hướng dịch vụ

- Mục tiêu mong muốn thực hiện thêm: Xây dựng và hoàn thiện được giải pháp cho các câu lệnh ghi dữ liệu

Để triển khai được ứng dụng SQL Lab đưa đến người dùng cuối, nhóm em đưa ra giải pháp sau Đầu tiên, việc triển khai một trang web hay một ứng dụng là điều tất yếu Trang web hoặc ứng dụng sẽ được triển khai dựa trên mô hình kiến trúc hướng dịch vụ, tách riêng ra: web front-end, server và database Các thành phần trong hệ thống giao tiếp với nhau thông qua các API

Về giải pháp đưa đến môi trường runtime và các bài tập giúp người dùng có thể luyện tập, thực hành, chấm điểm trực tiếp trên trang web được chia ra làm 2 trường hợp

1 Với bài tập bao gồm các câu lệnh truy vấn dữ liệu

Bài tập sẽ liên quan đến các kiến thức về các câu lệnh như: SELECT, SELECT DISTINCT, JOIN, WHERE Condition, GROUP, HAVING, ORDER, AGGEGATION, LIKE, IN, …

dựng các bài tập trên trang web

hệ, dữ liệu để người dùng có thể truy vấn Dữ liệu này sẽ được WRITE LOCK để nhằm tránh các thay đổi.

server sẽ dùng user này để đọc dữ liệu từ Database.

trên câu lệnh người dùng nhập Sau đó, kết quả sẽ lần lượt được so sánh với nội dung test case đã tạo.

Ngược lại thì không.

câu lệnh người dùng đã tối ưu hay chưa dựa trên thời gian truy vấn của câu lệnh.

Trang 5

2 Với bài tập bao gồm các lệnh ghi dữ liệu và thay đổi cấu trúc của dữ liệu

Bài tập sẽ liên quan đến các kiến thức về các câu lệnh như: CREATE, INSERT, UPDATE, DELETE, ALTER, … Với trường hợp này, giải pháp sẽ phức tạp hơn so với các bài tập ở trên Tương tự ở những bước đầu ở giải pháp trên, ta cũng cần:

CREATE, INSERT, UPDATE, DELETE, ALTER, …

thông qua các bảng tạm (lưu trữ trong Disk hoặc Memory?)

check lại bằng các câu lệnh khác như: SHOW COLUMN (trả về cấu trúc TABLE), SELECT, … để so sánh với các testcase

Trang 6

- Database quản lý, lưu trữ các thông tin về người dùng, bài tập, bài test, được triển khai dưới dạng multi instance theo mô hình sao chép dữ liệu Master-Slave replication nhằm để dự phòng, chia tải khi cần thiết hoặc khi có sự cố xảy ra

quản trị CSDL

động và tải của VM

2 Tự động triển khai bằng CICD Pipline

- Mô tả: Triển khai tính năng tự động tích hợp, tự động triển khai cho Service chấm bài cho MySQL.

- Công nghệ sử dụng: Jenkins, Github, Ansible

- Luồng hoạt động:

repository trên Github

động triển khai code mới lên Virtual Machine được chỉ định

từ Github Repository

Hệ thống được triển khai trên 5 Virtual Machine bao gồm các Container, cụ thể:

Trang 7

- VM3: Web Server 1, Web Server 2, Master Database, Slave Database, Node Exporter, Cadvisor

Hệ thống cảnh báo giám sát

Các exporter trên các VM export ra các thông số giám sát:

Trang 8

Prometheus tập trung collect các thông số giám sát từ các Exporter trên VM:

Grafana visualize các thông số đó dưới dạng đồ thị:

Trang 9

- Cadvisor giám sát các Container được cài trên VM

Grafana gửi cảnh báo đến Operator khi hệ thống gặp cao tải (Sau khi thử nghiệm stress test lên Database)

Luồng CICD tự động tích hợp, tự động triển khai source code mới lên hệ thống

Luồng CICD cho Server chấm bài MySQL

Trang 10

Khi có một tag mới đẩy lên Github:

Jenkins nhận được event và khởi động Pipeline:

Trang 11

Docker image với tag mới được đẩy lên Dockerhub:

Ansible triển khai hệ thống trên VM được chỉ định:

Service chấm cho MySQL được triển khai trên VM được chỉ định:

Trang 12

Hình ảnh kết quả trên giao diện người dùng

- Đối với User là quyền student + Tham gia contest trên hệ thống

Trang 13

+ Submit lời giải issue với MySQL và SQL Server

- Đối với User quyền Admin

+ Quản lý contest

Trang 14

+ Thêm issue vào contest

Trang 15

VII PHƯƠNG HƯỚNG PHÁT TRIỂN

Bên cạnh việc đáp ứng được những yêu cầu tối thiếu đối với một hệ thống SQL lab, trong tương lai, nhóm sẽ nghiên cứu và phát triển thêm những tính năng mới bổ sung để hoàn thiện hệ thống này Các phương hướng sẽ phát triển trong tương lai bao gồm:

thường như: Gửi request liên tục trong một thời gian ngắn,

người dùng

-

Ngày đăng: 17/05/2024, 19:43

Tài liệu cùng người dùng

Tài liệu liên quan