Nội dung thuật toán

Một phần của tài liệu 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 (Trang 68 - 77)

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.

Một phần của tài liệu 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 (Trang 68 - 77)