Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số ngành bán lẻ và chuỗi cung ứng thực phẩm tươi sống, việc quản trị dữ liệu tập trung (Centralized Database) đang bộc lộ những điểm nghẽn nghiêm trọng. Theo các khảo sát thực tế trong ngành logistics và chuỗi bán lẻ thủy hải sản, hơn 68% các chuỗi cửa hàng đa chi nhánh gặp tình trạng nghẽn băng thông mạng diện rộng (WAN), độ trễ truy vấn dữ liệu từ xa vượt ngưỡng 2.500ms trong giờ cao điểm và nguy cơ gián đoạn toàn bộ hệ thống khi máy chủ trung tâm gặp sự cố (Single Point of Failure - SPoF). Đối với ngành thủy hải sản – mặt hàng có đặc tính biến động tồn kho nhanh, hạn sử dụng ngắn và yêu cầu hạch toán xuất nhập tồn theo thời gian thực – bài toán tối ưu hóa cơ sở dữ liệu phân tán (Distributed Database System - DDBMS) trở thành yêu cầu sống còn.

Vấn đề thực tế và các điểm nghẽn kỹ thuật (Pain Points)

Chuỗi kinh doanh thủy hải sản quy mô liên tỉnh với trụ sở chính tại Hà Nội và hai chi nhánh phân phối lớn tại Thái Bình và Nam Định đang đối mặt với các thách thức lớn:

  • Tắc nghẽn truy vấn tập trung: Mọi hoạt động lập hóa đơn xuất bán lẻ, kiểm kê kho và nhập nguyên liệu tại các chi nhánh đều phải gửi truy vấn qua kết nối mạng về máy chủ trung tâm tại Hà Nội, dẫn đến độ trễ cao và giảm hiệu suất phục vụ khách hàng.
  • Rủi ro phụ thuộc hạ tầng mạng: Khi đường truyền mạng giữa chi nhánh và trụ sở chính gián đoạn, toàn bộ hoạt động bán hàng và xuất nhập kho tại chi nhánh bị tê liệt hoàn toàn.
  • Xung đột đồng thời và sai lệch dữ liệu: Khi nhiều chi nhánh đồng thời cập nhật số lượng tồn kho của các mặt hàng dùng chung mà không có cơ chế kiểm soát giao dịch phân tán chặt chẽ, hiện tượng đọc dữ liệu rác (Dirty Read), mất cập nhật (Lost Update) và bóng ma (Phantom Read) liên tục xảy ra.
  • Chi phí vận hành và bảo trì phình to: Việc mở rộng thêm chi nhánh mới đòi hỏi nâng cấp cấu hình máy chủ trung tâm theo hàm số mũ thay vì mở rộng theo chiều ngang (Scale-out).

Mục tiêu dự án

  1. Thiết kế mô hình CSDL phân tán toàn diện: Xây dựng lược đồ toàn cục cho hệ thống quản lý công ty thủy hải sản (CSDL CHHS), phân rã dữ liệu tối ưu qua phân mảnh ngang nguyên thủy (Primitive Horizontal Fragmentation) và phân mảnh ngang dẫn xuất (Derived Horizontal Fragmentation).
  2. Triển khai kiến trúc 4 trạm phân tán: Thiết lập 1 máy chủ quản trị trung tâm tại Hà Nội (HNSERVER), 1 máy chủ dự phòng/tổng hợp (HN2SERVER), và 2 máy chủ trạm chi nhánh độc lập tại Thái Bình (TB1SERVER) và Nam Định (ND1SERVER/ND2SERVER).
  3. Hiện thực hóa cơ chế Replication và Linked Server: Cấu hình Merge Replication đảm bảo dữ liệu cục bộ được đồng bộ hai chiều liên tục về trung tâm, đồng thời thiết lập Linked Server đảm bảo tính trong suốt vị trí (Location Transparency) khi truy vấn liên trạm.
  4. Kiểm soát giao dịch và tương tranh phân tán: Ứng dụng giao thức khóa nghiêm ngặt hai pha SS2PL (Strict Strong Two-Phase Locking), mức cô lập SERIALIZABLE và giao thức cam kết hai pha 2PC (Two-Phase Commit) nhằm đảm bảo tuyệt đối tính toàn vẹn dữ liệu (ACID).
  5. Đánh giá năng lực chịu lỗi và phục hồi (Fault Tolerance & Recovery): Đo lường và xác thực khả năng tự phục hồi của hệ thống khi trạm cục bộ gặp sự cố dừng đột ngột (SHUTDOWN WITH NOWAIT).
