Cỏc vấn đề về xung đột dữ liệu và một số giải thuật điều khiển

Một phần của tài liệu nghiên cứu mẫu thiết kế kiến trúc phần mềm trong java (Trang 63)

- Lý thuyết khả tuần tự

Hai giao tỏc Oij và Okl (i và k khụng nhất thiết phải phõn biệt) cựng truy cập đến một thực thể CSDL x được gọi là cú tương tranh nếu ớt nhất một trong chỳng là

thao tỏc ghi (write). Cú hai vấn đề mà chỳng ta cần lưu ý là, trước tiờn hai giao tỏc đọc khụng tương tranh với nhau. Vỡ thế chỳng ta cú thể núi về hai loại tương tranh:

đọc - ghi (read - write) và ghi - ghi (write - write). Thứ hai, hai giao tỏc này cú thể thuộc về cựng một giao dịch hoặc thuộc về hai giao dịch khỏc nhau. Trong trường hợp sau, hai giao dịch được gọi là cú tương tranh. Về trực quan, sự tồn tại của một tương tranh giữa hai giao tỏc cho thấy rằng thứ tự thực hiện của chỳng là quan trọng. Việc sắp thứ tự cho hai giao tỏc đọc là khụng cần thiết.

- Phõn loại cỏc cơ chế điều khiển đồng thời

Chỳng ta sẽ xếp cỏc cơ chế điều khiển đồng thời làm hai nhúm lớn: cỏc phương phỏp điều khiển đồng thời lạc quan và cỏc phương phỏp điều khiển đồng thời bi quan. Cỏc thuật toỏn bi quan đồng bộ hoỏ việc thực hiện đồng thời của cỏc giao dịch trước khi thực thi chỳng, trong khi đú cỏc thuật toỏn lạc quan để việc đồng bộ hoỏ cỏc giao dịch đến khi chỳng kết thỳc. Nhúm lạc quan gồm cú cỏc thuật toỏn dựa theo khúa chốt (locking-based algorithm), cỏc thuật toỏn dựa theo thứ tự cỏc

Số húa bởi Trung tõm Học liệu - Đại học Thỏi Nguyờn http://www.lrc-tnu.edu.vn

giao dịch và cỏc thuật toỏn lai (hybrid algorithm). Tương tự, nhúm lạc quan cũng cú thể được phõn loại thành cỏc thuật toỏn dựa trờn khoỏ chốt và cỏc thuật toỏn theo thứ tự thời gian.

Trong cỏch tiếp cận dựng khoỏ chốt, việc đồng bộ hoỏ giao dịch cú được bằng cỏch sử dụng khoỏ chốt vật lý hoặc logic trờn một phần cơ sở dữ liệu. Lớp cơ chế này được chia nhỏ hơn nữa tuỳ theo vị trớ thực hiện cỏc hoạt động quản lý khoỏ: 1. Trong lối khoỏ tập quyền, một trong cỏc vị trớ của mạng được chỉ định làm vị trớ

chớnh, ở đú lưu trữ cỏc bảng khoỏ cho toàn bộ cơ sở dữ liệu và chịu trỏch nhiệm trao khúa cho giao dịch.

2. Theo lối khoỏ bản chớnh thỡ ngược lại một trong cỏc bản sao (nếu cú nhiều bản) của mỗi đơn vị khoỏ được chỉ định làm bản chớnh (primary copy) và đú chớnh là bản sẽ bị khoỏ khi giao dịch truy xuất đến đơn vị đú. Nếu cơ sở dữ liệu khụng được nhõn bản (nghĩa là mỗi đơn vị khoỏ chỉ cú một bản duy nhất), cỏc cơ chế khoỏ bản chớnh sẽ phõn phối trỏch nhiệm quản lý khoỏ cho một số vị trớ.

3. Theo lối khoỏ phi tập trung, nhiệm vụ quản lý khoỏ là của tất cả cỏc vị trớ trong mạng. Trong trường hợp này, thực hiện một giao dịch cú sự tham gia và điều phối của bộ xếp lịch tại nhiều vị trớ. Mỗi bộ xếp lịch cục bộ chịu trỏch nhiệm về cỏc đơn vị khoỏ nằm cục bộ tại vị trớ đú.

