Bối cảnh và vấn đề nghiên cứu
Trong quá trình vận hành các chuỗi cửa hàng bán lẻ nói chung và chuỗi kinh doanh hải sản nói riêng, việc lưu trữ và xử trị khối lượng dữ liệu phát sinh hàng ngày đặt ra nhiều thách thức đối với hệ thống quản lý. Các dữ liệu liên quan đến nhân sự, kho bãi, hàng hóa vật tư, hóa đơn xuất nhập và khách hàng nếu chỉ quản lý qua phương thức ghi chép sổ sách truyền thống sẽ gây khó khăn cho việc tra cứu, đối soát tồn kho, từ đó ảnh hưởng trực tiếp đến các quyết định xuất nhập hàng và nguồn lực tài chính của doanh nghiệp.
Khi quy mô kinh doanh mở rộng với nhiều chi nhánh phân bổ tại các tỉnh thành, mô hình cơ sở dữ liệu tập trung (Centralized Database) đặt tại một máy chủ duy nhất bộc lộ các hạn chế:
- Các chi nhánh khi cần truy xuất thông tin phải liên tục gửi yêu cầu về máy chủ trung tâm và chờ đợi phản hồi, gây nghẽn đường truyền và kéo dài thời gian xử lý.
- Khi lượng dữ liệu cập nhật từ nhiều nơi đổ về đồng thời với số lượng lớn, máy chủ trung tâm dễ bị quá tải, gia tăng độ trễ và tiềm ẩn nguy cơ mất mát thông tin.
- Mỗi chi nhánh trên thực tế có nhu cầu quản lý cục bộ các luồng dữ liệu riêng biệt. Việc phân tán dữ liệu giúp giảm tải cho trung tâm, tăng tính độc lập và nâng cao hiệu quả vận hành tại từng điểm kinh doanh.
Nhằm giải quyết bài toán trên, đồ án nghiên cứu và triển khai đề tài: "Xây dựng hệ thống cơ sở dữ liệu phân tán để quản lý công ty hải sản" (Building a Distributed Database System to Manage Seafood Company).
Hệ thống xác định 6 nhóm chức năng quản lý chính:
- Quản lý dữ liệu vật tư, mặt hàng hải sản (
Data management of materials).
- Quản lý thông tin hệ thống kho bãi (
Manage warehouse information).
- Quản lý thông tin nhân sự, nhân viên (
Manage employee information).
- Quản lý thông tin nhập - xuất kho và hóa đơn (
Manage warehouse import and export information).
- Quản lý thông tin khách hàng (
Manage customer information).
- Quản lý thông tin đối tác, nhà cung cấp (
Provider information management).
Đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Mô hình cơ sở dữ liệu phân tán cho chuỗi công ty hải sản (CSDL
CHHS), các kỹ thuật phân mảnh dữ liệu, kỹ thuật nhân bản (Replication), kiểm soát giao dịch đồng thời (Concurrency Control) và cơ chế phục hồi lỗi (Failure/Recovery).
- Phạm vi không gian: Mô hình phân tán gồm 1 trụ sở chính tại Hà Nội (Server trung tâm -
HNSERVER), 1 trạm phụ tại Hà Nội (HN2SERVER) và 2 chi nhánh tại Thái Bình (Trạm 1 - TB1SERVER) và Nam Định (Trạm 2 - ND1SERVER/ND2SERVER).
- Phạm vi triển khai: Đồ án môn học "Hệ cơ sở dữ liệu phân tán" do nhóm sinh viên Khoa Công nghệ Thông tin, Học viện Công nghệ Bưu chính Viễn thông (PTIT) thực hiện năm 2021.
Cơ sở lý thuyết và phương pháp
Khung lý thuyết và mô hình kỹ thuật
Nghiên cứu áp dụng các nền tảng lý thuyết chuyên sâu của hệ quản trị cơ sở dữ liệu phân tán:
- Lý thuyết phân mảnh cơ sở dữ liệu (Database Fragmentation): Bao gồm phân mảnh ngang nguyên thủy (Primitive Horizontal Fragmentation), phân mảnh ngang dẫn xuất (Derived Horizontal Fragmentation), phân mảnh dọc (Vertical Fragmentation) và ánh xạ lược đồ (Mapping Schema) để phân chia quan hệ toàn cục thành các mảnh cục bộ độc lập.
- Giao thức chuẩn chi phân tán (Distributed Commit Protocols):
- Giao thức chuẩn chi một pha (One-Phase Commit - 1PC).
- Giao thức chuẩn chi hai pha (Two-Phase Commit - 2PC) phối hợp cùng dịch vụ điều phối giao dịch phân tán Microsoft Distributed Transaction Coordinator (MS DTC) và Transaction Log để đảm bảo tính toàn vẹn (ACID).
- Kiểm soát đồng thời và các mức cô lập giao dịch (Concurrency Control & Transaction Isolation Levels):
- Xử lý các hiện tượng bất nhất dữ liệu: Đọc dữ liệu rác (Dirty Reads), Mất mát cập nhật (Lost Updates), Đọc không lặp lại (Non-repeatable Reads), Đọc bóng ma (Phantom Reads).
- Áp dụng 4 mức cô lập:
Read Uncommitted, Read Committed, Repeatable Read, và Serializable.
- Cơ chế khóa hai pha nghiêm ngặt (Strict Strong Two Phase Locking - SS2PL) được tích hợp trong hệ quản trị SQL Server.
- Mô hình phục hồi lỗi hệ thống phân tán (Distributed Recovery): Phục hồi sau commit, phục hồi trước commit (Rollback) và xử lý sự cố sập trạm cục bộ (Site Crash).
Phương pháp nghiên cứu
- Phương pháp mô hình hóa dữ liệu: Xây dựng mô hình thực thể liên kết (Linked Entity Model) và lập bảng tần suất truy cập tại các vị trí (Frequency Table of Accessing Locations) giữa trụ sở chính và chi nhánh để làm căn cứ phân mảnh.
- Phương pháp thực nghiệm kỹ thuật: Cài đặt, phân quyền và kiểm thử đồng bộ dữ liệu trên môi trường mạng máy tính đa nút sử dụng hệ quản trị cơ sở dữ liệu quan hệ kết hợp mạng riêng ảo.
Nguồn dữ liệu
Dữ liệu sử dụng trong đồ án là tập dữ liệu thử nghiệm mô phỏng hoạt động kinh doanh chuỗi hải sản, bao gồm các bản ghi quản lý chi nhánh, kho hàng, nhân viên, mặt hàng hải sản, thông tin hóa đơn bán hàng và phiếu nhập kho được cấu trúc qua 9 bảng quan hệ.
Thiết kế và triển khai hệ thống
Kiến trúc phân tán và hạ tầng mạng
Hệ thống được thiết kế theo mô hình client-server phân tán gồm 1 máy chủ trung tâm và 3 trạm làm việc (Workstations) liên kết qua mạng truyền thông:
- Máy chủ trung tâm (Server - Hà Nội): Nắm giữ CSDL toàn cục, dữ liệu tổng hợp toàn hệ thống, điều phối đồng bộ và thực hiện các chức năng quản trị cấp cao.
- Trạm 1 (Thái Bình -
TB1SERVER): Quản lý dữ liệu phát sinh cục bộ của chi nhánh Thái Bình (BRA1).
- Trạm 2 (Nam Định -
ND1SERVER / ND2SERVER): Quản lý dữ liệu phát sinh cục bộ của chi nhánh Nam Định (BRA2).
- Trạm 3 (Hà Nội 2 -
HN2SERVER): Đóng vai trò trạm phụ phân mảnh chứa dữ liệu nhân viên, nguyên liệu, hóa đơn và kho hàng.
Môi trường công nghệ:
- Hệ quản trị CSDL: Microsoft SQL Server 2019 Developer Edition.
- Công cụ quản trị: SQL Server Management Studio 18 (SSMS).
- Mạng truyền thông: Radmin VPN tạo mạng riêng ảo cục bộ kết nối các máy tính qua Internet.
- Cấu hình hạ tầng: Mở cổng TCP/IP 1433 (hoặc 1434, 1435 cho nhiều instance trên cùng máy), thiết lập Windows Firewall Inbound Rules, tạo thư mục chia sẻ
Snapshot với quyền đọc/ghi (Read/Write) cho nhóm Everyone.
Cấu trúc lược đồ dữ liệu toàn cục (CSDL CHHS)
Hệ thống bao gồm 9 bảng dữ liệu quan hệ:
| Tên bảng |
Khóa chính (PK) |
Khóa ngoại (FK) |
Ràng buộc nghiệp vụ |
BRANCH |
id_bra nchar(25) |
Không |
name_bra nvarchar(255) UNIQUE |
STORAGE |
id_sto nchar(25) |
id_bra -> BRANCH |
name_sto UNIQUE, ON UPDATE CASCADE |
CUSTOMER |
id_cus nchar(25) |
id_bra -> BRANCH |
ON UPDATE CASCADE |
EMPLOYEE |
id_emp char(25) |
id_bra -> BRANCH |
sal > 5000000.0, ON UPDATE CASCADE |
SEAFOOD |
id_sea char(25) |
Không |
inStock > 0.0 |
INVOICE |
id_inv int |
id_cus, id_emp, id_sto |
Time_date DEFAULT(GETDATE()) |
INVOICE_DETAIL |
id_inv, id_sea |
id_inv, id_sea |
amount > 0.0, ON UPDATE CASCADE |
RECEIPT_NOTE |
id_rec int |
id_emp, id_sto |
date_time DEFAULT(GETDATE()) |
RECEIPT_DETAIL |
id_rec, id_sea |
id_rec, id_sea |
amount > 0.0, price CHECK |
Thiết kế phân mảnh dữ liệu
Hệ thống sử dụng bảng BRANCH làm tiêu chí phân mảnh ngang nguyên thủy và thực hiện phân mảnh ngang dẫn xuất cho các bảng còn lại:
1. Phân mảnh tại Trạm 1 (Thái Bình - BRA1):
- $BRANCH_1 = \sigma_{ID_BRA = 'BRA1'}(BRANCH)$
- $CUSTOMER_1 = CUSTOMER \ltimes BRANCH_1$
- $EMPLOYEE_1 = EMPLOYEE \ltimes BRANCH_1$
- $STORAGE_1 = STORAGE \ltimes BRANCH_1$
- $INVOICE_1 = INVOICE \ltimes STORAGE_1$
- $INVOICE_DETAIL_1 = INVOICE_DETAIL \ltimes INVOICE_1$
- $RECEIPT_NOTE_1 = RECEIPT_NOTE \ltimes STORAGE_1$
- $RECEIPT_DETAIL_1 = RECEIPT_DETAIL \ltimes RECEIPT_NOTE_1$
2. Phân mảnh tại Trạm 2 (Nam Định - BRA2):
- $BRANCH_2 = \sigma_{ID_BRA = 'BRA2'}(BRANCH)$
- $CUSTOMER_2 = CUSTOMER \ltimes BRANCH_2$
- $EMPLOYEE_2 = EMPLOYEE \ltimes BRANCH_2$
- $STORAGE_2 = STORAGE \ltimes BRANCH_2$
- $INVOICE_2 = INVOICE \ltimes STORAGE_2$
- $INVOICE_DETAIL_2 = INVOICE_DETAIL \ltimes INVOICE_2$
- $RECEIPT_NOTE_2 = RECEIPT_NOTE \ltimes STORAGE_2$
- $RECEIPT_DETAIL_2 = RECEIPT_DETAIL \ltimes RECEIPT_NOTE_2$
Hệ thống đồng thời áp dụng phân mảnh dọc (Vertical Fragmentation) trên các bảng CUSTOMER, EMPLOYEE, BRANCH để tách biệt các thuộc tính quản trị cục bộ.
Cấu hình phân quyền và tính trong suốt
- Cấu hình tài khoản quản trị: Sử dụng tài khoản
sa với vai trò db_owner (toàn quyền) để máy chủ trung tâm kết nối và đồng bộ dữ liệu với các trạm.
- Cấu hình tài khoản chỉ đọc: Thiết lập các tài khoản đăng nhập giới hạn quyền đọc dữ liệu chéo giữa các trạm gồm
linkservertb1 (Thái Bình), linkservernd2 (Nam Định), linkserverhn2 (Hà Nội 2).
- Cấu hình Linked Server: Khởi tạo liên kết giữa các máy chủ mang tên
TB1SERVER, ND1SERVER, HN2SERVER, HNSERVER, bật cờ RPC và RPC Out thành True để đảm bảo tính trong suốt vị trí khi gọi thủ tục và truy vấn liên trạm.
- Cơ chế nhân bản (Replication): Thiết lập
Merge Publication tại Server trung tâm kết hợp bộ lọc phân mảnh tự động (Automatically Generate Filter) và đăng ký Subcription tại các trạm theo chế độ chạy liên tục (Run continuously).
Nội dung chính theo từng chương
I. Real World Scenario (Bối cảnh thực tế)
Chương này phân tích nhu cầu số hóa quy trình quản lý trong chuỗi bán lẻ hải sản. Tác giả chỉ ra nhược điểm của mô hình sổ sách và mô hình CSDL tập trung khi mở rộng quy mô kinh doanh ra các tỉnh thành. Chương trình bày các lợi ích cụ thể của hệ thống phân tán: hỗ trợ nhân viên tra cứu nhanh, tiết kiệm chi phí vận hành, bảo trì, phục hồi mạng và nâng cao hiệu quả quản trị tại các chi nhánh.
II. The Main Functions of the System (Các chức năng chính của hệ thống)
Chương này quy định chi tiết phân hệ chức năng và phân quyền người dùng tại từng cấp:
- Tại các trạm chi nhánh (Thái Bình, Nam Định): Quản lý chi tiết thông tin kho, nhân viên, khách hàng, nguyên liệu, tồn kho, xuất - nhập kho cục bộ; thống kê doanh thu theo tháng.
- Tại máy chủ trung tâm (Hà Nội): Quản lý toàn bộ chức năng chi nhánh; thêm, sửa, xóa thông tin chi nhánh và kho trực thuộc; quản lý danh mục hàng hóa hải sản; tổng hợp báo cáo thống kê doanh thu và xuất nhập toàn chuỗi.
- Trình bày mô hình thực thể liên kết và bảng tần suất truy cập dữ liệu (Create, Read, Update, Delete) giữa trung tâm và các trạm.
III. Overall Design (Thiết kế tổng thể)
Chương này mô tả kiến trúc phân tán 4 nút mạng, xác định vị trí đặt dữ liệu và phân định vai trò giữa Server và các Workstation. Tác giả định nghĩa chi tiết từ điển dữ liệu (Data Dictionary) cho 9 bảng trong CSDL CHHS, đồng thời xây dựng hệ thống công thức phân mảnh ngang nguyên thủy, phân mảnh ngang dẫn xuất và phân mảnh dọc.
IV. Install SQL Server & Setting Infrastructure (Cài đặt môi trường và hạ tầng)
Chương này hướng dẫn quy trình cài đặt và thiết lập hạ tầng kỹ thuật:
- Cài đặt Microsoft SQL Server 2019 Developer Edition và SSMS 18 trên tất cả các máy.
- Cài đặt và cấu hình Radmin VPN để kết nối mạng cục bộ ảo giữa các trạm qua Internet.
- Cấu hình thư mục
Snapshot, phân quyền Everyone Read/Write, mở cổng Windows Firewall và kích hoạt giao thức TCP/IP cổng 1433 trong SQL Server Configuration Manager.
V. Database Settings and Fragmentation (Thiết lập CSDL và cấu hình phân mảnh)
Chương này cung cấp toàn bộ mã lệnh T-SQL khởi tạo CSDL CHHS, tạo cấu trúc 9 bảng kèm các ràng buộc khóa chính, khóa ngoại, ON UPDATE CASCADE và CHECK. Tiếp đó, chương hướng dẫn từng bước cấu hình Merge Replication trên SQL Server để thực hiện phân mảnh ngang và phân mảnh dọc theo mã chi nhánh BRA1 và BRA2.
VI. Connect, Decentralize – Ensure Transparency (Kết nối, phân quyền và đảm bảo tính trong suốt)
Chương này trình bày giải pháp bảo mật và trong suốt hóa truy cập:
- Cấu hình tài khoản
sa với quyền db_owner cho máy chủ quản trị.
- Tạo các tài khoản
linkservertb1, linkservernd2, linkserverhn2 cho phép các trạm đọc dữ liệu lẫn nhau.
- Thiết lập Linked Server (
TB1SERVER, ND1SERVER, HN2SERVER, HNSERVER) với cấu hình RPC = True và RPC Out = True.
- Hoàn tất quá trình tạo Local Subscriptions với chế độ đồng bộ liên tục.
VII. Distributed Queries & Synchronization Tests (Truy vấn phân tán và kiểm thử đồng bộ)
Chương này trình bày các câu truy vấn thử nghiệm nhằm đánh giá tính trong suốt vị trí và khả năng đồng bộ dữ liệu:
- Truy vấn danh sách khách hàng tại
HN2SERVER từ một chi nhánh khác.
- Lấy danh sách Top 6 khách hàng tại Nam Định (
ND2SERVER) và Top 10 nhân viên tại Thái Bình từ HN2SERVER.
- Thực hiện thêm mới khách hàng (
'CUS17', 'Ngô Khoai San', 'BRA2') tại máy chủ Hà Nội (HNSERVER) và kiểm tra tính tức thời của việc đồng bộ sang HN2SERVER.
- Kiểm thử cập nhật thông tin khách hàng và truy vấn tìm kiếm khách hàng theo số điện thoại (
0988585568) từ Nam Định sang Thái Bình.
VIII. Concurrency & Commit Protocols (Giao thức giao dịch, Commit và kiểm soát đồng thời)
Chương này đi sâu vào cơ sở lý thuyết và thực nghiệm giao dịch phân tán:
- Phân biệt giao dịch ngầm định (Implicit) và tường minh (Explicit).
- Cơ chế hoạt động của giao thức One-Phase Commit và Two-Phase Commit (Giai đoạn chuẩn bị - Prepare Phase và giai đoạn quyết định - Commit/Abort Phase) thông qua MS DTC.
- Phân tích 4 hiện tượng xung đột đồng thời và bảng ánh xạ 4 mức cô lập giao dịch.
- Thực nghiệm kiểm soát đồng thời với mức cô lập
SERIALIZABLE trên bảng STORAGE qua 4 kịch bản:
- Hai giao dịch không thể tuần tự hóa (xử lý chờ đợi hoặc hủy bỏ).
- Hai giao dịch tác động trên cùng bảng nhưng khác dòng dữ liệu (thực thi đồng thời thành công).
- Xung đột Đọc/Ghi (Read/Write Conflict).
- Xung đột Ghi/Ghi (Write/Write Conflict).
IX. Distributed Failure/Recovery (Xử lý sự cố và phục hồi hệ thống phân tán)
Chương này phân loại 6 dạng sự cố trong hệ thống phân tán (System crash, System error, Local error, Concurrency control enforcement, Disk failure, Catastrophe) và thực nghiệm 3 tình huống phục hồi:
- Phục hồi sau Commit: Thực hiện cập nhật và commit dữ liệu, đồng thời kích hoạt lệnh tắt đột ngột
SHUTDOWN WITH NOWAIT -> Khi khởi động lại, dữ liệu đã commit vẫn được lưu thành công.
- Phục hồi trước Commit: Thực hiện cập nhật nhưng chưa commit rồi ngắt SQL Server -> Khi mở lại, hệ thống tự động rollback, dữ liệu không bị thay đổi.
- Trạm mạng bị sập (Site Crash): Tắt trạm
HN2SERVER, thực hiện giao dịch cập nhật kho Thái Bình từ máy chủ trung tâm Hà Nội -> Giao dịch vẫn thực thi thành công và dữ liệu tại trạm Thái Bình vẫn được cập nhật bình thường.
Kết quả và đóng góp
Kết quả thực nghiệm chính
- Mức cô lập và kiểm soát xung đột: Hệ thống kiểm chứng thành công bảng ma trận cô lập giao dịch trên SQL Server:
| Mức cô lập (Isolation Level) |
Đọc rác (Dirty Reads) |
Đọc không lặp lại (Non-repeatable Reads) |
Đọc bóng ma (Phantoms) |
Read uncommitted |
Có thể xảy ra |
Có thể xảy ra |
Có thể xảy ra |
Read committed |
Không xảy ra |
Có thể xảy ra |
Có thể xảy ra |
Repeatable read |
Không xảy ra |
Không xảy ra |
Có thể xảy ra |
Serializable |
Không xảy ra |
Không xảy ra |
Không xảy ra |
- Hiệu năng và tính chính xác của đồng bộ phân tán:
- Thực hiện thành công việc phân tách dữ liệu cho 2 chi nhánh Thái Bình (
BRA1) và Nam Định (BRA2) thông qua cơ chế phân mảnh ngang dẫn xuất từ bảng BRANCH đến các bảng chi tiết hóa đơn, phiếu nhập và kho bãi.
- Các thao tác thêm mới, sửa đổi dữ liệu khách hàng và nhân viên tại máy chủ trung tâm (
HNSERVER) được đồng bộ tự động và chính xác tới các trạm chi nhánh thông qua Merge Replication.
- Cơ chế Linked Server với các định danh máy chủ phân tán cho phép thực thi truy vấn liên trạm (ví dụ từ Nam Định đọc dữ liệu kho tại Thái Bình) đảm bảo tính trong suốt vị trí mà không yêu cầu người dùng phải biết vị trí vật lý của bảng dữ liệu.
- Kiểm chứng an toàn giao dịch và phục hồi:
- Chứng minh cơ chế SS2PL của SQL Server ở mức
SERIALIZABLE ngăn chặn triệt để xung đột Đọc/Ghi và Ghi/Ghi bằng cách khóa tài nguyên cho đến khi giao dịch kết thúc.
- Chứng minh tính bền vững (Durability) của giao dịch sau lệnh
SHUTDOWN WITH NOWAIT và tính nguyên tử (Atomicity) khi tự động hủy các giao dịch chưa hoàn tất.
- Hệ thống duy trì tính sẵn sàng: Sự cố sập trạm cục bộ tại một nút (
HN2SERVER) không làm gián đoạn các giao dịch độc lập giữa các nút còn lại (HNSERVER và TB1SERVER).
Giải pháp và kiến nghị
- Kiến nghị mô hình kết hợp Merge Replication và Linked Server cho các doanh nghiệp bán lẻ đa chi nhánh cần duy trì tính độc lập dữ liệu cục bộ nhưng vẫn đòi hỏi khả năng truy xuất tổng thể từ xa.
- Đề xuất phân định rõ ràng quyền hạn giữa tài khoản quản trị hệ thống (
db_owner) và các tài khoản liên kết trạm dạng chỉ đọc (read-only) nhằm nâng cao tính an toàn thông tin.
Đóng góp của đề tài
- Xây dựng hoàn chỉnh quy trình thiết kế CSDL phân tán từ mô hình toán học (đại số quan hệ) đến triển khai thực tế trên hệ quản trị CSDL thương mại.
- Xây dựng bộ kịch bản T-SQL trực quan để kiểm chứng các giao thức đồng thời, giao thức commit và khả năng phục hồi lỗi của hệ thống phân tán.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế
- Hệ thống mới được thử nghiệm với tập dữ liệu mô phỏng quy mô nhỏ, chưa đánh giá tải trọng với dữ liệu lớn hàng triệu bản ghi.
- Hạ tầng mạng sử dụng mạng riêng ảo Radmin VPN trên các máy trạm cá nhân, chưa phản ánh đầy đủ các yếu tố độ trễ, mất gói tin thực tế trên mạng diện rộng (WAN) của doanh nghiệp.
- Mức độ thử nghiệm tập trung chủ yếu vào các câu lệnh T-SQL trực tiếp trong SSMS, chưa xây dựng ứng dụng giao diện người dùng (UI/UX) tích hợp hoàn chỉnh.
- Việc áp dụng mức cô lập cao nhất
SERIALIZABLE cho toàn bộ các ví dụ thực nghiệm có thể dẫn đến hiện tượng nghẽn hàng đợi giao dịch nếu lưu lượng truy cập thực tế tăng cao.
Hướng nghiên cứu tiếp
- Tối ưu hóa chi phí truyền thông cho các câu truy vấn phân tán phức tạp (Distributed Query Optimization).
- Xây dựng ứng dụng phần mềm quản lý hoàn chỉnh trên nền tảng Web hoặc Desktop kết nối tới hệ thống CSDL phân tán đã xây dựng.
- Nghiên cứu các kịch bản cân bằng tải và nhân bản dữ liệu đa chiều nhằm tăng cường khả năng chịu lỗi khi đường truyền mạng giữa các tỉnh gặp sự cố kéo dài.
Giá trị tham khảo
Tài liệu là nguồn tham khảo hữu ích cho:
- Sinh viên ngành Công nghệ thông tin, Hệ thống thông tin và Kỹ thuật phần mềm: Phù hợp làm tài liệu học tập, thực hành và tham khảo khi thực hiện đồ án môn học hoặc khóa luận tốt nghiệp về môn "Hệ cơ sở dữ liệu phân tán".
- Kỹ sư cơ sở dữ liệu và quản trị hệ thống: Cung cấp hướng dẫn chi tiết từng bước về cấu hình Merge Replication, thiết lập Linked Server, mở cổng dịch vụ, xử lý lỗi kết nối VPN và phân quyền bảo mật trong Microsoft SQL Server 2019.
- Nội dung giá trị nhất để tham khảo:
- Hệ thống công thức toán học phân mảnh ngang nguyên thủy và phân mảnh ngang dẫn xuất cho lược đồ CSDL chuỗi bán lẻ.
- Quy trình thiết lập kỹ thuật trên SQL Server Management Studio (từ cấu hình Snapshot Folder, Network Configuration đến xử lý lỗi Subscription).
- Bộ kịch bản mẫu bằng mã T-SQL kiểm tra xung đột giao dịch đồng thời và mô phỏng lỗi sập server.
Câu hỏi thường gặp
1. Đề tài sử dụng tiêu chí nào để thực hiện phân mảnh ngang nguyên thủy cho hệ thống CSDL?
Đề tài chọn quan hệ toàn cục BRANCH làm tiêu chí phân mảnh ngang nguyên thủy dựa trên mã chi nhánh: điều kiện $\sigma_{ID_BRA = 'BRA1'}$ cho trạm Thái Bình và $\sigma_{ID_BRA = 'BRA2'}$ cho trạm Nam Định. Các quan hệ còn lại (CUSTOMER, EMPLOYEE, STORAGE, INVOICE, RECEIPT_NOTE...) được phân mảnh ngang dẫn xuất thông qua phép nối bán tự nhiên ($\ltimes$) tương ứng với các mảnh của BRANCH và STORAGE.
2. Hệ thống phân quyền truy cập giữa máy chủ trung tâm và các trạm chi nhánh như thế nào?
Máy chủ trung tâm tại Hà Nội sử dụng tài khoản sa với vai trò db_owner để có toàn quyền đọc, thêm, sửa, xóa dữ liệu trên các trạm. Ngược lại, khi các trạm kết nối chéo với nhau qua Linked Server, hệ thống thiết lập các tài khoản đăng nhập riêng biệt (linkservertb1, linkservernd2, linkserverhn2) chỉ được cấp quyền đọc dữ liệu (read-only) nhằm bảo đảm an toàn dữ liệu cục bộ.
3. Hệ thống xử lý thế nào khi hai giao dịch cùng thao tác trên một bảng dữ liệu?
Kết quả thực nghiệm trên bảng STORAGE ở mức cô lập SERIALIZABLE cho thấy:
- Nếu hai giao dịch tác động trên các dòng dữ liệu khác nhau (ví dụ một giao dịch sửa kho
KB1, một giao dịch sửa kho KD2), hệ thống cho phép hai giao dịch thực thi đồng thời thành công.
- Nếu hai giao dịch cùng thao tác trên một dòng dữ liệu (xung đột Ghi/Ghi hoặc Đọc/Ghi), cơ chế khóa SS2PL của SQL Server sẽ buộc giao dịch thứ hai phải chờ (delay) cho đến khi giao dịch thứ nhất thực hiện lệnh
COMMIT TRANSACTION hoặc bị hủy bỏ (ROLLBACK).
4. Khi trạm phụ HN2SERVER bị tắt đột ngột, các máy chủ khác có tiếp tục hoạt động được không?
Có. Thực nghiệm tại mục Distributed Failure/Recovery chứng minh rằng khi tắt dịch vụ tại trạm HN2SERVER, máy chủ trung tâm Hà Nội (HNSERVER) vẫn có thể gửi và thực thi giao dịch cập nhật dữ liệu kho tại trạm Thái Bình (TB1SERVER) một cách bình thường, không bị gián đoạn.
5. Bảng EMPLOYEE và SEAFOOD trong hệ thống có các ràng buộc dữ liệu đặc thù nào?
Trong CSDL CHHS:
- Bảng
EMPLOYEE áp dụng ràng buộc kiểm tra lương nhân viên CHECK(SAL > 5000000.0) và khóa ngoại ID_BRA tham chiếu đến bảng BRANCH với thuộc tính ON UPDATE CASCADE.
- Bảng
SEAFOOD áp dụng ràng buộc số lượng hàng tồn kho CHECK(INSTOCK > 0.0).
Kết luận
Đồ án môn học "Hệ cơ sở dữ liệu phân tán" đã giải quyết trọn vẹn bài toán phân tán dữ liệu cho chuỗi công ty kinh doanh hải sản đa chi nhánh với mô hình 4 nút mạng đặt tại Hà Nội, Thái Bình và Nam Định. Thông qua việc ứng dụng lý thuyết phân mảnh ngang dẫn xuất, công nghệ Merge Replication và Linked Server trên Microsoft SQL Server 2019, hệ thống đảm bảo được tính độc lập cục bộ, tính toàn vẹn dữ liệu và tính trong suốt vị trí cho người sử dụng. Các thực nghiệm về giao dịch phân tán, kiểm soát đồng thời SS2PL và cơ chế phục hồi lỗi sau sự cố đã chứng minh tính khả thi và độ tin cậy của mô hình thiết kế trong thực tiễn.