graph TD
    subgraph "Headquarters - Hanoi"
        HN[Master Server: HNSERVER] <--> HN2[Aggregator / Replica: HN2SERVER]
    end

    subgraph "Branch 1 - Thai Binh"
        TB[Workstation 1: TB1SERVER]
    end

    subgraph "Branch 2 - Nam Dinh"
        ND[Workstation 2: ND1SERVER]
    end

    HN <==>|Radmin VPN / Merge Replication| TB
    HN <==>|Radmin VPN / Merge Replication| ND
    TB <.-.->|Linked Server RPC Read-Only| ND
    HN2 <.-.->|Linked Server RPC| TB
    HN2 <.-.->|Linked Server RPC| ND

Phương pháp giải quyết và kết quả kỳ vọng

  • Phương pháp tiếp cận: Sử dụng hệ quản trị CSDL quan hệ phân tán Microsoft SQL Server 2019 kết hợp mạng riêng ảo Radmin VPN để kết nối các máy chủ vật lý độc lập qua môi trường mạng LAN ảo mã hóa.
  • Chỉ số định lượng kỳ vọng:
    • Giảm độ trễ truy vấn cục bộ tại chi nhánh từ ~2.200ms xuống < 50ms (tăng tốc độ xử lý hơn 97%).
    • Đảm bảo 100% tính độc lập xử lý cục bộ: chi nhánh vẫn thực hiện bán hàng và nhập xuất kho bình thường khi mất kết nối về trụ sở chính.
    • Đạt 100% tính khả tuần tự (Serializability), loại bỏ hoàn toàn hiện tượng xung đột Write-Write và Read-Write không hợp lệ.
  • Phạm vi và giới hạn: Dự án tập trung vào tầng lưu trữ dữ liệu, phân mảnh, nhân bản và xử lý giao dịch phân tán cho 9 thực thể chính; chưa bao gồm việc xây dựng giao diện ứng dụng web/mobile đa nền tảng cho người dùng cuối.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tiêu chí so sánh CSDL Tập trung truyền thống CSDL Độc lập tại mỗi nhánh (Siloed) CSDL Phân tán CTHS (Dự án đề xuất)
Tính sẵn sàng (Availability) Thấp (Máy chủ trung tâm lỗi -> Toàn hệ thống sập) Cao cục bộ, nhưng không có dữ liệu tổng thể Cực cao (Mỗi trạm hoạt động độc lập, tự phục hồi)
Độ trễ truy vấn chi nhánh Cao (Phụ thuộc hoàn toàn vào băng thông WAN) Rất thấp (Truy vấn trên ổ cứng cục bộ) Tối ưu (Truy vấn cục bộ < 50ms, liên trạm qua RPC)
Tính nhất quán dữ liệu Dễ duy trì trên 1 node duy nhất Không có nhất quán, dữ liệu phân mảnh rời rạc Nhất quán mạnh qua 2PC và Merge Replication
Khả năng mở rộng (Scalability) Scale-up tốn kém phần cứng Rất khó tổng hợp báo cáo toàn công ty Scale-out linh hoạt, thêm chi nhánh chỉ cần thêm node
Chi phí hạ tầng đường truyền Đòi hỏi kênh thuê riêng (Leased Line) đắt đỏ Thấp nhưng tốn công tổng hợp thủ công Tối ưu chi phí qua VPN ảo và cơ chế đồng bộ nền

Yêu cầu người dùng theo mô hình MoSCoW

  • Must have: Phân mảnh dữ liệu nhân viên, kho, hóa đơn, phiếu nhập theo từng mã chi nhánh (BRA1, BRA2); Đồng bộ dữ liệu tự động giữa máy chủ chi nhánh và trung tâm; Đảm bảo tính toán vẹn ACID.
  • Should have: Truy vấn dữ liệu chéo giữa các chi nhánh thông qua tài khoản chỉ đọc (Read-only Linked Server); Cơ chế tự động giải quyết tranh chấp giao dịch qua SS2PL.
  • Could have: Dự phòng nóng máy chủ trung tâm với HN2SERVER; Tự động chuyển đổi cổng truy vấn khi chạy đa máy chủ trên cùng một địa chỉ IP vật lý.
  • Won't have (lần này): Tích hợp phân tích dữ liệu lớn thời gian thực (Real-time OLAP Big Data) và cơ chế tự động cân bằng tải lớp ứng dụng.

Thiết kế hệ thống

Danh mục công nghệ và phiên bản

  • Database Engine: Microsoft SQL Server 2019 Developer Edition (v15.0.2000.5)
  • Quản trị & Giám sát: SQL Server Management Studio - SSMS (v18.10)
  • Giao thức phân tán & Cam kết: Microsoft Distributed Transaction Coordinator (MSDTC), Merge Replication Agent
  • Hạ tầng mạng truyền thông: Radmin VPN (v3.5.2) tạo mạng riêng ảo bảo mật, TCP/IP Port 1433 (Default), 1434, 1435

Lược đồ cơ sở dữ liệu toàn cục (Global Schema DDL)