Lớp cơ chế theo thứ tự thời dấu (timestamp ordering, TO) phải tổ chức thứ tự thực hiện cỏc giao dịch nhằm duy trỡ được tớnh nhất quỏn lẫn tương hỗ giữa cỏc vị trớ (liờn nhất quỏn). Việc xếp thứ tự này được duy trỡ bằng cỏch gỏn thời dấu cho cả giao dịch lẫn mục dữ liệu được lưu trong cơ sở dữ liệu. Những thuật toỏn này cú thể thuộc loại cơ bản (basic TO), đa bản (multiversion TO), hoặc bảo toàn (conservative TO).

- Cỏc thuật toỏn điều khiển đồng thời bằng khúa chốt

í tưởng chớnh của việc điều khiển đồng thời bằng khoỏ chốt là đảm bảo dữ liệu dựng chung cho cỏc thao tỏc tương tranh chỉ được truy xuất mỗi lần một giao dịch. Điều này được thực hiện bằng cỏch liờn kết một khoỏ chốt (lock) với mỗi đơn vị khoỏ. Khoỏ này được giao dịch đặt ra trước khi nú truy xuất và được điều chỉnh

Số húa bởi Trung tõm Học liệu - Đại học Thỏi Nguyờn http://www.lrc-tnu.edu.vn

lại vào lỳc nú hết sử dụng. Một đơn vị khoỏ khụng thể truy xuất được nếu đó bị khoỏ bởi một giao dịch khỏc. Vỡ vậy, yờu cầu khoỏ của một giao dịch chỉ được trao nếu khoỏ đi kốm hiện khụng bị một giao dịch nào giữ.

Cú hai loại khoỏ chốt (thường được gọi là thể thức khoỏ, lock mode) được đi kốm với mỗi đơn vị khoỏ: khoỏ đọc (read lock) và khoỏ ghi (write lock). Một giao dịch Ti đang muốn đọc một mục dữ liệu chứa trong đơn vị khoỏ x sẽ nhận được một

khoỏ đọc trờn x [ký hiệu là rli(x)] và cũng tương tự như thế đối với cỏc thao tỏc ghi. Hai thể thức khoỏ là tương thớch (compatibility) nếu hai giao dịch truy xuất đến cựng một mục dữ liệu cú thể nhận được khoỏ trờn mục dữ liệu đú cựng một lỳc.

Cỏc khoỏ đọc là tương thớch với nhau cũn cỏc khoỏ đọc - ghi, ghi - ghi thỡ khụng. Vỡ vậy, hai giao dịch vẫn cú thể đồng thời đọc cựng một mục dữ liệu.

- Cỏc thuật toỏn điều khiển đồng thời bằng thời dấu

Khụng giống như cỏc thuật toỏn dựa vào khoỏ, cỏc thuật toỏn điều khiển đồng thời bằng thời đấu khụng cố gắng duy trỡ tớnh khả tuần tự bằng phương phỏp độc quyền truy xuất. Thay vào đú, chỳng chọn trước một thứ tự tuần tự hoỏ và thực hiện cỏc giao dịch theo thứ tự đú. Để làm được điều này, bộ quản lý giao dịch gỏn cho mỗi giao dịch Ti một thời dấu (timestamp) duy nhất ts(Ti) vào lỳc khởi sự. Thời dấu là một định danh đơn giản dựng để nhận ra mỗi giao dịch một cỏch duy nhất và xếp thứ tự chỳng. Thời dấu là một bộ hai ngụi cú dạng (giỏ trị đếm cục bộ, định danh vị trớ).

- Cỏc thuật toỏn điều khiển đồng thời lạc quan

Cỏc thuật toỏn đó biết trong phần trước về bản chất thuộc loại bi quan

(pesimistic). Núi cỏch khỏc, chỳng ta giả định rằng tương tranh giữa cỏc giao dịch rất hay xảy ra và khụng cho phộp một giao dịch truy xuất một mục dữ liệu nếu cú một giao dịch tương tranh đang truy xuất mục dữ liệu đú. Vỡ vậy việc thực hiện một thao tỏc của một giao dịch trải qua một dóy cỏc pha: thẩm tra (validation, V), đọc (read, R), tớnh toỏn (computation, C), ghi (write, W). Núi chung dóy thao tỏc này cú giỏ trị đối với mỗi giao dịch cập nhật cũng như đối với mỗi thao tỏc của nú.

