Giới thiệu dự án
Trong kỷ nguyên chuyển đổi số ngành bán lẻ và sản xuất thực phẩm, việc quản lý chuỗi cung ứng - phân phối đa chi nhánh đòi hỏi nền tảng công nghệ thông tin có tính sẵn sàng cao, thông suốt và tối ưu hóa độ trễ xử lý. Theo các báo cáo khảo sát giải pháp chuyển đổi số bán lẻ doanh nghiệp vừa và nhỏ (SMEs), hơn 65% hệ thống quản lý bán hàng truyền thống gặp sự cố nghẽn cổ chai truy xuất (bottleneck) hoặc quá tải máy chủ khi mở rộng từ 3 chi nhánh trở lên nếu sử dụng kiến trúc cơ sở dữ liệu tập trung đơn lẻ.
Dự án khóa luận tốt nghiệp "Ứng dụng cơ sở dữ liệu phân tán xây dựng hệ thống quản lý bán hàng tại Công Ty Kẹo Dừa Bến Tre" (Công ty TNHH SX Kinh Doanh Tổng Hợp Đông Á) được nghiên cứu và hiện thực hóa bởi nhóm sinh viên Khoa Công nghệ Thông tin, Trường Đại học Công nghiệp Thực phẩm TP.HCM (HUFI/HUIT). Dự án tập trung giải quyết bài toán vận hành chuỗi phân phối sản phẩm đặc sản quy mô lớn với hơn 1.000 nhân sự và 3 chi nhánh đại diện cho 3 miền Bắc, Trung, Nam.
+-----------------------------------+
| SERVER TRUNG TÂM (BẾN TRE) |
| (Publisher / Global Master) |
+-----------------+-----------------+
|
+-----------------------+-----------------------+
| Replication / Linked Server |
v v v
+-----------------------+ +-----------------------+ +-----------------------+
| SERVER CHI NHÁNH 1 | | SERVER CHI NHÁNH 2 | | SERVER CHI NHÁNH 3 |
| (MIỀN BẮC) | | (MIỀN TRUNG) | | (MIỀN NAM) |
| Subscriber Node | | Subscriber Node | | Subscriber Node |
+-----------------------+ +-----------------------+ +-----------------------+
Vấn đề thực tế và rào cản kỹ thuật
Trước khi triển khai dự án, quy trình nghiệp vụ bán buôn, bán lẻ, quản lý xuất nhập kho và giao nhận tại Công ty Đông Á tồn tại nhiều hạn chế:
- Nghẽn cổ chai đường truyền (Network Bottleneck): Các chi nhánh tại miền Bắc và miền Trung khi truy cập tập trung vào máy chủ tại Bến Tre qua mạng WAN phải chịu độ trễ truy vấn cao (trung bình 2.500ms - 4.200ms cho các truy vấn báo cáo đa bảng).
- Rủi ro Single Point of Failure (SPOF): Toàn bộ giao dịch tại các chi nhánh bị đình trệ khi máy chủ trung tâm gặp sự cố phần cứng, bảo trì hoặc gián đoạn kết nối Internet.
- Xử lý thủ công, phân tán nghiệp vụ: Quy trình kiểm kê hạn sử dụng (áp dụng chiết khấu 5% cho hàng cận hạn), thu hồi công nợ sau 48 giờ và luân chuyển nhân sự giữa các chi nhánh chưa được tự động hóa.
Mục tiêu dự án
- Phân tích và mô hình hóa toàn diện quy trình nghiệp vụ bán hàng, kho vận, giao nhận theo chuẩn UML 2.0 bằng công cụ Rational Rose.
- Thiết kế kiến trúc Cơ sở dữ liệu phân tán (Distributed Database Architecture) trên hệ quản trị Microsoft SQL Server 2012, áp dụng kỹ thuật phân mảnh ngang (Horizontal Fragmentation) theo chi nhánh địa lý kết hợp Replication và Linked Server.
- Phát triển hệ thống phần mềm nghiệp vụ WinForms trên nền tảng .NET (C#) tích hợp bộ điều khiển giao diện cao cấp DevExpress, đảm bảo tính thẩm mỹ và hiệu năng cao cho người dùng nội bộ.
- Xây dựng cổng thông tin điện tử (Web Portal) ứng dụng ASP.NET phục vụ khách hàng đặt hàng trực tuyến (B2B/B2C) với cơ chế kiểm tra điều kiện đơn hàng tối thiểu (20 thùng kẹo/đơn) và đồng bộ trực tiếp vào cơ sở dữ liệu.
- Đảm bảo tính toàn vẹn và nhất quán dữ liệu (ACID) trên môi trường phân tán thông qua hệ thống ràng buộc toàn vẹn, Trigger, Stored Procedure và Transaction phân tán.
Phạm vi và giới hạn
- Phạm vi triển khai: Áp dụng cho khối văn phòng điều hành, phòng kinh doanh, phòng kế toán, phòng vận tải và hệ thống kho hàng tại 3 chi nhánh chiến lược (Hà Nội - Miền Bắc, Đà Nẵng - Miền Trung, TP.HCM/Bến Tre - Miền Nam).
- Giới hạn kỹ thuật: Hệ thống tập trung tối ưu hóa cho mô hình cơ sở dữ liệu quan hệ đồng nhất (Homogeneous Distributed Database) dựa trên công nghệ Microsoft SQL Server.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng và giải pháp thay thế
| Tiêu chí kỹ thuật |
Cơ sở dữ liệu tập trung (Legacy) |
Giải pháp SaaS Cloud (KiotViet, MISA) |
Hệ thống CSDL phân tán của Đề tài |
| Vị trí lưu trữ dữ liệu |
Duy nhất tại 1 máy chủ trung tâm |
Multi-tenant Cloud Server |
Phân mảnh cục bộ tại từng Server chi nhánh |
| Độ trễ truy vấn cục bộ |
Cao (phụ thuộc 100% băng thông WAN) |
Trung bình (phụ thuộc kết nối Internet) |
Rất thấp (truy xuất trực tiếp trên LAN nội bộ) |
| Khả năng tự trị (Autonomy) |
Không có (Mất mạng = Dừng làm việc) |
Hạn chế (Offline mode chỉ lưu tạm) |
Hoàn toàn độc lập xử lý giao dịch tại chi nhánh |
| Kiểm soát quy tắc đặc thù |
Khó tùy biến theo logic riêng |
Cấu hình đóng theo mẫu có sẵn |
Tùy biến sâu (chiết khấu date, nợ 48h, Linked Server) |
| Chi phí hạ tầng máy chủ |
Cần máy chủ trung tâm cực lớn |
Trả phí thuê bao định kỳ theo năm |
Tận dụng phần cứng máy chủ mức trung bình |
Ưu tiên yêu cầu theo mô hình MoSCoW
- Must have (Bắt buộc): Phân tán bảng
DONDATHANG, CHITIETDONDATHANG, KHOHANG_SANPHAM theo 3 chi nhánh; Giao dịch luân chuyển nhân sự giữa các chi nhánh qua Linked Server; Tự động cập nhật số lượng tồn kho khi xuất/nhập.
- Should have (Nên có): Thống kê doanh thu theo năm của từng chi nhánh với biểu đồ trực quan DevExpress; Phân quyền người dùng theo Role (Admin, Kế toán, Kho, Bán hàng).
- Could have (Có thể có): Cổng đặt hàng ASP.NET tự động xác thực công nợ đại lý cấp 1; Cảnh báo hàng cận hạn sử dụng.
- Won't have (Chưa thực hiện đợt này): Tích hợp cổng thanh toán trực tuyến quốc tế (Visa/Mastercard) và ứng dụng di động Native (iOS/Android).
Thiết kế hệ thống
Kiến trúc hệ thống và ngăn xếp công nghệ (Technology Stack)
Hệ thống được thiết kế theo mô hình kiến trúc 3 lớp (3-Tier Architecture) giúp phân tách rõ ràng trách nhiệm giữa các tầng:
+-------------------------------------------------------------+
| PRESENTATION LAYER (GUI) |
| - WinForms (.NET Framework 4.7.2 + DevExpress v18.2) |
| - Web Portal (ASP.NET C# Web Application) |
+------------------------------+------------------------------+
|
+------------------------------v------------------------------+
| BUSINESS LOGIC & DATA TRANSFER OBJECTS (BLL / DTO) |
| - Business Entities, Validation Rules, Transaction Manager|
+------------------------------+------------------------------+
|
+------------------------------v------------------------------+
| DATA ACCESS LAYER (DAL) |
| - ADO.NET Connection Providers, Linked Server Query Exec |
+------------------------------+------------------------------+
|
+------------------------------v------------------------------+
| DISTRIBUTED DATA STORAGE LAYER |
| - Microsoft SQL Server 2012 Enterprise |
| - SQL Server Agent (Publication & Subscription) |
| - Linked Servers Configuration (LINK1, LINK2, LINK3) |
+-------------------------------------------------------------+
- Môi trường phát triển: Microsoft Visual Studio 2017.
- Ngôn ngữ lập trình: C# (.NET Framework), T-SQL (Transact-SQL).
- Công cụ mô hình hóa: Rational Rose Enterprise Edition (UML).
- Bộ công cụ UI: DevExpress WinForms Controls (Ribbon Control, GridControl, ChartControl).
- Hệ quản trị CSDL: Microsoft SQL Server 2012 Management Studio (SSMS).
Thiết kế Cơ sở dữ liệu và Phân mảnh
Cơ sở dữ liệu toàn cục bao gồm các thực thể: NHANVIEN, CHINHANH, SANPHAM, KHACHHANG, DONDATHANG, CHITIETDONDATHANG, PHIEUNHAPNCC, CHITIETPHIEUNHAPNCC, PHIEUXUATKHO, CHITIETPHIEUXUAT, PHIEUGIAO, KHOHANG_SANPHAM.
-- Cấu trúc bảng Đơn đặt hàng toàn cục
CREATE TABLE DONDATHANG (
MADDH VARCHAR(10) NOT NULL PRIMARY KEY,
NGAYLAP DATETIME NOT NULL,
TONGTIEN DECIMAL(18,2) DEFAULT 0,
TINHTRANG NVARCHAR(50),
MAKH VARCHAR(10) NOT NULL,
MANV VARCHAR(10) NOT NULL,
MACN VARCHAR(10) NOT NULL,
CONSTRAINT FK_DDH_CHINHANH FOREIGN KEY (MACN) REFERENCES CHINHANH(MACN)
);
Chiến lược phân tán dữ liệu:
- Phân mảnh ngang chính (Primary Horizontal Fragmentation): Bảng
NHANVIEN, DONDATHANG, PHIEUNHAPNCC, PHIEUXUATKHO, PHIEUGIAO được phân mảnh dựa trên vị từ MACN = 'CN01' (Miền Bắc), MACN = 'CN02' (Miền Trung), MACN = 'CN03' (Miền Nam).
- Phân mảnh ngang dẫn xuất (Derived Horizontal Fragmentation): Bảng
CHITIETDONDATHANG được phân mảnh theo khóa ngoại MADDH liên kết với bảng DONDATHANG.
- Nhân bản toàn phần (Full Replication): Bảng danh mục
SANPHAM, CHINHANH, BANGGIA được nhân bản đồng nhất tới tất cả các Server chi nhánh để tăng tốc độ truy vấn tham chiếu (Lookup Queries).
CSDL TOÀN CỤC (GLOBAL DB)
|
+------------------------+------------------------+
| | |
v v v
+-----------------+ +-----------------+ +-----------------+
| PHÂN MẢNH 1 | | PHÂN MẢNH 2 | | PHÂN MẢNH 3 |
| (Miền Bắc) | | (Miền Trung) | | (Miền Nam) |
| MACN = 'CN01' | | MACN = 'CN02' | | MACN = 'CN03' |
+-----------------+ +-----------------+ +-----------------+
Thiết kế ràng buộc toàn vẹn (Integrity Constraints)
- Ràng buộc liên bộ, liên quan hệ: Mỗi đơn đặt hàng bắt buộc phải có ít nhất một chi tiết đơn đặt hàng:
$$\forall t \in \text{DONDATHANG}, \exists s \in \text{CHITIETDONDATHANG} : t.\text{MADDH} = s.\text{MADDH}$$
- Ràng buộc thời gian: Ngày giao hàng trên phiếu giao luôn lớn hơn hoặc bằng ngày lập đơn hàng:
$$\forall t \in \text{PHIEUGIAO}, \exists u \in \text{DONDATHANG} : t.\text{MADDH} = u.\text{MADDH} \land t.\text{NGAYGIAO} \ge u.\text{NGAYLAP}$$
- Ràng buộc thuộc tính tổng hợp: Số lượng tồn kho của một sản phẩm bằng tổng số lượng nhập trừ đi tổng số lượng xuất.
Phương pháp luận phát triển (Methodology)
Dự án áp dụng mô hình phát triển phần mềm theo quy trình lặp dựa trên khung phân tích thiết kế hướng đối tượng (OOAD) kết hợp đánh giá kiểm thử liên tục:
- Giai đoạn 1 (Tuần 1 - 3): Khảo sát thực địa tại Công ty Đông Á (Bến Tre), thu thập 100% biểu mẫu thực tế (Hóa đơn GTGT, Phiếu xuất kho, Bảng báo giá), xác định 8 quy trình nghiệp vụ cốt lõi.
- Giai đoạn 2 (Tuần 4 - 7): Xây dựng sơ đồ Use Case, Activity Diagram, Sequence Diagram và Class Diagram trên Rational Rose; chuẩn hóa dữ liệu quan hệ (3NF).
- Giai đoạn 3 (Tuần 8 - 12): Thiết lập môi trường mạng cục bộ ảo hóa, cấu hình SQL Server Replication, thiết lập Linked Servers, viết Trigger/Stored Procedure và lập trình giao diện WinForms/Web.
- Giai đoạn 4 (Tuần 13 - 16): Kiểm thử tích hợp phân tán, đo lường benchmark tải và đánh giá nghiệm thu.
Implementation và kết quả
Quy trình phát triển và hiện thực kỹ thuật
1. Cấu hình phân tán với SQL Server Replication & Linked Server
Hệ thống sử dụng cơ chế Transactional Replication kết hợp SQL Server Agent. Server trung tâm đóng vai trò Publisher & Distributor, trong khi các Server tại 3 chi nhánh đóng vai trò Subscribers.
Để liên kết dữ liệu giữa các máy chủ chi nhánh mà không cần thông qua Publisher cho các truy vấn tra cứu chéo, cơ chế Linked Server được cấu hình trên từng phân mảnh:
-- Cấu hình Linked Server kết nối giữa Server Chi Nhánh 1 và Server Chi Nhánh 2
EXEC sp_addlinkedserver
@server = N'LINK_CN2',
@srvproduct = N'',
@provider = N'SQLNCLI',
@datasrc = N'192.168.1.102\SQLSERVER_CN2';
EXEC sp_addlinkedsrvlogin
@rmtsrvname = N'LINK_CN2',
@useself = N'False',
@locallogin = NULL,
@rmtuser = N'sa_distrib',
@rmtpassword = N'P@ssw0rdSecure!';
2. Xử lý nghiệp vụ phân tán bằng Stored Procedure và Trigger
Trigger tự động cập nhật tồn kho khi nhập hàng
Khi kho hàng nhận sản phẩm từ nhà cung cấp, Trigger dưới đây sẽ kiểm tra sự tồn tại của sản phẩm trong kho và tự động tăng số lượng tồn thực tế:
CREATE TRIGGER trg_CapNhatTonKho_NhapHang
ON CHITIETPHIEUNHAPNCC
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
-- Cập nhật số lượng tồn nếu sản phẩm đã có trong kho
UPDATE K
SET K.SOLUONGTON = K.SOLUONGTON + I.SOLUONG
FROM KHOHANG_SANPHAM K
INNER JOIN INSERTED I ON K.MASP = I.MASP AND K.MAKHO = I.MAKHO;
-- Thêm mới bản ghi kho nếu sản phẩm lần đầu tiên nhập vào kho này
INSERT INTO KHOHANG_SANPHAM (MAKHO, MASP, SOLUONGTON)
SELECT I.MAKHO, I.MASP, I.SOLUONG
FROM INSERTED I
WHERE NOT EXISTS (
SELECT 1 FROM KHOHANG_SANPHAM K
WHERE K.MASP = I.MASP AND K.MAKHO = I.MAKHO
);
END;
Stored Procedure điều chuyển nhân viên giữa các chi nhánh (Distributed Transaction)
Khi điều chuyển một nhân viên từ chi nhánh hiện tại sang chi nhánh khác, hệ thống phải đảm bảo nhân viên được thêm mới thành công ở Server chi nhánh đích trước khi xóa hoặc đánh dấu chuyển đổi ở Server chi nhánh gốc:
CREATE PROCEDURE sp_ChuyenChiNhanhNhanVien
@MaNV VARCHAR(10),
@MaCN_Moi VARCHAR(10),
@TenLinkedServer VARCHAR(50)
AS
BEGIN
SET XACT_ABORT ON;
BEGIN DISTRIBUTED TRANSACTION;
DECLARE @HoTen NVARCHAR(50), @DiaChi NVARCHAR(100), @SDT VARCHAR(15), @Luong DECIMAL(18,2);
-- 1. Lấy thông tin nhân viên tại chi nhánh hiện tại
SELECT @HoTen = HOTEN, @DiaChi = DIACHI, @SDT = SODIENTHOAI, @Luong = LUONG
FROM NHANVIEN
WHERE MANV = @MaNV;
-- 2. Thêm nhân viên sang chi nhánh mới qua Linked Server
DECLARE @SQL NVARCHAR(MAX);
SET @SQL = 'INSERT INTO ' + QUOTENAME(@TenLinkedServer) + '.QLBH_DONG_A.dbo.NHANVIEN (MANV, HOTEN, DIACHI, SODIENTHOAI, LUONG, MACN, TRANGTHAI) ' +
'VALUES (@pMaNV, @pHOTEN, @pDiaChi, @pSDT, @pLuong, @pMACN, N''Đang làm việc'')';
EXEC sp_executesql @SQL,
N'@pMaNV VARCHAR(10), @pHOTEN NVARCHAR(50), @pDiaChi NVARCHAR(100), @pSDT VARCHAR(15), @pLuong DECIMAL(18,2), @pMACN VARCHAR(10)',
@MaNV, @HoTen, @DiaChi, @SDT, @Luong, @MaCN_Moi;
-- 3. Cập nhật trạng thái ở chi nhánh gốc thành Đã chuyển
UPDATE NHANVIEN
SET TRANGTHAI = N'Đã chuyển sang ' + @MaCN_Moi
WHERE MANV = @MaNV;
COMMIT TRANSACTION;
END;
3. Xử lý tầng giao tiếp dữ liệu (Data Access Layer) trên C# WinForms
Tầng Data Access Layer kết nối linh hoạt tới Database cục bộ của chi nhánh dựa trên cấu hình phiên đăng nhập:
public class DonDatHangDAL
{
private readonly string _connectionString;
public DonDatHangDAL(string connectionString)
{
_connectionString = connectionString;
}
public bool InsertDonDatHang(DonDatHangDTO ddh, List<ChiTietDonDatHangDTO> chiTietList)
{
using (SqlConnection conn = new SqlConnection(_connectionString))
{
conn.Open();
using (SqlTransaction trans = conn.BeginTransaction())
{
try
{
string sqlDDH = @"INSERT INTO DONDATHANG (MADDH, NGAYLAP, TONGTIEN, TINHTRANG, MAKH, MANV, MACN)
VALUES (@MADDH, @NGAYLAP, @TONGTIEN, @TINHTRANG, @MAKH, @MANV, @MACN)";
using (SqlCommand cmd = new SqlCommand(sqlDDH, conn, trans))
{
cmd.Parameters.AddWithValue("@MADDH", ddh.MaDDH);
cmd.Parameters.AddWithValue("@NGAYLAP", ddh.NgayLap);
cmd.Parameters.AddWithValue("@TONGTIEN", ddh.TongTien);
cmd.Parameters.AddWithValue("@TINHTRANG", ddh.TinhTrang);
cmd.Parameters.AddWithValue("@MAKH", ddh.MaKH);
cmd.Parameters.AddWithValue("@MANV", ddh.MaNV);
cmd.Parameters.AddWithValue("@MACN", ddh.MaCN);
cmd.ExecuteNonQuery();
}
string sqlCT = @"INSERT INTO CHITIETDONDATHANG (MADDH, MASP, SOLUONG, DONGIA, THANHTIEN)
VALUES (@MADDH, @MASP, @SOLUONG, @DONGIA, @THANHTIEN)";
foreach (var item in chiTietList)
{
using (SqlCommand cmdCT = new SqlCommand(sqlCT, conn, trans))
{
cmdCT.Parameters.AddWithValue("@MADDH", ddh.MaDDH);
cmdCT.Parameters.AddWithValue("@MASP", item.MaSP);
cmdCT.Parameters.AddWithValue("@SOLUONG", item.SoLuong);
cmdCT.Parameters.AddWithValue("@DONGIA", item.DonGia);
cmdCT.Parameters.AddWithValue("@THANHTIEN", item.ThanhTien);
cmdCT.ExecuteNonQuery();
}
}
trans.Commit();
return true;
}
catch (Exception)
{
trans.Rollback();
throw;
}
}
}
}
}
Kiểm thử và đánh giá hiệu năng (Testing & Validation)
Kịch bản kiểm thử (Test Scenarios)
Đề tài đã tiến hành kiểm thử trên môi trường 4 máy chủ vật lý độc lập kết nối qua hạ tầng mạng mô phỏng độ trễ WAN:
- Kịch bản 1: Kiểm thử tính tự trị cục bộ (Local Autonomy): Ngắt kết nối mạng Internet giữa Server Miền Bắc và Server Trung Tâm Bến Tre. Nhân viên miền Bắc vẫn tiến hành tạo đơn hàng, lập phiếu xuất kho và in hóa đơn bình thường. Dữ liệu tự động đồng bộ về Server Trung Tâm ngay khi kết nối được tái lập.
- Kịch bản 2: Kiểm thử tính toàn vẹn giao dịch phân tán (Distributed Consistency): Thực hiện chuyển 50 nhân viên đồng thời qua Linked Server; 100% bản ghi được bảo toàn dữ liệu, không phát sinh tình trạng trùng lặp hoặc mất mát khóa ngoại.
Kết quả đo lường hiệu năng (Performance Benchmarks)
| Thao tác nghiệp vụ |
CSDL tập trung (ms) |
CSDL phân tán (ms) |
Tỷ lệ cải thiện (%) |
| Tạo mới Đơn đặt hàng (10 items) |
2.150 ms |
185 ms |
Giảm 91.4% độ trễ |
| Tra cứu tồn kho tại chi nhánh |
1.840 ms |
65 ms |
Giảm 96.5% độ trễ |
| Tra cứu tồn kho toàn quốc (Linked Server) |
2.900 ms |
540 ms |
Giảm 81.3% độ trễ |
| Xuất báo cáo doanh thu năm tại chi nhánh |
4.600 ms |
320 ms |
Giảm 93.0% độ trễ |
| Thời gian đồng bộ nền Replication |
N/A |
< 1.200 ms |
Đạt thời gian thực |
Thời gian phản hồi truy vấn (ms) - Càng thấp càng tốt
CSDL Tập trung: [██████████████████████████████] 2.150 ms
CSDL Phân tán : [██] 185 ms (Nhanh hơn 11.6 lần)
Đổi mới và đóng góp
- Ứng dụng thành công lý thuyết CSDL phân tán vào thực tiễn ngành đặc sản truyền thống: Dự án chứng minh rằng việc áp dụng công nghệ phân tán không chỉ dành cho các tập đoàn tài chính/ngân hàng mà hoàn toàn khả thi và mang lại hiệu quả kinh tế cao cho các doanh nghiệp sản xuất - thương mại truyền thống tại Việt Nam.
- Kiến trúc phân mảnh lai linh hoạt: Kết hợp giữa phân mảnh ngang nguyên thủy cho các bảng nghiệp vụ phát sinh thường xuyên theo vùng miền và nhân bản toàn phần cho các bảng danh mục chung, giúp loại bỏ 95% các truy vấn phân tán phức tạp không cần thiết.
- Chuẩn hóa quy trình nghiệp vụ đặc thù: Đóng gói thành công các quy tắc nghiệp vụ thực tế của Công ty Đông Á vào các Stored Procedure/Trigger tự động (quy tắc áp dụng chiết khấu 5% cho hàng cận date, chặn nợ quá hạn 48 giờ, xác thực quyền truy cập theo từng chi nhánh).
Ứng dụng thực tế và triển khai
Kịch bản sử dụng thực tế (Use Case Scenarios)
- Nghiệp vụ Bán buôn tại Chi nhánh: Đại lý miền Trung đến chi nhánh Đà Nẵng đặt mua 100 thùng kẹo dừa dẻo và 50 thùng kẹo chuối. Nhân viên thao tác trên phần mềm WinForms: hệ thống kiểm tra tồn kho tại chỗ trong 0.05 giây, tạo hóa đơn GTGT, trừ kho tự động và phát hành phiếu giao hàng.
- Nghiệp vụ Đặt hàng B2B Online: Khách hàng sỉ từ Hà Nội truy cập website ASP.NET, đưa vào giỏ hàng 30 thùng kẹo. Hệ thống kiểm tra điều kiện (đủ số lượng tối thiểu $\ge 20$ thùng), phân luồng đơn hàng tự động về Database phân mảnh Miền Bắc để bộ phận kho Hà Nội tiếp nhận xử lý ngay trong ngày.
LUỒNG XỬ LÝ ĐƠN HÀNG B2B ONLINE
|
Khách hàng đặt hàng trên Web Portal (ASP.NET)
|
Kiểm tra số lượng (>= 20 thùng?)
|
+----------------+----------------+
| |
ĐẠT YÊU CẦU KHÔNG ĐẠT
| |
Xác định vị trí địa lý Thông báo yêu cầu
(Khách hàng thuộc Miền Bắc) liên hệ hotline
|
Ghi nhận vào CSDL Phân Mảnh 1
(Server Chi Nhánh Miền Bắc)
|
Kho Miền Bắc xuất hàng & giao
Yêu cầu triển khai hệ thống (Deployment Requirements)
- Server Trung Tâm (Publisher): CPU Intel Xeon 8 cores, 32GB RAM, 500GB SSD NVMe, Windows Server 2016/2019, SQL Server 2012 Enterprise Edition trở lên.
- Server Chi Nhánh (Subscribers): CPU Intel Core i5/Xeon 4 cores, 16GB RAM, 256GB SSD, Windows Server 2012/2016, SQL Server 2012 Standard Edition.
- Máy trạm người dùng (Clients): CPU Intel Core i3, 4GB RAM, Windows 7/10/11, cài đặt .NET Framework 4.7.2.
- Băng thông mạng: Kết nối mạng nội bộ LAN 1Gbps; đường truyền Internet WAN tối thiểu 30Mbps IP tĩnh giữa các chi nhánh.
Phân tích chi phí - lợi ích (Cost-Benefit Analysis & ROI)
- Tiết kiệm chi phí đầu tư hạ tầng: Giảm 40% chi phí phần cứng so với việc mua sắm hệ thống máy chủ trung tâm cỡ lớn (Mainframe) chịu tải cho toàn quốc.
- Tăng năng suất vận hành: Thời gian lập hóa đơn và xử lý đơn hàng giảm từ 5 phút xuống còn dưới 30 giây mỗi đơn hàng; hạn chế 100% lỗi sót đơn hoặc trùng lặp mã đơn giữa các chi nhánh.
- Thời gian hoàn vốn ước tính (ROI): 6 - 8 tháng sau khi đưa vào vận hành chính thức nhờ tối ưu hóa quản lý tồn kho và giảm chi phí nhân sự đối soát thủ công.
Hạn chế và hướng phát triển
Hạn chế hiện tại
- Hệ thống phân tán phụ thuộc vào dịch vụ SQL Server Agent và giao thức RPC của Linked Server, yêu cầu cấu hình mạng và tường lửa (Firewall) chặt chẽ giữa các chi nhánh.
- Giao diện Web đặt hàng xây dựng trên nền tảng ASP.NET Web Forms cổ điển, chưa tối ưu hóa hoàn toàn cho trải nghiệm trên thiết bị di động (Responsive UI).
- Chưa tích hợp cơ chế tự động cân bằng tải (Dynamic Load Balancing) khi một chi nhánh có lượng đơn hàng đột biến trong mùa lễ Tết.
Hướng phát triển tương lai
- Chuyển đổi sang kiến trúc Microservices: Tái cấu trúc tầng nghiệp vụ thành các RESTful Web API độc lập viết trên .NET 8 / ASP.NET Core, triển khai trên nền tảng Docker Container.
- Áp dụng giải pháp Caching phân tán: Tích hợp Redis Caching tại từng node chi nhánh để tối ưu hóa tốc độ xem danh mục sản phẩm và giỏ hàng trực tuyến.
- Phát triển Mobile App cho nhân viên giao hàng: Xây dựng ứng dụng di động đa nền tảng bằng Flutter/React Native hỗ trợ nhân viên giao vận quét mã QR/Barcode và ký nhận số hóa trực tiếp tại địa chỉ khách hàng.
Đối tượng hưởng lợi
+-------------------------------------------------------------------------+
| ĐỐI TƯỢNG HƯỞNG LỢI |
+--------------------+--------------------+-------------------------------+
| SINH VIÊN & | LẬP TRÌNH VIÊN | DOANH NGHIỆP |
| NGHIÊN CỨU SINH | & KỸ SƯ HỆ THỐNG | SẢN XUẤT & BÁN LẺ |
+--------------------+--------------------+-------------------------------+
| - Tham khảo đề tài | - Nắm vững kỹ thuật| - Mô hình tham chiếu chuyển |
| chuẩn mẫu CSDL | Linked Server | đổi số chuỗi chi nhánh |
| phân tán. | và Distributed | - Giảm 40% chi phí hạ tầng |
| - Học cách áp dụng | Transaction. | - Nâng cao năng lực cạnh |
| UML và 3-Tier. | - Pattern tối ưu | tranh và kiểm soát tồn kho |
| | DevExpress UI. | thời gian thực. |
+--------------------+--------------------+-------------------------------+
- Sinh viên và Học viên Công nghệ Thông tin: Nguồn tài liệu học thuật thực chiến, cung cấp đầy đủ từ cơ sở lý thuyết phân mảnh dữ liệu, thiết kế sơ đồ Use Case/Sequence Diagram bằng Rational Rose đến code mẫu thực thi Stored Procedure phân tán và kiến trúc phần mềm 3 tầng.
- Kỹ sư phần mềm và Quản trị CSDL (DBA): Nắm bắt các kỹ thuật xử lý Transaction phân tán trên SQL Server, cấu hình đồng bộ dữ liệu Replication an toàn và cách khắc phục lỗi thường gặp khi truy vấn qua Linked Server.
- Doanh nghiệp vừa và nhỏ (SMEs): Bộ khung kiến trúc và giải pháp công nghệ đã được chứng minh hiệu quả thực tế để hiện đại hóa hệ thống quản lý bán lẻ đa chi nhánh với chi phí hợp lý.
Câu hỏi thường gặp
1. Yêu cầu cấu hình phần cứng và phần mềm tối thiểu để triển khai hệ thống là gì?
Để triển khai hệ thống, mỗi chi nhánh cần tối thiểu 1 máy chủ chạy hệ điều hành Windows Server (2012 trở lên) hoặc Windows 10 Pro 64-bit, CPU 4 nhân, 16GB RAM, ổ cứng SSD 256GB và cài đặt Microsoft SQL Server 2012. Các máy trạm của nhân viên chỉ cần cấu hình văn phòng cơ bản (Core i3, 4GB RAM) có cài sẵn .NET Framework 4.7.2 để chạy ứng dụng WinForms.
2. Giới hạn mở rộng (Scalability Limits) của hệ thống và giải pháp khi mở thêm chi nhánh mới?
Hệ thống hiện tại được thiết kế tối ưu cho 3 chi nhánh địa lý. Khi công ty mở rộng thêm chi nhánh (ví dụ: Chi nhánh Miền Tây), DBA chỉ cần thực hiện 3 bước: (1) Thêm một Subscriber Node mới trên SQL Server Distributor, (2) Tạo Publication tương ứng với vị từ MACN = 'CN04', (3) Khởi tạo cấu hình Linked Server từ các chi nhánh khác trỏ tới Server mới mà không làm gián đoạn hoạt động của các chi nhánh đang chạy.
3. Làm thế nào để đảm bảo dữ liệu không bị xung đột khi hai chi nhánh cùng cập nhật một mặt hàng?
Đối với các dữ liệu đặc thù theo vùng (như Đơn đặt hàng, Phiếu xuất kho), mỗi chi nhánh toàn quyền quản lý dữ liệu trên phân mảnh của mình nên hoàn toàn không xảy ra xung đột ghi (Write Conflict). Đối với bảng danh mục sản phẩm và đơn giá chung, quyền cập nhật chỉ được cấp duy nhất cho Server Trung Tâm (Master/Publisher), các chi nhánh chỉ nhận dữ liệu đồng bộ dạng Read-Only thông qua cơ chế Transactional Replication.
4. Quy trình bảo trì và sao lưu (Backup/Restore) trên môi trường phân tán được thực hiện ra sao?
Hệ thống thiết lập chính sách sao lưu tự động qua SQL Server Agent Maintenance Plan: (1) Sao lưu toàn phần (Full Backup) định kỳ hàng tuần tại Server Trung Tâm, (2) Sao lưu vi sai (Differential Backup) hàng ngày tại tất cả các Server chi nhánh, (3) Sao lưu nhật ký giao dịch (Transaction Log Backup) mỗi 30 phút để đảm bảo khả năng khôi phục thảm họa với chỉ số RPO (Recovery Point Objective) dưới 30 phút.
5. Chi phí đầu tư dự kiến và thời gian hoàn vốn (ROI) cho một doanh nghiệp tương tự?
Tổng chi phí đầu tư ước tính dao động từ 150 - 250 triệu VNĐ (bao gồm bản quyền phần mềm, nâng cấp 3 máy chủ chi nhánh và triển khai hạ tầng mạng). Doanh nghiệp sẽ tối ưu hóa được chi phí nhân sự đối soát kho, triệt tiêu thất thoát hàng cận date nhờ chính sách tự động cảnh báo và rút ngắn thời gian xử lý đơn hàng, giúp đạt điểm hòa vốn và sinh lời (ROI) chỉ sau 6 đến 8 tháng vận hành.
Kết luận
Đồ án khóa luận tốt nghiệp "Ứng dụng cơ sở dữ liệu phân tán xây dựng hệ thống quản lý bán hàng tại Công Ty Kẹo Dừa Bến Tre" đã giải quyết toàn diện bài toán quản trị kinh doanh chuỗi cung ứng đa chi nhánh của Công ty TNHH SX Kinh Doanh Tổng Hợp Đông Á. Bằng việc kết hợp chặt chẽ giữa nền tảng lý thuyết CSDL phân tán vững chắc, phương pháp phân tích thiết kế hệ thống hướng đối tượng chuẩn mực UML và các công nghệ phát triển phần mềm hiện đại (.NET C#, DevExpress, SQL Server 2012), nhóm tác giả đã xây dựng thành công một giải pháp phần mềm hoàn chỉnh, có tính ứng dụng cao.
Hệ thống không chỉ giúp doanh nghiệp nâng cao 90% hiệu suất truy xuất dữ liệu, đảm bảo tính tự trị của từng chi nhánh mà còn mở ra hướng đi bền vững cho quá trình chuyển đổi số của các doanh nghiệp sản xuất truyền thống tại Việt Nam. Đây là tài liệu tham khảo kỹ thuật và học thuật giá trị cho sinh viên, kỹ sư phần mềm và các nhà quản lý công nghệ thông tin.