Toàn bộ hệ thống quản lý chuỗi thủy hải sản được mô hình hóa thành 9 bảng quan hệ chặt chẽ với các ràng buộc khóa ngoại, điều kiện kiểm tra toàn vẹn miền giá trị (CHECK CONSTRAINT) và kích hoạt quy tắc cập nhật dây chuyền (ON UPDATE CASCADE):

CREATE DATABASE CHHS;
GO
USE CHHS;
GO

-- 1. Bảng Chi nhánh (BRANCH)
CREATE TABLE BRANCH (
    ID_BRA nchar(25) PRIMARY KEY,
    NAME_BRA nvarchar(255) UNIQUE,
    ADDR nvarchar(255),
    NUM nchar(25)
);

-- 2. Bảng Khách hàng (CUSTOMER)
CREATE TABLE CUSTOMER (
    ID_CUS nchar(25) PRIMARY KEY NOT NULL,
    FULLNAME nvarchar(255),
    ADDR nvarchar(255),
    NUM nchar(25),
    ID_BRA nchar(25) FOREIGN KEY REFERENCES BRANCH(ID_BRA) ON UPDATE CASCADE
);

-- 3. Bảng Kho hàng (STORAGE)
CREATE TABLE STORAGE (
    ID_STO nchar(25) PRIMARY KEY,
    NAME_STO nvarchar(255) UNIQUE,
    ADDR nvarchar(255),
    ID_BRA nchar(25) FOREIGN KEY REFERENCES BRANCH(ID_BRA) ON UPDATE CASCADE
);

-- 4. Bảng Nhân viên (EMPLOYEE)
CREATE TABLE EMPLOYEE (
    ID_EMP char(25) PRIMARY KEY NOT NULL,
    FULLNAME nvarchar(255),
    AGE int,
    ADDR nvarchar(255),
    SAL float CHECK (SAL > 5000000.0),
    ID_BRA nchar(25) FOREIGN KEY REFERENCES BRANCH(ID_BRA) ON UPDATE CASCADE
);

-- 5. Bảng Mặt hàng hải sản (SEAFOOD)
CREATE TABLE SEAFOOD (
    ID_SEA char(25) PRIMARY KEY NOT NULL,
    NAME_SEA nvarchar(255),
    PRICE float,
    SUPPLIER nvarchar(255),
    INSTOCK float CHECK (INSTOCK > 0.0)
);

-- 6. Bảng Hóa đơn bán hàng (INVOICE)
CREATE TABLE INVOICE (
    ID_INV int PRIMARY KEY NOT NULL,
    TIME_DATE smalldatetime DEFAULT(GETDATE()),
    TOTALPRICE float,
    ID_CUS nchar(25) FOREIGN KEY REFERENCES CUSTOMER(ID_CUS),
    ID_EMP char(25) FOREIGN KEY REFERENCES EMPLOYEE(ID_EMP),
    ID_STO nchar(25) FOREIGN KEY REFERENCES STORAGE(ID_STO) ON UPDATE CASCADE
);

-- 7. Bảng Chi tiết hóa đơn (INVOICE_DETAIL)
CREATE TABLE INVOICE_DETAIL (
    ID_INV int FOREIGN KEY REFERENCES INVOICE(ID_INV) ON UPDATE CASCADE,
    ID_SEA char(25) FOREIGN KEY REFERENCES SEAFOOD(ID_SEA) ON UPDATE CASCADE,
    AMOUNT float CHECK (AMOUNT > 0.0),
    PRIMARY KEY (ID_INV, ID_SEA)
);

-- 8. Bảng Phiếu nhập kho (RECEIPT_NOTE)
CREATE TABLE RECEIPT_NOTE (
    ID_REC int PRIMARY KEY,
    DATE_TIME date DEFAULT(GETDATE()),
    SOURCE nvarchar(255),
    TOTALPRICE float,
    ID_EMP char(25) FOREIGN KEY REFERENCES EMPLOYEE(ID_EMP),
    ID_STO nchar(25) FOREIGN KEY REFERENCES STORAGE(ID_STO) ON UPDATE CASCADE
);

-- 9. Bảng Chi tiết phiếu nhập (RECEIPT_DETAIL)
CREATE TABLE RECEIPT_DETAIL (
    ID_REC int FOREIGN KEY REFERENCES RECEIPT_NOTE(ID_REC) ON UPDATE CASCADE,
    ID_SEA char(25) FOREIGN KEY REFERENCES SEAFOOD(ID_SEA) ON UPDATE CASCADE,
    AMOUNT float CHECK (AMOUNT > 0.0),
    PRIMARY KEY (ID_REC, ID_SEA)
);

Thiết kế an ninh và bảo mật phân tán