Số húa bởi Trung tõm Học liệu - Đại học Thỏi Nguyờn http://www.lrc-tnu.edu.vn

Ngược lại, cỏc giao dịch lạc quan (optimistic) trỡ hoón pha thẩm tra cho đến ngay trước pha ghi. Vỡ vậy một thao tỏc được trao cho bộ xếp lịch lạc quan khụng bao giờ bị trỡ hoón. Cỏc thao tỏc đọc, tớnh toỏn, và ghi được thực hiện tự do mà khụng cập nhật vào cơ sở dữ liệu thực sự. Mỗi giao dịch lỳc đầu đều cập nhật trờn cỏc bản sao cục bộ của mục dữ liệu. Pha thẩm tra bao gồm việc kiểm xem những cập nhật này cú duy trỡ tớnh nhất quỏn của cơ sở dữ liệu hay khụng. Nếu cú, cỏc thay đổi được thực hiện thực sự (nghĩa là ghi vào cơ sở dữ liệu thực tế). Ngược lại, giao dịch sẽ bị huỷ bỏ và phải khởi động lại.

- Quản lý khúa

Khoỏ chốt (lock)

Khoỏ chốt là một đặc quyền truy xuất trờn một mục dữ liệu mà bộ quản lý khoỏ chốt cú thể trao cho một giao tỏc hay thu hồi lại. Một giao tỏc muốn truy xuất tới một mục dữ liệu thỡ nú yờu cầu một khoỏ chốt cho mục dữ liệu đú, sau khi được trao khoỏ và hoàn thành cỏc thao tỏc cần thiết thỡ nú phải mở khoỏ (unlock) để cỏc giao tỏc khỏc lại cú thể truy xuất tới mục dữ liệu đú.

Khoỏ sống (life lock) (adsbygoogle = window.adsbygoogle || []).push({});

Khoỏ sống là hiện tượng một giao tỏc T1 yờu cầu một khoỏ trờn một mục dữ liệu đồng thời cũng cú giao tỏc T2 cũng yờu cầu khoỏ đú, và hệ thống trao khoỏ cho giao tỏc T2, rồi khi giao tỏc T2 thực hiện xong cỏc thao tỏc trờn mục dữ liệu và mở khoỏ thỡ lại cú một giao tỏc T3 khỏc yờu cầu khoỏ, hệ thống lại trao khoỏ cho giao tỏc này… quỏ trỡnh như vậy cứ tiếp tục xảy ra, và rất cú thể T1 cứ phải chờ đợi một cỏch hoài vọng. Hiện tượng khoỏ sống cú thể được khắc phục bằng cỏch sử dụng chiến lược “đến trước phục vụ trước”, nhưng chiến lược này đụi khi lại gõy ra một hiệu quả trỏi ngược.

Khoỏ chết (deadlock)

Khoỏ chết là tỡnh huống mà mỗi thành viờn trong một tập S gồm hai hay nhiều giao tỏc đang đợi nhận khoỏ của một mục dữ liệu hiện đang bị khoỏ bởi một giao tỏc khỏc trong tập S. Bởi mỗi giao tỏc trong tập S đều đang đợi, nờn nú khụng thể mở khoỏ cho mục dữ liệu mà một giao tỏc khỏc đang cần, vỡ vậy tất cả cỏc giao

Số húa bởi Trung tõm Học liệu - Đại học Thỏi Nguyờn http://www.lrc-tnu.edu.vn

tỏc vẫn cứ tiếp tục phải đợi mói mói. Việc khắc phục hiện tượng khoỏ chết là một vấn đề luụn được nghiờn cứu, và cũng đó cú một số giải phỏp cho vấn đề này.

3.2 Xõy dựng chƣơng trỡnh thử nghiệm

3.2.1 Sơ đồ UML

Số húa bởi Trung tõm Học liệu - Đại học Thỏi Nguyờn http://www.lrc-tnu.edu.vn - Sơ đồ UML của ứng dụng Bỏn sỏch qua mạng

Số húa bởi Trung tõm Học liệu - Đại học Thỏi Nguyờn http://www.lrc-tnu.edu.vn

3.2.2 Lập trỡnh mođun demo

