6. Cấu trúc luận văn
3.3.6. Nội dung thuật toán
Nạp chuỗi lệnh từ hàng đợi với cách sắp xếp FIFO. Mỗi Stack chứa một chuỗi lệnh của một giao dịch.
Sub ConcurrentProcessing(); For i=1 to 3 Queue.LoadTransaction() Stack(i) Next idSta ck=1; Do While idStack<=3 ch := Stack(idStack).GetCommand.Top(); If ch = lockR(x) Then
{Kiểm tra tình trạng khóa của khoản mục x}
If (LockStatus(x) = LockR) or (LockStatus = False) Then
ExecuteCommand ch; Stack(idStack).Remove ch;
End If {LockStatus}
End If {If lockR()}
If ch = lockW(x) Then
If (LockStatus(x) = False) Then ExecuteCommand ch;
Stack(idStack).Remove ch; Else
Rollback Transaction(idStack); End If
{LockStatus}
End If {If lockW()}
If ch <> lockR(x) and lockW(x) Then ExecuteCommand ch; Stack(idStack).Remove ch; End If
If Stack(idStack).IsEmpty = True Then
Queue.LoadTransaction() Stack(idStack);
End If
If Stack.AllOfStack.IsEmpty = True Then Exit Do
If idStack = 3 Then idStack = 1 Else idStack= idStack + 1 Loop
End Sub
3.3.7. Giao diện và các chức năng của chương trình
Đăng nhập:
Để đăng nhập, ngƣời sử dụng nhập các số thẻ và mã PIN hợp lệ tƣơng ứng nhƣ sau: Mã thẻ là: 1, 2 hoặc 3 – có số PIN: 111
Mã thẻ là: 4, 5 có số PIN: 222. Mã thẻ là: 6 có số PIN: 333
Hình 3.13: Giao diện đăng nhập máy ATM
Sau khi đăng nhập:
Hình 3.14: Giao diện sau khi đăng nhập máy ATM
Nhập số thẻ 1, 2 hoặc 3 Nhập số PIN tƣơng ứng 111, 222 hoặc 333 Nhấn nút Check-in để đăng nhập Nhấn nút Exit để thoát
Hình 3.15: Giao diện Bảng điều khiển máy ATM
Hình 3.16: Hiển thị quá trình xử lý
3.3.8. Quy trình kiểm thử chương trình
a. Kiểm tra giao dịch đọc dữ liệu của tài khoản:
Các giao dịch:
T-ATM0= lockR(Acc=1), read(Acc=1), unlockR(Acc=1), commit(Acc=1)
Kết quả từ bộ lập lịch:
R0(Acc1)
b. Kiểm tra hai giao dịch cùng đọc dữ liệu của một tài khoản:
Các giao dịch:
T-ATM0= lockR(Acc=1), read(Acc=1), unlockR(Acc=1), commit(Acc=1) T-ATM1= lockR(Acc=1), read(Acc=1), unlockR(Acc=1), commit(Acc=1)
Kết quả từ bộ lập lịch:
R0(Acc1) R1(Acc1)
c. Kiểm tra giao dịch rút tiền và đọc dữ liệu trên một tài khoản:
Các giao dịch:
T-ATM0= lockW(Acc=1), read(Acc=1), write(Acc=1), unlockW(Acc=1), commit
T-ATM1= lockR(Acc=1), read(Acc=1), unlockR(Acc=1), commit(Acc=1)
Kết quả từ bộ lập lịch:
R0(Acc1) W0(Acc1) R1(Acc1)
d. Kiểm tra hai giao dịch rút tiền trên một tài khoản:
Các giao dịch:
T-ATM0= lockW(Acc=1), read(Acc=1), write(Acc=1), unlockW(Acc=1), commit
T-ATM1= lockW(Acc=1), read(Acc=1), write(Acc=1), unlockW(Acc=1), commit
Kết quả từ bộ lập lịch:
e. Kiểm tra hai giao dịch chuyển tiền và rút tiền trên một tài khoản:
Các giao dịch:
T-ATM0= lockW(Acc=1), read(Acc=1), write(Acc=1), lockW(Acc=2),
read(Acc=2), write(Acc=2), unlockW(Acc=2), unlockW(Acc=1),
commit
T-ATM1= lockW(Acc=1), read(Acc=1), write(Acc=1), unlockW(Acc=1), commit
Kết quả từ bộ lập lịch:
R0(Acc1) W0(Acc1) R0(Acc2) W0(Acc2) R1(Acc1) W1(Acc1)
f. Kiểm tra hai giao dịch chuyển tiền của hai tài khoản cho nhau:
Các giao dịch:
T-ATM0= lockW(Acc=1), read(Acc=1), write(Acc=1), lockW(Acc=2), read(Acc=2), write(Acc=2), unlockW(Acc=2), unlockW(Acc=1), commit T-ATM1= lockW(Acc=2), read(Acc=2), write(Acc=2),
lockW(Acc=1), read(Acc=1), write(Acc=1), unlockW(Acc=1), unlockW(Acc=2), commit
Kết quả từ bộ lập lịch:
R0(Acc1) R1(Acc2) W0(Acc1) W1(Acc2) A0(Acc1) R1(Acc1) W1(Acc1)
g. Kiểm tra ba giao dịch chuyển tiền của ba tài khoản cho lẫn nhau:
Các giao dịch:
T-ATM0= lockW(Acc=1), read(Acc=1), write(Acc=1), lockW(Acc=2), read(Acc=2), write(Acc=2), unlockW(Acc=2), unlockW(Acc=1), commit T-ATM1= lockW(Acc=2), read(Acc=2), write(Acc=2),
lockW(Acc=3), read(Acc=3), write(Acc=3), unlockW(Acc=3), unlockW(Acc=2), commit
T-ATM2= lockW(Acc=3), read(Acc=3), write(Acc=3), lockW(Acc=1), read(Acc=1), write(Acc=1), unlockW(Acc=1), unlockW(Acc=3), commit
Kết quả từ bộ lập lịch:
R0(Acc1) R1(Acc2) R2(Acc3) W0(Acc1) W1(Acc2) W2(Acc3) A0(Acc1) A1(Acc2) R2(Acc1) W2(Acc1)
h. Kiểm tra 5 giao dịch thực hiện đồng thời:
Các giao dịch:
T-ATM0= lockW(Acc=1), read(Acc=1), write(Acc=1), lockW(Acc=2), read(Acc=2), write(Acc=2), unlockW(Acc=2), unlockW(Acc=1), commit T-ATM1= lockW(Acc=2), read(Acc=2), write(Acc=2),
lockW(Acc=3), read(Acc=3), write(Acc=3), unlockW(Acc=3), unlockW(Acc=2), commit T-ATM2= lockW(Acc=3), read(Acc=3), write(Acc=3),
lockW(Acc=1), read(Acc=1), write(Acc=1), unlockW(Acc=1), unlockW(Acc=3), commit T-ATM3= lockW(Acc=1), read(Acc=1), write(Acc=1), unlockW(Acc=1), commit
T-ATM4= lockW(Acc=2), read(Acc=2), write(Acc=2), unlockW(Acc=2), commit
Kết quả từ bộ lập lịch:
R1(Acc2) R2(Acc3) R0(Acc1) W1(Acc2) W2(Acc3) W0(Acc1) A1(Acc2) A2(Acc3) R0(Acc2) W0(Acc2) R4(Acc2) R3(Acc1) W4(Acc2) W3(Acc1)
KẾT LUẬN
1. Đánh giá kết quả
1.1.Kết quả đạt được
Qua thời gian thực hiện luận văn với đề tài “Tìm hiểu một số thuật toán
điều khiển tương tranh trong cơ sở dữ liệu phân tán” tôi đã tìm hiểu các kiến
thức về cơ sở dữ liệu phân tán, quản trị các giao dịch phân tán, các thuật toán điều khiển tƣơng tranh và vai trò của chúng, đồng thời đánh giá sơ bộ các thuật toán.
1.2.Nhận xét
a.Ưu điểm:
Cơ sở lý thuyết đƣợc cập nhật đầy đủ, diễn giải rõ ràng, phân tích cụ thể trƣớc khi tiến hành việc nghiên cứu sâu về kỹ thuật ứng dụng.
Nội dung tiềm hiểu là vấn đề cấp thiết hiện nay và có nhiều ứng dụng trên thực tế.
Xây dựng chƣơng trình mô phỏng hoạt động của hệ thống ATM đa ngân hàng.
b.Nhược điểm:
Chƣơng trình mô phỏng chƣa mang lại ứng dụng thực tiễn vì điều kiện cơ sở vật chất, nó chỉ giúp việc tìm hiểu các kỹ thuật điều khiển tƣơng tranh tốt hơn.
Chƣơng trình còn hạn chế về số lƣợng giao dịch và chỉ mới thực hiện theo kỹ thuật sử dụng khóa 2 pha.
2. Phạm vi ứng dụng
Luận văn đã mô tả đầy đủ, chi tiết các nội dung về vấn đề điều khiển tƣơng tranh trong môi trƣờng phân tán. Nó phản ánh trực quan các vấn đề công việc trong hệ quản trị cơ sở dữ liệu phân tán làm cơ sở cho việc nghiên cứu chuyên sâu hình thành các thuật toán mới cho kỹ thuật điều khiển các giao dịch đồng thời.
Ngoài ra còn có thể ứng dụng vào công tác giảng dạy.
3. Hƣớng phát triển
Tôi định hƣớng phát triển đề tài trong thời gian đến nhƣ sau:
- Tìm hiểu thêm một số thuật toán mới về điều khiển tƣơng tranh, so sánh
cao nhất. Ngoài ra, xem xét việc kết hợp các thuật toán với nhau để tận dụng các ƣu thế ở từng thuật toán.
- Mở rộng thêm khả năng của chƣơng trình nhƣ tăng số lƣợng các giao dịch đồng thời, xử lý các vấn đề bế tắc và tăng khả năng khôi phục hệ thống khi gặp sự cố,…
TÀI LIỆU THAM KHẢO
Tiếng Việt
1. Nguyễn Bá Tƣờng (2005), Nhập môn cơ sở dữ liệu phân tán, Nhà xuất bản
Khoa học Kỹ thuật, Hà nội.
Tiếng Anh
2. Arun Kumar Yadav & Ajay Agarwal (2010), “An Approach for Concurrency
Control in Distributed Database System”, International Journal of Computer
Science & Communication ,Vol. 1, No. 1.
3. Al-Jumaha N.B, Hassaneinb H.S, El-Sharkawia M (2000), “Implementation
and modeling of two-phase locking concurrency control - a performance
study”, Information and Software Technology 42, pp 257–273.
4. Shashi Bhushan, Patel R.B, Mayank Dave (2007), “A Secure Time-Stamp
Based Concurrency Control Protocol For Distributed Databases”, Journal of
Computer Science 3.
5. Tamer Özsu & Patrick Valduriez (2011), Principles of Distributed Database Systems, Springer Science Business Media.
6. Ulman Jeffrey D. (1999), Nguyên lý các hệ cơ sở dữ liệu và cơ sở tri thức, Biên dịch Trần Đức Quang tập 1 và 2, Nhà xuất bản Thống kê, Hà nội.