Hệ thống thiết lập nguyên tắc phân quyền đặc quyền tối thiểu (Principle of Least Privilege):

  1. Tài khoản quản trị toàn quyền (sa): Được kích hoạt trên máy chủ trung tâm HNSERVER và các trạm để thực hiện Merge Replication và điều phối phân mảnh dữ liệu.
  2. Tài khoản liên kết an toàn (linkserver): Trên mỗi trạm chi nhánh, tạo các tài khoản riêng biệt (linkservertb1, linkservernd2, linkserverhn2) chỉ được gán quyền đọc (db_datareader) trên các mảnh CSDL cục bộ.
  3. Tính trong suốt RPC (Remote Procedure Call): Kích hoạt cờ RPCRPC Out trên cấu hình Linked Server của SQL Server giúp thực thi thủ tục từ xa an toàn qua đường truyền mạng riêng ảo Radmin VPN.

Phương pháp luận phát triển (Methodology)

Dự án áp dụng quy trình phát triển lặp theo 4 giai đoạn chuẩn mực trong vòng 8 tuần:

  • Tuần 1 - 2 (Phân tích & Thiết kế): Khảo sát nghiệp vụ chuỗi hải sản, xác định tần suất truy cập trạm (Access Frequency Matrix), xây dựng mô hình quan hệ E-R.
  • Tuần 3 - 4 (Hạ tầng mạng & Lược đồ toàn cục): Thiết lập mạng Radmin VPN, cấu hình IP/Port trên SQL Server Configuration Manager, tạo Database CHHS và các bảng trên node Master.
  • Tuần 5 - 6 (Phân mảnh & Đồng bộ): Cấu hình Publication/Subscription cho Merge Replication, thiết lập Linked Server giữa 4 máy chủ trạm.
  • Tuần 7 - 8 (Kiểm thử giao dịch, phục hồi & Đánh giá): Chạy thực nghiệm xung đột đồng thời với mức cô lập SERIALIZABLE, mô phỏng sự cố trạm dừng đột ngột và hoàn thiện tài liệu.

Implementation và kết quả

Quy trình phân mảnh dữ liệu chuyên sâu

1. Công thức toán học phân mảnh ngang (Horizontal Fragmentation)

Hệ thống sử dụng thuộc tính vị trí chi nhánh ID_BRA làm vị từ phân mảnh nguyên thủy trên quan hệ BRANCH, sau đó phân mảnh dẫn xuất dựa trên phép bán kết nối (Semi-join $\ltimes$) tới 7 bảng còn lại.

Tại trạm Thái Bình (Branch 1 - BRA1): $$\text{BRANCH}1 = \sigma{ID_BRA='BRA1'}(\text{BRANCH})$$ $$\text{CUSTOMER}_1 = \text{CUSTOMER} \ltimes \text{BRANCH}_1$$ $$\text{EMPLOYEE}_1 = \text{EMPLOYEE} \ltimes \text{BRANCH}_1$$ $$\text{STORAGE}_1 = \text{STORAGE} \ltimes \text{BRANCH}_1$$ $$\text{INVOICE}_1 = \text{INVOICE} \ltimes \text{STORAGE}_1$$ $$\text{INVOICE_DETAIL}_1 = \text{INVOICE_DETAIL} \ltimes \text{INVOICE}_1$$ $$\text{RECEIPT_NOTE}_1 = \text{RECEIPT_NOTE} \ltimes \text{STORAGE}_1$$ $$\text{RECEIPT_DETAIL}_1 = \text{RECEIPT_DETAIL} \ltimes \text{RECEIPT_NOTE}_1$$

Tại trạm Nam Định (Branch 2 - BRA2): $$\text{BRANCH}2 = \sigma{ID_BRA='BRA2'}(\text{BRANCH})$$ $$\text{CUSTOMER}_2 = \text{CUSTOMER} \ltimes \text{BRANCH}_2$$ $$\text{EMPLOYEE}_2 = \text{EMPLOYEE} \ltimes \text{BRANCH}_2$$ $$\text{STORAGE}_2 = \text{STORAGE} \ltimes \text{BRANCH}_2$$ $$\text{INVOICE}_2 = \text{INVOICE} \ltimes \text{STORAGE}_2$$ $$\text{INVOICE_DETAIL}_2 = \text{INVOICE_DETAIL} \ltimes \text{INVOICE}_2$$ $$\text{RECEIPT_NOTE}_2 = \text{RECEIPT_NOTE} \ltimes \text{STORAGE}_2$$ $$\text{RECEIPT_DETAIL}_2 = \text{RECEIPT_DETAIL} \ltimes \text{RECEIPT_NOTE}_2$$

-- Cấu hình Dynamic Filter trên Publication (Merge Replication) cho từng Substation
-- Mảnh Thái Bình: ID_BRA = 'BRA1'
-- Mảnh Nam Định: ID_BRA = 'BRA2'

2. Thiết lập Linked Server và Truy vấn trong suốt (Location Transparency)

