1.1 Bến Xe Miền Đông (BX Đ)
Bến Xe Miền Đông là một trong các bến xe lớn trong phạm vi TP.HCM cũng như cả nước, BXMĐ
cung cấp bến bãi, phục vụ bán vé cho hệ thống các nhà xe lớn như Kumho Samco Busline, Phương
Trang cùng các nhà xe khác đi các tỉnh, thành phố thuộc miền Trung, miền Bắc. Trong BXMĐ,
các nhà xe có thể tham gia dưới hai hình thức:
1. Các nhà xe tự bán vé qua các quầy vé riêng, chỉ sử dụng bến bãi của BXMĐ (Nhà xe độc lập).
2. Các nhà xe sử dụng bến bãi và ủy quyền việc bán vé cho BXMĐ (Nhà xe ủy thác).
Trong quá trình vận hành, BXMĐ được yêu cầu cần phải nắm rõ các thông tin: Thông tin liên hệ của
các nhà xe; Thông tin vận hành của các nhà xe, bao gồm các tuyến đường của nhà xe đang hoạt
động, giá vé, v.v ; Danh sách các xe của từng nhà xe, bao gồm thông tin ra vào bến, biển số xe
v.v ; Thông tin các vé được bán, danh sách hành khách trên từng chuyến xe. BXMĐ đã phát triển
nhanh chóng về số lượng xe, số lượng nhà xe, cũng như số lượng hành khách của từng nhà xe dẫn
đến sự bùng nổ dữ liệu cần lưu trữ, xử lý bao gồm dữ liệu vé, giao dịch v.v ; Yêu cầu phải có các
giải pháp quản lý, cũng như các công nghệ mới áp dụng vào quá trình quản lý thông tin, cũng như
bán vé v.v ;
Vì thế việc áp dụng và xây dựng hệ thống cơ sở dữ liệu (CSDL) phân tán sẽ tiết kiệm được thời gian
truy xuất dữ liệu từ server.
8 trang |
Chia sẻ: Thục Anh | Ngày: 12/05/2022 | Lượt xem: 721 | Lượt tải: 1
Nội dung tài liệu Thiết kế hệ thống cơ sở dữ liệu phân tán trong kiosk bán vé tự động tại Bến xe Miền Đông, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
82
THIẾT KẾ HỆ THỐNG CƠ SỞ DỮ LIỆU PHÂN TÁN
TRONG KIOSK BÁN VÉ TỰ ĐỘNG TẠI BẾN XE MIỀN ĐÔN
Ngu ễn Phước i, Dương inh Cảnh, uỳnh h i Bả Trân
Khoa Công nghệ Thông tin, Trường Đại học Công nghệ TP. Hồ Chí Minh
GVHD Khang
TÓM TẮT
Cơ sở dữ liệu phân tán được sử dụng cho hệ thống bán v tự động tại bến xe giúp cho việc truy
xuất dữ liệu nhanh chóng, dễ dàng phân mục theo thời gian (tháng, năm để tiện lưu trữ và xử lý.
Từ khóa: Bán v , iosk, Phân tán, SQL.
1 Ệ
1.1 Bến Xe Miền Đông (BX Đ)
Bến Xe Miền Đông là một trong các bến xe lớn trong phạm vi TP.HCM cũng như cả nước, BXMĐ
cung cấp bến bãi, phục vụ bán vé cho hệ thống các nhà xe lớn như Kumho Samco Busline, Phương
Trang cùng các nhà xe khác đi các tỉnh, thành phố thuộc miền Trung, miền Bắc. Trong BXMĐ,
các nhà xe có thể tham gia dưới hai hình thức:
1. Các nhà xe tự bán vé qua các quầy vé riêng, chỉ sử dụng bến bãi của BXMĐ (Nhà xe độc lập).
2. Các nhà xe sử dụng bến bãi và ủy quyền việc bán vé cho BXMĐ (Nhà xe ủy thác).
Trong quá trình vận hành, BXMĐ được yêu cầu cần phải nắm rõ các thông tin: Thông tin liên hệ của
các nhà xe; Thông tin vận hành của các nhà xe, bao gồm các tuyến đường của nhà xe đang hoạt
động, giá vé, v.v; Danh sách các xe của từng nhà xe, bao gồm thông tin ra vào bến, biển số xe
v.v; Thông tin các vé được bán, danh sách hành khách trên từng chuyến xe. BXMĐ đã phát triển
nhanh chóng về số lượng xe, số lượng nhà xe, cũng như số lượng hành khách của từng nhà xe dẫn
đến sự bùng nổ dữ liệu cần lưu trữ, xử lý bao gồm dữ liệu vé, giao dịch v.v; Yêu cầu phải có các
giải pháp quản lý, cũng như các công nghệ mới áp dụng vào quá trình quản lý thông tin, cũng như
bán vé v.v;
Vì thế việc áp dụng và xây dựng hệ thống cơ sở dữ liệu (CSDL) phân tán sẽ tiết kiệm được thời gian
truy xuất dữ liệu từ server.
1.2 Hệ thống quản lý thông tin, bán và kiểm soát vé tại BX Đ
Hiện nay, tuy BXMĐ đã có máy chủ riêng cùng các phần mềm quản lý các công đoạn, tiêu biểu
như phần mềm quản lý ra vào bến nhưng dữ liệu vẫn không được quản lý tập trung, gây khó khăn
cho quá trình quản lý, thống kê. Với việc xây dựng hệ thống CSDL phân tán, BXMĐ có thể quản lý
được dễ dàng hơn các nhà xe ủy thác và nhà xe độc lập tham gia vào BXMĐ.
83
Hệ thống Quản lý thông tin nhà xe, thông tin hoạt động nhà xe và bán, kiểm soát vé tại BXMĐ ra
đời nhằm giải quyết các vấn đề trong quá trình vận hành BXMĐ, có thể kể đến như giải pháp lưu
trữ dữ liệu phân tán, hỗ trợ bán và kiểm soát vé, giúp giải tỏa nhân công, thời gian và chi phí trong
quá trình quản lý thông tin, bán vé và kiểm soát vé, bao gồm các nhóm nghiệp vụ sau:
1. Đặt chỗ, bán vé qua các kênh bán vé, bao gồm: Máy bán vé tự động, nhân viên bán vé và
website đặt vé online; thực hiện thanh toán qua các hình thức: thanh toán qua ví điện tử,
thanh toán bằng tiền mặt, thanh toán bằng thẻ ngân hàng;
2. Quản lý thông tin liên hệ của nhà xe; Quản lý thông tin vận hành của từng nhà xe, bao gồm
tuyến đường, giá vé, thông tin ra vào bến; Quản lý vé và hành khách của từng nhà xe.
Sơ đồ hệ thống được biểu diễn như hình bên dưới:
nh 1.1. Sơ đồ hệ thống BXMĐ
Trong hệ thống của BXMĐ, có hai loại nhà xe tham gia là nhà xe độc lập, và nhà xe ủy thác, mỗi
loại nhà xe có phương thức kết nối vào hệ thống khác nhau. Cụ thể, các cổng đặt vé (Máy bán vé,
Nhân viên, Website) thao tác dữ liệu qua API BXMĐ, API này có thể lấy dữ liệu từ API của nhà xe độc
lập, với thông tin kết nối được lưu trên CSDL của BXMĐ, mặt khác, dữ liệu của các nhà xe ủy thác
được lưu trên CSDL được quản lý bởi BXMĐ, các CSDL này được phân tán trên các máy khác nhau
hoặc đặt cùng một máy chủ đều được; quá trình thanh toán được diễn ra ngay trên các máy trạm,
sau đó tùy vào kết quả thanh toán mà máy trạm gửi kết quả về API BXMĐ để xử lý. Mô tả chi tiết
các thành phần:
84
– Các dịch vụ thanh toán: Là máy chủ của các hình thức thanh toán (Ví điện tử, thanh toán
bằng thẻ ngân hàng) có nhiệm vụ xử lý thanh toán, trả kết quả cho các hình thức thanh toán
tương ứng.
– Kiosk bán vé tự động: Máy bán vé tự động được đặt tại BXMĐ, gồm các mô- đun phần cứng:
Máy tính có cấu hình tối thiểu: Hệ điều hành: Window 10, CPU: Intel Celeron J4005, RAM:
2GB, Ổ cứng: 50GB, 2 ngõ ra màn hình (HDMI), 3 cổng USB A, Kết nối internet (Wifi hoặc cổng
LAN); 1 màn hình (Không có cảm ứng); 1 màn hình (Có cảm ứng); Máy POS thanh toán thẻ
ngân hàng; Thiết bị đọc tiền mặt; Máy in nhiệt.
– Nhân viên bán vé: Nhân viên bán vé BXMĐ thao tác trên phần mềm bán vé dành cho nhân
viên.
– Website đặt vé: Khách hàng thao tác trên website đặt vé để tiến hành đặt vé và thanh toán
online.
– API BXMĐ: Cổng giao tiếp chính của hệ thống.
– API Nhà xe độc lập: Hệ thống API của các nhà xe độc lập.
– Database BXMĐ: Chứa thông tin chung của hệ thống.
– Database Nhà xe ủy thác: Chứa thông tin vận hành nhà xe.
– Máy chủ: Cloud server hoăc máy chủ vật lý, đáp ứng: Hệ điều hành: Windows server 2016,
CPU: Inter Xeon E5-2690 V4, RAM: 12GB, Ổ cứng: 1TB. Cài đặt các phần mềm: IIS, SQL Server
2014, FTP Server. Phần mềm bán vé cho nhân viên: Máy tính có cấu hình tối thiểu: Hệ điều
hành: Windows 10, CPU: Intel Celeron J4005, RAM: 2GB, Ổ cứng: 50GB, Kết nối internet (Wifi
hoặc cổng LAN). Hệ thống gồm 4 Kiosk bán vé tham gia, với dữ liệu thật của một nhà xe
được lấy từ phần mềm bán vé đang vận hành thực tế. Hệ thống vận hành đạt được các mục
tiêu đặt ra như giảm tải mỗi lần truy vấn dữ liệu, cải thiện tốc độ, hiệu năng, nâng cao chất
lượng dịch vụ của nhà xe.
2 Ư N N N CỨ V CÁC CÔN N Ệ
2.1 Ph n n trong CSDL
Phân v ng bảng là một cách để chia một bảng lớn thành các phần nhỏ hơn, dễ quản l hơn mà
không phải tạo các bảng riêng biệt cho mỗi phần. Dữ liệu trong bảng được phân v ng được lưu
trữ vật l trong các nhóm hàng được gọi là phân v ng và mỗi phân v ng có thể được truy cập và
duy trì riêng.
Ph n n ọc
Phân tán dọc của một quan hệ dựa trên phép chiếu để phân chia các thuộc tính vào các nhóm
khác nhau. Sự phân mảnh này sẽ đúng đắn nếu mỗi thuộc tính được ánh xạ vào ít nhất một phân
mảnh và phải đảm bảo tính tái thiết bằng cách kết nối các phân mảnh lại với nhau.
AAttr(R), i[l,n]: AAttr(Ri), với Attr(R) là tập thuộc tính của R.
85
Phân tán ngang
Phân tán ngang là chia một quan hệ theo các bộ, mỗi phân v ng là một tập con các bộ.
uR, i[l,n]: uRi
Chức năng ph n ng
Chức năng phân v ng xác định cách phân v ng dữ liệu dựa trên cột phân v ng. Hàm phân v ng
không xác định rõ ràng các phân v ng và hàng nào được đặt trong mỗi phân v ng. Thay vào đó,
hàm phân v ng chỉ định các giá trị biên, các điểm giữa các phân v ng. Tổng số phân v ng luôn là
là tổng số giá trị biên +1.
Minh họ chức năng phân tán
nh 2.1. Phân tán dọc nh 2.2. Phân tán ngang
Phạ i ph n n
Có phạm vi phân tán: Phân tán trái có giá trị biên thuộc phân v ng bên trái và phân tán phải thì
ngược lại.
nh 2.3. Phạm vi phân tán
2.2 CSDL r ng hệ hống
CSDL trên hệ thống tổ chức trên hệ quản trị SQL Server, gồm CSDL Bến Xe Miền Đông (QLC) và tập
hợp các CSDL Nhà xe ủy thác (NXUT), việc tách dữ liệu thành các CSDL khác nhau nhằm chuyên biệt
hóa dữ liệu, nâng cao hiệu năng xử lý; Đặc biệt, việc phân mỗi nhà xe ủy thác thành một CSDL
riêng nhằm phục vụ cho việc chuyển đổi hình thức tham gia của nhà xe tương ứng trong BXMĐ,
chẳng hạn chuyển từ hình thức ủy thác sang độc lập. CSDL lưu trữ và xử lý các nhóm thông tin khác
nhau, cụ thể:
86
CSDL QLC – Thông tin vận hành hệ thống
ưu trữ thông tin liên hệ các nhà xe, bao gồm tên, địa chỉ, số điện thoại, địa chỉ PI; ưu trữ thông
tin nhân cá nhân và tài khoản viên bán vé, nhân viên quản trị hệ thống; các tài khoản và thông tin
vận hành các máy bán vé tự động; ưu trữ thông tin vé, phiếu kiểm soát vé cho tất cả các nhà xe,
trong đó mỗi vé là vé được bán (đặt trong hệ thống); ưu trữ thông tin giao dịch bán vé; Xử lý dữ liệu
tương ứng qua các stored procedure.
CSDL BXUT – Thông tin vận hành nhà xe ủy thác
ưu trữ thông tin các tuyến đường, các thông tin liên quan đến tuyến đường, v và khách hàng; ưu
trữ thông tin chuyến, giá vé, tài xế, xe và các thông tin liên quan đến xe; Xử lý dữ liệu tương ứng qua
các stored procedure.
Với mỗi database khác nhau được tổ chức phân tán tại các máy chủ khác nhau, chia sẻ gánh nặng
về tài nguyên phần cứng tại các máy chủ. Mặt khác, dữ liệu tại mỗi CSDL có tính độc lập cao, tránh
tình trạng trùng lắp dữ liệu.
nh 2.3. Mô hình lưu trữ hệ thống quản l BXMĐ
2.3 Nhu cầu phân tán dữ liệu
Với số lượng nhà xe tham gia, kèm theo là lượng hành khách lớn, bình quân mỗi ngày BXMĐ phục
vụ 21.000 hành khách với hơn 1.100 lượt xe xuất bến; các ngày cao điểm lễ tết thì con số đó lên đến
60.000 hành khách và 1.800 lượt xe xuất bến, sự bùng nổ dữ liệu trong hệ thống là không thể tránh
khỏi. Các đối tượng có số lượng dữ liệu lớn trong hệ thống có thể kể đến như: Hành khách, Phiếu
kiểm soát, Giao dịch, Vé, Chuyến xe, Các thông tin vận hành nhà xe. Vì vậy cần có biện pháp giảm
tải áp lực truy xuất lên hệ thống phần cứng, đảm bảo tính sẵn sàng cho hệ thống.
2.4 Phân tán dữ liệu trong hệ thống
Để giải quyết vấn đề lưu trữ dữ liệu lớn nêu trên, các hình thức phân đoạn dữ liệu được đã được áp
dụng, nổi bật là hình thức phân đoạn ngang (theo các bộ dữ liệu) trên các quan hệ:
87
– Tại CSDL QLC: Ve (Vé), PhieuKiemSoat (Phiếu kiểm soát), GiaoDich (Giao dịch).
– Tại CSDL NXUT: Ve (Vé), Chuyen (Chuyến).
Với cách phân đoạn dữ liệu như nhau: theo tháng; mỗi phân đoạn là dữ liệu trong vòng một tháng
(cho tất cả các năm , với cách phân đoạn như trên, mỗi quan hệ trong CSDL sẽ bao gồm 12 phân
đoạn tương ứng với 12 tháng. Mặt khác, mỗi nhà xe ủy thác được quản lý bởi BXMĐ sẽ là một CSDL
riêng, CSDL này có cấu trúc như nhau, được đặt chung máy chủ tại BXMĐ hoặc phân tán tại máy
chủ khác.
3 ỰC N Ệ
Phần này mô tả quá trình thực nghiệm, bao gồm xây dựng hệ thống bán vé tự động, quản lý tập
trung và phân mảnh dữ liệu cho hệ thống bán vé tự động tại BXMĐ.
Mô tả quá trình thực hiện phân tán ngang tại các bảng
Như đã mô tả ở phần trên, tất cả các bảng trong hệ thống có cách phân đoạn ngang giống nhau,
dưới đây là ví dụ các bước cần làm trên SQL Server để thực hiện phân đoạn ngang trên bảng
CHUYEN tại CSDL Nhà xe ủy thác.
Áp dụng phân mảnh dữ liệu trên SQL Server
Tạo các filegroup cho 12 tháng của database đó để lưu file chứa dữ liệu của tháng tương ứng:
ALTER DATABASE NHAXEDB ADD FILEGROUP THANG1
Với mỗi filegroup tạo file để chứa dữ liệu, xác định vị trí lưu file từ bước này:
ALTER DATABASE NHAXEDB ADD FILE (NAME = N'TH1V', FILENAME =
'C:\PHANTAN\CHUYEN\THANG1C.ndf) TO FILEGROUP THANG1
Để phân tán theo tháng ta cần xác định các cột mốc thời gian có thể hiểu như là một mốc thời gian
mà dữ liệu có mốc thời gian đó sẽ được phân tán để lưu ở filegroup tương ứng. Ví dụ, 1 năm có 12
tháng, ta xác định được 12 cột mốc để phân tán dữ liệu và chia thành 12 file như trên, sau đó tạo
các partition function để xác định các biên dữ liệu:
CREATE PARTITION FUNCTION pfChuyen(int) AS RANGE RIGHT FOR VALUES (2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12);
Ở đây chúng ta có 11 range cho 12 tháng: 2->3, 3->4, 4->5, 5->6, 6->7, 7->8, 8->9, 9->10, 10->11,
11->12, 12-> 2. Với Range là Right thì các biên dữ liệu sẽ được tính là biên cuối, số 2 ở đầu tiên thì
được tính là biên cuối range của nó sẽ nhỏ hơn ngày có tháng là 3 (từ 1-3 đến 31-3), tương tự với
các tháng còn lại, còn tháng 1 sẽ được lưu vào vị trí trước tháng 2 và sau tháng 12 là một range. Với
Range là Left thì các biên dữ liệu sẽ được tính là biên đầu nên ta phải sửa lại values là {1, 2, 3, 4, 5 ,
88
6, 7, 8 , 9 , 10, 11}. Sau khi đã xác định được biên dữ liệu, tiếp theo ta xác định nơi lưu các dữ liệu
thuộc về mỗi biên cho các filegroup tương ứng:
CREATE PARTITION SCHEME psChuyens AS PARTITION pfChuyens TO (THANG1, THANG2, THANG3,
THANG4, THANG5, THANG6, THANG7, THANG8, THANG9, THANG10, THANG11, THANG12)
Cuối cùng tạo bảng mới trống dữ liệu để phân tán bảng đó:
CREATE TABLE [CHUYEN]([MACHUYEN] BIGINT PRIMARY KEY IDENTITY(1,1) NOT NULL, [NGAYCHAY]
DATE NOT NULL, [MATUYEN] CHAR(20) NOT NULL, [MAKHUNGGIO] CHAR(20) NOT NULL,
[MASODOGHE] CHAR(20) NOT NULL, [MABANGGIAVE] INT NOT NULL, [SERIDAU] NVARCHAR (100)
NULL, [TINHTRANG] TINYINT NOT NULL, [MATAIXE1] CHAR(20) NULL, [MATAIXE2] CHAR(20) NULL,
[MAXE] CHAR(20) NULL, [MALOAIXE] TINYINT NULL, [THANG] INT NULL) ON psChuyens([THANG]);
Các hình thức phân mảnh, phân tán nên trên giảm tải đáng kể áp lực truy vấn trên hệ thống, cụ thể
với phương pháp phân mảnh dữ liệu theo tháng, mỗi tháng ta chỉ thao tác trên một file group của
CSDL. Riêng với các nhà xe ủy thác, mỗi nhà xe tùy trường hợp dữ liệu có thể lưu trữ tại BXMĐ hoặc
dễ dàng dời sang máy chủ khác nếu có nhu cầu, chẳng hạn máy chủ tại BXMĐ quá tải hoặc nhà
xe có ý định tách riêng ra với BXMĐ.
4 Ư N P Á ỂN ĐỀ TÀI
4.1 Điểm mạnh
p dụng thành công mô hình phân tán cho hệ thống, tối ưu hóa được tài nguyên bộ nhớ cho máy
chủ, giảm tải đáng kể cho hệ thống với lượng truy xuất dữ liệu liên tục từ nhiều nhà xe khác nhau.
p dụng thành công Code cho việc soát v , liên kết được nhiều hình thức thanh toán khác nhau,
trang bị máy thanh toán tiền mặt có chức năng trả lại tiền thừa với đủ loại mệnh giá ( ND , tuy vậy
vẫn khuyến khích người d ng áp dụng hình thức phi tiền mặt bằng việc d ng thẻ ngân hàng và ví
điện tử. Xây dựng được core để gọi và phản hồi các PI cho ph p kết nối với các nhà xe đã có
phần mềm và CSD từ trước và muốn tham gia vào hệ thống bán v tại BXMĐ, tạo được sự hiệu
quả hơn trong việc vận hành nhà xe. Đối với những nhà xe ủy thác chưa có phần mềm thì chỉ cần
đăng k với BXMĐ và hệ thống sẽ tự tạo ra một cơ sở dữ liệu riêng cho ph p quản l mọi dữ liệu về
bán v cho nhà xe ủy thác.
4.2 Điểm cần khắc phục
Chưa thể lưu các file phân tán ở các máy chủ khác nhau do điều kiện nghiên cứu nhưng sẽ hoàn
thành nhanh chóng khi được trang bị phần cứng đầy đủ. Hệ thống phân tán vẫn chưa phân v ng
được đối với những dữ liệu đã có sẵn trên CSDL.
89
4.3 ướng phát triển
Hệ thống bán v xe tại BXMĐ sẽ được phát triển lên nền tảng web và app, dịch sang nhiều ngôn
ngữ để tạo sự thuận tiện cho khách người ngoại quốc. Xây dựng core cho ph p liên kết được với tất
cả nhà xe tại BXMĐ.
TÀI LIỆU THAM KHẢO
[1] https://docs.microsoft.com/en-us/sql/relational-databases/partitions
[2] https://www.cathrinewilhelmsen.net/2015/04/12/table-partitioning-in-sql-server/
[3] https://www.cathrinewilhelmsen.net/2015/04/19/table-partitioning-in-sql-server-partition-
switching/
Các file đính kèm theo tài liệu này:
- thiet_ke_he_thong_co_so_du_lieu_phan_tan_trong_kiosk_ban_ve.pdf