CHƯƠNG 1 PHÂN CÔNG CÔNG VIỆC 1.1 Đánh giá chung STT Họ và tên MSSV Tổng số công việc Đánh giá 1 Lê Nguyên Chương 2112945 7 100% 2 Kim Nhật Thành 2112292 7 100% 3 Vũ Xuân Mai Trung 2115129 7 100% 4 Nguyễn Minh Điềm 2111056 7 100% 5 Phạm Châu Thanh Tùng 2115235 7 100% 1.2 Từng giai đoạn 1.1 Giai đoạn 1 Giai đoạn 1 Tìm hiểu công nghệ và lý thuyết Lê Nguyên Kim Nhật Vũ Xuân Nguyễn Minh Phạm Châu Công việc Chương Thành Mai Trung Điềm Thanh Tùng Thiết kế giao diện người dùng 1 1 Thiết kế database và ERD 1 Xây dựng source 1 1 Tìm hiểu công nghệ 1 1 1 1 1 Tổng 2 2 2 2 2 • Mục đích Phân chia công việc, xác định application domain và chọn DBMS để thực hiện ứng dụng • Ngày, giờ họp Chủ Nhật, 01-12-2024 vào lúc 20:00 • Thành viên tham dự – Lê Nguyên Chương – Kim Nhật Thành – Vũ Xuân Mai Trung – Nguyễn Minh Điềm – Phạm Châu Thanh Tùng • Nội dung cuộc họp Bài tập lớn Hệ Quản trị Cơ sở Dữ Liệu (CO3021) - Học kì 241 Trang 6/62 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học & Kỹ Thuật Máy Tính – Phân chia công việc cho mỗi thành viên trong nhóm. Yêu cầu mỗi thành viên chọn 1 trong 6 topic được đưa ra trong yêu cầu đề BTL – Xác định application domain cho hệ thống và công nghệ sử dụng – Chọn giữa SQL và NoSQL để hiện thực ứng dụng, đối với nhóm chọn giữa MySQL và Apache Cassandra • Kết quả – Mỗi thành viên được phân chia topic như sau: ∗ Lê Nguyên Chương: Data storage & management ∗ Kim Nhật Thành: Indexing ∗ Vũ Xuân Mai Trung: Query processing ∗ Nguyễn Minh Điềm: Transaction ∗ Phạm Châu Thanh Tùng: Concurrency control – Application domain của hệ thống: Hệ thống banking – Công nghệ sử dụng ∗ Backend: Node.js, NestJS, Docker, MySQL (Database) ∗ Frontend: Vite, React, TypeScript, shadcn – DBMS được sử dụng để hiện thực ứng dụng: MySQL • Công việc sắp tới – Tìm hiểu lý thuyết về topic đã được phân chia – Xây dựng source cho chương trình 1.2 Giai đoạn 2 Giai đoạn 2 Hiện thực ứng dụng Lê Nguyên Kim Nhật Vũ Xuân Nguyễn Minh Phạm Châu Công việc Chương Thành Mai Trung Điềm Thanh Tùng Hiện thực frontend 1 1 Hiện thực backend 1 1 Hiện thực database 1 Tổng 1 1 1 1 1 1.3 Giai đoạn 3 Giai đoạn 2 Làm báo cáo và thuyết trình Lê Nguyên Kim Nhật Vũ Xuân Nguyễn Minh Phạm Châu Công việc Chương Thành Mai Trung Điềm Thanh Tùng Hoàn chỉnh báo cáo 1 1 1 1 1 Chuẩn bị nội dung thuyết trình 1 1 1 1 1 Hoàn chỉnh slide thuyết trình 1 1 1 Quay video thuyết trình 1 1 1 1 1 Chỉnh sửa và xuất video 1 1 thuyết trình Tổng 4 4 4 4 4 • Mục đích Hoàn chỉnh báo cáo và phân công thuyết trình • Ngày, giờ họp Thứ ba, 17-12-2024 vào lúc 22:00 • Thành viên tham dự Bài tập lớn Hệ Quản trị Cơ sở Dữ Liệu (CO3021) - Học kì 241 Trang 7/62 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học & Kỹ Thuật Máy Tính – Lê Nguyên Chương – Kim Nhật Thành – Vũ Xuân Mai Trung – Nguyễn Minh Điềm – Phạm Châu Thanh Tùng • Nội dung cuộc họp – Hoàn chỉnh báo cáo chung của nhóm – Phân chia công việc cho buổi thuyết trình • Kết quả – Thống nhất ngày giờ báo cáo thuyết trình – Cả nhóm đọc sơ qua bài báo cáo • Công việc sắp tới – Sửa lỗi trong hệ thống – Mỗi thành viên tự hoàn chỉnh phần nội dung của mình trong bài báo cáo – Mỗi thành viên chuẩn bị nội dung và thiết bị để quay video báo cáo thuyết trình – Một thành viên trong nhóm đứng ra tổng hợp các video thuyết trình của nhóm, chỉnh sửa và gộp lại thành một video duy nhất để nộp Bài tập lớn Hệ Quản trị Cơ sở Dữ Liệu (CO3021) - Học kì 241 Trang 8/62 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học & Kỹ Thuật Máy Tính CHƯƠNG 2 GIỚI THIỆU ĐỀ TÀI Trong thời đại công nghệ số hiện nay, dữ liệu đóng vai trò ngày càng quan trọng , được xem là nguồn tài nguyên cốt lõi giúp các tổ chức và doanh nghiệp ra quyết định chính xác, hiệu quả. Việc thu thập, lưu trữ và phân tích dữ liệu giúp xác định xu hướng, cải thiện quy trình hoạt động và tạo ra lợi thế cạnh tranh. Tuy nhiên, để quản lý khối lượng dữ liệu khổng lồ một cách an toàn và hiệu quả, Hệ Quản trị Cơ sở Dữ Liệu trở thành công cụ không thể thiếu.
Hệ Quản trị Cơ sở Dữ Liệu cung cấp nền tảng cho việc tổ chức, lưu trữ và truy xuất dữ liệu một cách có hệ thống, đồng thời đảm bảo tính toàn vẹn, bảo mật và khả năng truy cập dữ liệu nhanh chóng. Với sự hỗ trợ của Hệ Quản trị Cơ sở Dữ Liệu, các doanh nghiệp có thể tối ưu hóa quy trình làm việc, nâng cao chất lượng dịch vụ và đáp ứng tốt hơn nhu cầu của người dùng. Trong các Hệ Quản trị Cơ sở Dữ Liệu hiện nay, có hai loại đang phổ biến hơn cả đó là SQL và NoSQL. Cả hai loại đều có khả năng đáp ứng các nhu cầu khác nhau trong quản lý và xử lý dữ liệu.
Hệ Quản trị Cơ sở Dữ Liệu SQL hoạt động dựa trên mô hình bảng với dữ liệu được tổ chức thành các hàng và cột. Việc tổ chức dữ liệu dữ liệu thành các bảng dữ liệu giúp Hệ Quản trị Cơ sở Dữ Liệu SQL cung cấp khả năng truy vấn mạnh mẽ, đảm bảo tính toàn vẹn và nhất quán của dữ liệu thông qua việc tuân thủ các nguyên tắc ACID. Bên cạnh đó, Hệ Quản trị Cơ sở Dữ Liệu NoSQL được thiết kế để xử lý dữ liệu phi cấu trúc hoặc bán cấu trúc với khả năng mở rộng linh hoạt; nhờ vào lợi thế schema linh hoạt, không cố định, cho phép lưu trữ dữ liệu dưới nhiều dạng như document-based (ví dụ: MongoDB), key-value (ví dụ: Redis), column-family (ví dụ: Cassandra) và graph-based (ví dụ: Neo4j). Tùy vào tính chất của dữ liệu và nhu cầu cụ thể của dự án, việc lựa chọn giữa SQL và NoSQL sẽ giúp tối ưu hóa hiệu quả quản lý và khai thác dữ liệu.
Để có thể làm rõ hơn điều này, Bài tập lớn của nhóm chúng em sẽ đi vào phân tích cụ thể về các khía cạnh của Hệ Quản trị Cơ sở Dữ Liệu SQL và NoSQL thông qua 2 Hệ Quản trị Cơ sở Dữ Liệu cụ thể, đó là MySQL cho Hệ Quản trị Cơ sở Dữ Liệu SQL và Cassandra cho Hệ Quản trị Cơ sở Dữ Liệu NoSQL. Ngoài ra, Bài tập lớn cũng sẽ dựa trên những phân tích lý thuyết ở trên để sử dụng một Hệ Quản trị Cơ sở Dữ Liệu để phát triển cho một ứng dụng cụ thể - Ứng dụng Ngân hàng. Bài tập lớn Hệ Quản trị Cơ sở Dữ Liệu (CO3021) - Học kì 241 Trang 9/62 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học & Kỹ Thuật Máy Tính CHƯƠNG 3 TỔNG QUAN VỀ HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU MYSQL VÀ CASSANDRA Chương này sẽ giới thiệu tổng quan về MySQL và Cassandra. Thông tin của chương này được tham khảo từ [2] và [3] 3.1 Hệ Quản trị Cơ sở Dữ Liệu MySQL 3.1 Tổng quan về MySQL MySQL là một hệ quản trị cơ sở dữ liệu SQL mã nguồn mở phổ biến nhất, được phát triển, phân phối và hỗ trợ bởi Oracle Corporation.
MySQL có các đặc điểm sau: • Là một Hệ Quản trị Cơ sở Dữ Liệu: Là nơi lưu trữ, tập hợp dữ liệu có cấu trúc, có thể đơn giản như danh sách mua sắm hoặc phức tạp như dữ liệu lớn trong mạng lưới doanh nghiệp. • Cơ sở dữ liệu trong MySQL là Cơ sở dữ liệu quan hệ: MySQL lưu trữ dữ liệu dưới dạng các bảng riêng biệt và tổ chức cấu trúc nhằm tối ưu tốc độ. MySQL sử dụng SQL (Structured Query Language), ngôn ngữ chuẩn hóa để truy cập và quản lý cơ sở dữ liệu. • Là phần mềm mã nguồn mở: Bất kỳ người dùng nào cũng đều có thể tải xuống, sử dụng và chỉnh sửa phần mềm mà không cần phải trả bất kỳ chi phí nào.
Ngoài ra, MySQL có khá nhiều kiểu Storage Engine khác nhau do kiến trúc mà MySQL sử dụng là "Pluggable Storage Engine". Trong phạm vi Bài tập lớn, ta chỉ đề cập và sử dụng loại Storage Engine mặc định của MySQL là InnoDB.2 Tổng quan về Storage Engine: InnoDB InnoDB là động cơ lưu trữ mặc định trong MySQL 8.4, hỗ trợ tính toàn vẹn giao dịch (ACID), bảo vệ dữ liệu người dùng qua commit, rollback, and crash-recovery sau sự cố. Nó sử dụng khóa cấp dòng và các chỉ mục phân cụm để cải thiện hiệu suất và khả năng xử lý. Đồng thời, InnoDB cũng hỗ trợ các ràng buộc FOREIGN KEY để bảo vệ tính toàn vẹn dữ liệu.
Bài tập lớn Hệ Quản trị Cơ sở Dữ Liệu (CO3021) - Học kì 241 Trang 10/62 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học & Kỹ Thuật Máy Tính Lược đồ sau biểu thị kiến trúc của InnoDB Storage Engine.1: Lược đồ kiến trúc của InnoDB 3.2 Hệ Quản trị Cơ sở Dữ Liệu Cassandra Apache Cassandra là một cơ sở dữ liệu NoSQL phân tán mã nguồn mở sử dụng mô hình lưu trữ dạng cột. Cassandra ban đầu được thiết kế tại Facebook sử dụng kiến trúc Staged Event-Driven (SEDA) để triển khai sự kết hợp giữa kỹ thuật lưu trữ và sao chép phân tán Dynamo của Amazon và mô hình dữ liệu và động cơ lưu trữ Bigtable của Google. Dynamo và Bigtable đều được phát triển để đáp ứng các yêu cầu mới nổi về hệ thống lưu trữ có thể mở rộng, đáng tin cậy và sẵn sàng cao, nhưng mỗi hệ thống đều có những hạn chế khác nhau. Cassandra được thiết kế như một sự kết hợp của cả hai hệ thống để đáp ứng các yêu cầu lưu trữ quy mô lớn, cả về kích thước dữ liệu và khối lượng truy vấn.
Khi các ứng dụng bắt đầu có nhu cầu về sao chép dữ liệu đầy đủ, kèm theo đó là khả năng đọc và ghi với độ trễ thấp, việc thiết kế một mô hình cơ sở dữ liệu mới trở nên cấp thiết vì các hệ thống cơ sở dữ liệu quan hệ thời đó gặp khó khăn trong việc đáp ứng các yêu cầu mới của các ứng dụng quy mô toàn cầu.