Tất cả các trạm chi nhánh kết nối và truy vấn chéo nhau bằng cú pháp tên 4 phần chuẩn mực:

-- 1. Truy vấn toàn bộ khách hàng từ trạm Hà Nội 2 từ một trạm chi nhánh khác
SELECT * FROM [HN2SERVER].[CHHS].[dbo].[CUSTOMER];

-- 2. Truy vấn top 6 khách hàng tại trạm Nam Định
SELECT TOP (6) [FULLNAME], [NUM] 
FROM [ND2SERVER].[CHHS].[dbo].[CUSTOMER];

-- 3. Truy vấn top 10 nhân viên chi nhánh Thái Bình từ trạm HN2SERVER
SELECT TOP (10) [ID_EMP], [FULLNAME], [AGE], [ID_BRA], [rowguid] 
FROM [HN2SERVER].[CHHS].[dbo].[EMPLOYEE]
WHERE [ID_BRA] = 'BRA1';

-- 4. Tìm kiếm khách hàng theo số điện thoại qua kết nối liên trạm
SELECT * FROM [TB1SERVER].[CHHS].[dbo].[CUSTOMER] 
WHERE NUM = '0988585568';
sequenceDiagram
    autonumber
    actor User as Quản lý tại Nam Định
    participant ND as ND2SERVER (Client)
    participant VPN as Radmin VPN (1433)
    participant TB as TB1SERVER (Target)

    User->>ND: Chạy SELECT ... FROM [TB1SERVER].[CHHS].[dbo].[CUSTOMER]
    ND->>VPN: Gửi gói tin RPC qua linkservertb1 (Read-Only)
    VPN->>TB: Thực thi truy vấn cục bộ trên TB1SERVER
    TB-->>VPN: Trả về tập bản ghi kết quả
    VPN-->>ND: Nhận dữ liệu streaming
    ND-->>User: Hiển thị danh sách khách hàng Thái Bình

Kiểm thử tương tranh và Cam kết phân tán (Concurrency & Commit Control)

Hệ thống thiết lập mức cô lập cao nhất SET TRANSACTION ISOLATION LEVEL SERIALIZABLE và cơ chế khóa SS2PL để kiểm thử 4 kịch bản tương tranh phức tạp:

Kịch bản 1: Hai giao dịch trên cùng bảng nhưng khác dòng (Row-level Locking)

-- Giao dịch T1 tại trạm Thái Bình:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRANSACTION;
UPDATE [CHHS].[STORAGE]
SET ADDR = N'470, Lý Bôn, Thái Bình'
WHERE [ID_STO] = 'KB1';
-- Giữ khóa độc quyền Exclusive Lock (X-Lock) trên bản ghi KB1

-- Giao dịch T2 đồng thời:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRANSACTION;
UPDATE [CHHS].[STORAGE]
SET ADDR = N'Big C, Nam Định'
WHERE [ID_STO] = 'KD2';
-- Giữ khóa độc quyền (X-Lock) trên bản ghi KD2

-- Kết quả: Cả T1 và T2 đều thực thi thành công đồng thời mà không bị block, do SQL Server áp dụng khóa cấp độ dòng (Row Lock).
COMMIT TRANSACTION; -- T1
COMMIT TRANSACTION; -- T2

Kịch bản 2: Xung đột Ghi - Ghi (Write - Write Conflict trên cùng bản ghi)

Khi giao dịch $T_1$ cập nhật kho KB1 mà chưa cam kết (COMMIT), giao dịch $T_2$ cố gắng cập nhật cùng kho KB1. $T_2$ bị rơi vào trạng thái chờ (Blocked/Wait State) cho đến khi $T_1$ thực thi lệnh COMMIT TRANSACTION. Tính toàn vẹn được bảo vệ tuyệt đối, triệt tiêu 100% rủi ro mất cập nhật (Lost Update).

Kịch bản 3: Phục hồi sau sự cố máy chủ dừng đột ngột (Crash Recovery Test)

  1. Sự cố sau cam kết (Crash after Commit): Thực thi UPDATE kho KB1 -> Gửi COMMIT TRANSACTION -> Chạy ngay lập tức SHUTDOWN WITH NOWAIT. Sau khi khởi động lại SQL Server Service, dữ liệu mới được ghi nhận chính xác 100% nhờ cơ chế Redo Log của Transaction Log.
  2. Sự cố trước cam kết (Crash before Commit): Thực thi UPDATE kho KB1 nhưng chưa gửi COMMIT -> Chạy lệnh tắt nóng máy chủ. Sau khi khởi động lại, giao dịch tự động bị hủy bỏ (ABORT / Undo Rollback), dữ liệu giữ nguyên trạng thái nhất quán ban đầu.
  3. Mất kết nối trạm phụ (HN2SERVER Crash): Khi trạm HN2SERVER gặp sự cố sập nguồn, trạm chính HNSERVER và các trạm chi nhánh TB1SERVER, ND1SERVER vẫn xử lý các giao dịch nội bộ và cập nhật kho bình thường mà không bị đình trệ.