Trong vớ dụ cú sử dụng cỏc mẫu tương tranh (Concurrency Patterns) như: Critical Section, Consistent Lock Order, Guarded Suspension, Read-Write Lock.

 Chương trỡnh Truyền file xõy dựng trờn mụ hỡnh Client – Server.

- Giao diện chương trỡnh bờn phớa trỡnh chủ đăng ký tờn mỏy chủ và số hiệu cổng.

- Giao diện chương trỡnh bờn phớa trỡnh khỏch. Chương trỡnh cho phộp truy cập vào trỡnh chủ để Download, Upload dữ liệu, cũng như đổi tờn, xúa file, nộn – giải nộn

Thay đổi file, thư mục máy cục bộ

Truyền file Người sử dụng

Thay đổi file, thư mục máy chủ Tạo kết nối <<include>> FTP Server Khóa file <<include>> <<include>> Máy cục bộ

Số húa bởi Trung tõm Học liệu - Đại học Thỏi Nguyờn http://www.lrc-tnu.edu.vn

file, … bờn phớa trỡnh chủ và khỏch. Chương trỡnh cú nhiều tuyến đoạn chạy độc lập nhau và chiếm dụng tài nguyờn bờn phớa trỡnh chủ.

 Chương trỡnh Bỏn sỏch qua mạng xõy dựng trờn mụ hỡnh Client – Server, CSDL tập trung và xử lý phõn tỏn

Số húa bởi Trung tõm Học liệu - Đại học Thỏi Nguyờn http://www.lrc-tnu.edu.vn

- Chương trỡnh bờn phớa trỡnh khỏch truy cập vào trỡnh chủ và truy xuất CSDL. Trong quỏ trỡnh thực hiện cỏc giao dịch thỡ sẽ chiếm dụng toàn bộ CSDL trong cỏc thao tỏc ghi, cập nhật, xúa, …

3.2.3 Đỏnh giỏ kết quả thu được

Chương trỡnh chỉ minh họa một phần rất nhỏ về việc sử dụng cỏc mẫu hướng đối tượng để xõy dựng cỏc phần mềm. Hai vớ dụ thể hiện rất rừ việc sử dụng cỏc mẫu tương tranh để giải quyết cỏc xung đột trong quỏ trỡnh truy cập và truy xuất cỏc tài nguyờn trờn mạng.

Số húa bởi Trung tõm Học liệu - Đại học Thỏi Nguyờn http://www.lrc-tnu.edu.vn

KẾT LUẬN

Như vậy, để bổ sung cho phương phỏp hướng đối tượng, cỏc mẫu thiết hướng đối tượng là một tiếp cận độc đỏo, được đề xuất để giải quyết cỏc vấn đề nảy sinh trong quỏ trỡnh thiết kế phần mềm hướng đối tượng. Cỏc mẫu GoF cú tầm quan trọng và ảnh hưởng rất lớn đối với giới nghiờn cứu cũng như giới cụng nghiệp phần mềm. Rất nhiều cụng trỡnh đặc sắc khỏc về mẫu thiết kế hướng đối tượng được đề xuất để giải nhiều vấn đề đặc thự cho từng lĩnh vực ứng dụng phần mềm.

Do đặc điểm cụng nghệ, việc xõy dựng phần mềm trong Java cũng đối diện với nhiều vấn đề nảy sinh khỏc nhau. Trong luận văn, tụi giới hạn trong cỏc vấn đề xoay quanh ứng dụng mẫu thiết kế trong quỏ trỡnh phỏt triển phần mềm trong Java. Trong thực tế cũn nhiều vấn đề quan trọng và thỏch thức khỏc kể cả về mặt cụng nghệ và về mặt nghiờn cứu phương phỏp luận.

Trong khuụn khổ luận văn này đó thu được một số kết quả chớnh sau đõy:

 Trỡnh bày tổng quan về mẫu thiết kế và ngụn ngữ mụ hỡnh húa thống nhất UML. (adsbygoogle = window.adsbygoogle || []).push({});

 Tỡm hiểu và trỡnh bày một số mẫu thiết kế như mẫu khởi tạo, mẫu cấu trỳc, mẫu hành vi, mẫu tương tranh trong Java.

 Tỡm hiểu ngụn ngữ lập trỡnh Java, ngụn ngữ mụ hỡnh húa thống nhất UML, phương phỏp phõn tớch thiết kế và lập trỡnh hướng đối tượng.

 Xõy dựng chương trỡnh thử nghiệm bằng ngụn ngữ lập trỡnh Java sử dụng cỏc mẫu thiết kế mà nổi bật là sử dụng cỏc mẫu tương tranh để giải quyết vấn đề xung đột trong mụi trường mạng, mụi trường đa tiến trỡnh