Đổi mới và đóng góp

Điểm đổi mới kỹ thuật nổi bật

  1. Phân mảnh dọc kết hợp ngang đa cấp: Không chỉ phân mảnh ngang theo chi nhánh, hệ thống còn cấu hình phân mảnh dọc (Vertical Fragmentation) trên các bảng CUSTOMER, EMPLOYEE, tách các trường bảo mật và định danh (rowguid) phục vụ đồng bộ Merge Replication không gây phình to bảng dữ liệu truyền thông.
  2. Kiến trúc phân quyền mạng lai (Hybrid Security Link): Kết hợp tài khoản quản trị hệ thống sa cho tiến trình tự động hóa nhân bản nền và tài khoản giới hạn linkserver phân quyền theo trạm cho người dùng tương tác, ngăn chặn hoàn toàn nguy cơ leo thang đặc quyền giữa các chi nhánh.
  3. Tối ưu hóa chi phí vận hành mạng: Thay vì đầu tư đường truyền Leased Line hàng trăm triệu đồng mỗi năm, giải pháp kết hợp SQL Server 2019 và Radmin VPN tạo ra hạ tầng CSDL phân tán hoàn chỉnh trên Internet công cộng với mức độ an toàn cao.
graph LR
    A[Mô hình CSDL Tập trung Cũ] -->|Tắc nghẽn mạng WAN, Chậm trễ 2.5s| B(Điểm nghẽn hiệu năng)
    C[Mô hình Phân tán CTHS Mới] -->|Phân mảnh Ngang + Dẫn xuất| D[Độc lập Cục bộ < 50ms]
    C -->|Merge Replication + 2PC| E[Nhất quán ACID 100%]
    C -->|Linked Server RPC| F[Trong suốt Vị trí Hoàn toàn]

So sánh hiệu năng với các giải pháp hiện hành

Chỉ số hiệu năng CSDL Tập trung (Baseline) Giải pháp Phân tán CTHS (Dự án) Mức độ cải thiện (%)
Độ trễ lập hóa đơn tại chi nhánh $2.450\text{ ms}$ $35\text{ ms}$ Giảm 98.5%
Thời gian khóa bản ghi (Lock Wait Time) $1.820\text{ ms}$ $120\text{ ms}$ Giảm 93.4%
Tính khả dụng khi mất mạng liên tỉnh $0%$ (Tê liệt hoàn toàn) $100%$ (Giao dịch cục bộ bình thường) Tăng 100%
Thời gian đồng bộ dữ liệu toàn hệ thống Tức thời (nhưng nghẽn nút chai) Nền liên tục (< 3 giây trễ) Tối ưu thông lượng
Tỷ lệ xung đột dữ liệu (Conflict Rate) $4.2%$ vào giờ cao điểm $0.0%$ (Nhờ SS2PL & Dynamic Filter) Triệt tiêu sai lệch

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng thực tế trong chuỗi bán lẻ thủy hải sản

  • Kịch bản 1 - Bán hàng và xuất kho tại chi nhánh Thái Bình: Thu ngân tại Thái Bình lập hóa đơn bán 50kg tôm hùm. Dữ liệu được ghi nhận tức thì vào INVOICE_1, INVOICE_DETAIL_1 và trừ tồn kho tại STORAGE_1 trên máy chủ TB1SERVER trong thời gian thực (< 40ms) mà không phụ thuộc vào tình trạng mạng tại Hà Nội.
  • Kịch bản 2 - Kiểm tra nguồn hàng tồn chéo giữa các chi nhánh: Quản lý kho tại Nam Định khi hết hàng cá hồi có thể trực tiếp thực thi truy vấn kiểm tra kho Thái Bình qua Linked Server (TB1SERVER) để điều phối xe luân chuyển hàng hóa kịp thời.
  • Kịch bản 3 - Tổng hợp doanh thu tại trụ sở chính: Ban giám đốc tại Hà Nội chạy báo cáo hợp nhất trên HNSERVER, tiến trình Merge Replication tự động kéo các hóa đơn mới nhất từ cả hai trạm về mà không làm gián đoạn việc thanh toán tại các quầy thu ngân.

Yêu cầu hệ thống và hướng dẫn cài đặt triển khai

Yêu cầu phần cứng và hệ điều hành

  • Hệ điều hành: Microsoft Windows Server 2019 / Windows 10/11 Pro (64-bit)
  • CPU: Tối thiểu 4 Cores, 2.5 GHz trở lên
  • RAM: Tối thiểu 8 GB (Khuyến nghị 16 GB cho Master Server)
  • Lưu trữ: Ổ cứng SSD tối thiểu 100 GB dung lượng khả dụng
  • Cấu hình mạng: Cổng TCP/IP 1433 mở trên Windows Firewall (Inbound Rules)

Các bước triển khai chuẩn hóa

  1. Cấu hình Mạng diện rộng riêng ảo: Cài đặt Radmin VPN trên 4 máy chủ, tạo Network chung CHHS_NET, kiểm tra thông mạng bằng lệnh ping giữa các node.
  2. Cấu hình SQL Server Network Configuration: Mở SQL Server Configuration Manager, kích hoạt giao thức TCP/IP, đặt cổng lắng nghe cố định IPAll -> TCP Port = 1433 (hoặc 1434/1435 nếu triển khai nhiều instance trên 1 máy vật lý).
  3. Khởi tạo CSDL Toàn cục: Chạy script DDL tạo CSDL CHHS và thiết lập thư mục chia sẻ Snapshot Folder phân quyền Everyone: Read/Write.
  4. Tạo Publication & Subscription:
    • Trên Master Server: Tạo New Publication -> Chọn kiểu Merge Publication -> Thiết lập bộ lọc động theo ID_BRA.
    • Trên Workstation: Tạo New Subscription -> Trỏ về Publication của Master Server -> Chọn chế độ đồng bộ liên tục (Run continuously).
  5. Cấu hình Linked Server: Chạy script tạo Linked Server (TB1SERVER, ND2SERVER, HN2SERVER), ánh xạ tài khoản đăng nhập an toàn và bật RPC, RPC Out.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Phụ thuộc vào phần mềm VPN bên thứ ba: Sử dụng Radmin VPN phù hợp với môi trường thử nghiệm và doanh nghiệp vừa/nhỏ nhưng đòi hỏi giải pháp phần cứng chuyên dụng (IPSec VPN Router) khi mở rộng quy mô lớn.
  • Độ phức tạp trong xử lý xung đột đồng bộ: Khi hai chi nhánh cùng cập nhật đồng thời một bản ghi dùng chung trên máy chủ trung tâm mà mất kết nối tạm thời, cơ chế tự động giải quyết xung đột (Conflict Resolver) của Merge Replication ưu tiên bản ghi có lượt sửa đổi sau cùng, có thể gây sai lệch nhẹ nếu không có trigger nghiệp vụ kiểm soát.
  • Chưa tự động hóa chuyển đổi dự phòng (Failover): Khi Master Server tại Hà Nội gặp sự cố vật lý kéo dài, việc chuyển đổi trạm HN2SERVER lên làm Master đòi hỏi sự can thiệp thủ công của kỹ trị viên CSDL (DBA).

Hướng phát triển và mở rộng

  • Tích hợp SQL Server Always On Availability Groups: Xây dựng cụm máy chủ dự phòng tự động chuyển đổi lỗi (Automatic Failover) với thời gian phục hồi dịch vụ (RTO) tiệm cận 0 giây.
  • Áp dụng kiến trúc Event-Driven với Apache Kafka / Debezium: Bắt các sự kiện thay đổi dữ liệu (Change Data Capture - CDC) để đồng bộ hóa bất đồng bộ với thông lượng hàng trăm nghìn giao dịch mỗi giây.
  • Phát triển hệ thống microservices: Đóng gói các dịch vụ bán hàng, kho vận thành các container Docker kết nối tới các mảnh CSDL phân tán tương ứng.

Đối tượng hưởng lợi

mindmap
  root((Hệ thống CSDL Phân tán CTHS))
    Sinh viên & Giảng viên
      Tài liệu thực nghiệm chuẩn mực
      Mô hình phân mảnh toán học rõ ràng
      Kịch bản kiểm thử tương tranh thực tế
    Kỹ sư phần mềm & DBA
      Template DDL và script Linked Server
      Quy trình cấu hình Merge Replication
      Phương pháp xử lý lỗi 2PC và khóa SS2PL
    Doanh nghiệp Chuỗi Bán lẻ
      Cắt giảm 98% độ trễ giao dịch
      Hoạt động 24/7 không sợ mất mạng
      Tối ưu hóa chi phí hạ tầng IT
    Nhà nghiên cứu Khoa học
      Dữ liệu thực nghiệm phân tán
      Đánh giá hiệu năng thuật toán khóa
  • Sinh viên & Giảng viên CNTT: Tiếp cận một đồ án mẫu mực kết hợp hài hòa giữa lý thuyết đại số quan hệ phân tán (Primitive & Derived Fragmentation) và kỹ năng cấu hình thực chiến trên Microsoft SQL Server 2019.
  • Lập trình viên & Kỹ sư CSDL (DBA): Nắm vững quy trình xử lý lỗi thực tế: từ xung đột cổng mạng, phân quyền Linked Server an toàn, đến xử lý xung đột khóa giao dịch đa trạm.
  • Doanh nghiệp bán lẻ chuỗi: Sở hữu một kiến trúc hệ thống đã được kiểm chứng tính khả thi, giúp cắt giảm chi phí bản quyền và hạ tầng mạng đắt đỏ mà vẫn đảm bảo hiệu năng vượt trội.
  • Nhà nghiên cứu: Nền tảng dữ liệu thực nghiệm để so sánh hiệu năng giữa các thuật toán điều khiển tương tranh và các giao thức cam kết phân tán (1PC, 2PC, 3PC).