Số húa bởi Trung tõm Học liệu - Đại học Thỏi Nguyờn http://www.lrc-tnu.edu.vn

HƢỚNG PHÁT TRIỂN

Để phỏt triển hướng nghiờn cứu này, tụi định hướng vào những cụng việc như sau:

• Nghiờn cứu tiếp cỏc mẫu thiết kế giải quyết cỏc vấn đề khỏc nhau trong phỏt triển ứng dụng trong Java, hệ thống húa và phõn loại để định hướng ỏp dụng;

• Áp dụng một cỏch hệ thống những mẫu thiết kế vào việc triển khai thử nghiệm cỏc hệ thống phần mềm trong Java để rỳt ra những nguyờn tắc phương phỏp luận cần thiết cho việc vận dụng cỏc mẫu này;

• Xõy dựng cỏc cụng cụ cần thiết nhằm tớch hợp và hỗ trợ việc sử dụng cỏc mẫu thiết kế trong quỏ trỡnh phỏt triển phần mềm trong Java.

Mặc dự đó rất cố gắng, nỗ lực nhưng do thời gian và trỡnh độ cú những hạn chế nhất định nờn luận văn sẽ khụng trỏnh khỏi những thiếu sút. Trong tương lai, tụi sẽ cố gắng hoàn thiện những hạn chế và phỏt triển những vấn đề đó nờu trờn, để mang lại những kết quả khả quan hơn nữa. Rất mong nhận được sự đúng gúp ý kiến của thầy cụ và cỏc bạn để luận văn ngày càng hoàn thiện hơn.

Số húa bởi Trung tõm Học liệu - Đại học Thỏi Nguyờn http://www.lrc-tnu.edu.vn

TÀI LIỆU THAM KHẢO

Tiếng Việt

[1] Đặng Văn Đức, Phõn tớch thiết kế hướng đối tượng bằng UML, NXB Giỏo dục, 2002

[2] Phương Lan và một số tỏc giả, Design Patterns, Nhà Xuất Bản Phương Đụng

[3] Phương Lan, Hoàng Đức Hải, Java, Nhà xuất bản thống kờ, 2004

[4] Nguyễn Phương Lan, Java lập trỡnh mạng, Nhà xuất bản Lao động xó hội, 2006

Tiếng Anh

[5] Craig Larman, Applying UML and Pattterns, Amazon, 2004.

[6] Kuchana, Partha, Software Architecture Design Patterns in Java, CRC Press LLC, 2004.

[7] KevinZhang, Design Patterns Elements of Reusable Object-Oriented Software,

[8] D. Bonura, R. Culmone, E. Merelli, Patterns for web applications, ACM International Conference Proceeding Series, Vol. 27, p. 739 - 746, (2002)

[9] F. Buschmann, Pattern-oriented Software Architecture - A System of Patterns, John Wiley & Sons, (1996).

[10] J. W. Cooper, The design patterns Java companion, Addison-Wesley, (1998).

[11] P. Eeles, K. Houston, W. Kozaczynski, Building J2EE Applications with the Rational Unified Process, Addison-Wesley, (2002).

[12] M. Ewiss, „Patterns for Web Applications‟, Pattern Languages of Programs conference 2003 (PLoP 2003).

Website http://www.sqlsecurity.com/faq-inj.asp http://www.objectmentor.com/mentoring/OOPrinciples http://www.object-arts.com/EducationCentre/Patterns/AccessorMethods.htm http://www.object-arts.com/OldStuff/Patterns/PrivateMethods.htm http://java.sun.com http://www.javaworld.com/javaworld/jw-10-2001/jw-1012-deadlock.html http://www.research.ibm.com/designpatterns/pubs/7habits.html

Một phần của tài liệu nghiên cứu mẫu thiết kế kiến trúc phần mềm trong java (Trang 63)