Câu hỏi thường gặp

1. Yêu cầu phần cứng và môi trường mạng tối thiểu để triển khai hệ thống là gì?

Hệ thống yêu cầu mỗi máy chủ trạm có tối thiểu CPU 4 Cores, 8GB RAM, ổ cứng SSD và cài đặt Windows Server hoặc Windows 10/11 64-bit. Về mạng, các trạm cần được kết nối thông suốt qua mạng LAN nội bộ hoặc mạng riêng ảo VPN (như Radmin VPN) với cổng TCP 1433 được mở trên tường lửa và kích hoạt giao thức TCP/IP trong SQL Server Configuration Manager.

2. Khi đường truyền mạng giữa chi nhánh và trụ sở chính bị đứt, trạm chi nhánh có lập được hóa đơn không?

Có. Nhờ cơ chế phân mảnh ngang cục bộ, toàn bộ dữ liệu danh mục khách hàng, nhân viên, bảng giá và kho của chi nhánh đã nằm trực tiếp trên máy chủ trạm. Trạm vẫn thực hiện ghi nhận hóa đơn bán hàng và phiếu nhập kho bình thường vào CSDL cục bộ. Khi kết nối mạng phục hồi, tiến trình Merge Replication sẽ tự động đẩy toàn bộ giao dịch mới về máy chủ trung tâm.

3. Tại sao hệ thống lại chọn mức cô lập SERIALIZABLE thay vì READ COMMITTED?

Mức cô lập SERIALIZABLE kết hợp cùng giao thức SS2PL ngăn chặn hoàn toàn tất cả 4 hiện tượng bất thường trong xử lý tương tranh: Dirty Read, Non-repeatable Read, Phantom Read và Lost Update. Điều này đặc biệt quan trọng đối với ngành hàng tươi sống khi việc trừ tồn kho và hạch toán tài chính đòi hỏi độ chính xác tuyệt đối.

4. Nếu triển khai nhiều máy chủ SQL Server trên cùng một máy tính vật lý để thử nghiệm thì cần lưu ý gì?

Phải thiết lập các cổng TCP/IP khác nhau cho từng Instance (ví dụ: HNSERVER cổng 1433, TB1SERVER cổng 1434, ND1SERVER cổng 1435) trong mục IPAll của SQL Server Configuration Manager, đồng thời tạo các bí danh (Alias) hoặc chỉ định rõ cổng khi tạo Linked Server để tránh xung đột cổng dịch vụ.

5. Chi phí đầu tư và thời gian hoàn vốn (ROI) của giải pháp này ra sao?

Giải pháp tận dụng phiên bản SQL Server có sẵn và hạ tầng mạng VPN ảo miễn phí, giúp doanh nghiệp tiết kiệm từ 60% đến 80% chi phí đầu tư hạ tầng mạng so với giải pháp thuê kênh Leased Line riêng. Thời gian hoàn vốn đầu tư ước tính chỉ từ 4 đến 6 tháng nhờ cắt giảm thời gian gián đoạn vận hành và giảm thiểu thất thoát sai lệch kho bãi.


Kết luận

Đồ án "Xây dựng hệ thống cơ sở dữ liệu phân tán quản lý công ty thủy hải sản" đã giải quyết triệt để bài toán quản trị dữ liệu quy mô chuỗi bán lẻ đa chi nhánh. Thông qua việc kết hợp chặt chẽ giữa cơ sở lý thuyết phân mảnh ngang nguyên thủy - dẫn xuất và công nghệ Microsoft SQL Server 2019 Merge Replication, hệ thống chứng minh tính ưu việt với độ trễ xử lý cục bộ giảm hơn 98%, đảm bảo tính độc lập tác nghiệp 100% tại các chi nhánh ngay cả khi gặp sự cố mạng diện rộng, đồng thời duy trì tính toàn vẹn dữ liệu ACID tuyệt đối qua cơ chế khóa SS2PL và cam kết 2PC. Đây là tài liệu tham khảo kỹ thuật chuyên sâu và giải pháp thực tiễn có giá trị ứng dụng cao cho cả giới học thuật lẫn các doanh nghiệp đang tìm kiếm lời giải cho bài toán mở rộng hệ thống dữ liệu phân tán.