LỜI MỞ ĐẦU Trong những năm gần đây, các thành tựu mới nhất của hệ thống tin học về phần cứng, phần mềm và các hệ quản trị cơ sở dữ liệu ổn định, tin cậy đã góp phần đáng kể cho sự phát triển của xã hội nói chung và ngành Công nghệ Thông tin nói riêng. Một trong những thành tựu nổi bật đó, phải nói đến các phần mềm cơ sở nhằm vào, trực tiếp và trước hết, tăng khả năng điều hành, khai thác hiệu quả tất cả các tài nguyên của hệ. Sự phát triển của CNTTTT và đặc biệt là Internet, “thế giới là phẳng”. Do đó, tất cả mọi vấn đề, dù khoảng cách có xa đến đâu đi chăng nữa nhưng nếu chúng ta ngồi trước máy vi tính có nối mạng thì hầu như mọi thứ đang hiện hữu tại máy tính của chúng ta. Chúng ta có thể quản lý nhân sự của một công ty đa quốc gia, chúng ta có thể ngồi ở nhà để đăng ký đặt chỗ vé máy bay, mua một món hàng tại siêu thị… Để có được sự tiện nghi này đối với người sử dụng thì nó đặt ra nhiều vấn đề rất lớn và rất phức tạp cho các nhà nghiên cứu và phát triển các hệ thống này. Các câu hỏi lớn đặt ra một cách cụ thể như: “làm thế nào để đảm bảo rằng không có ít nhất 2 người cùng đăng ký 01 vé máy bay trong hệ thống đăng ký vé? Làm thế nào để biết được có còn một mặt hàng nào đó trong hệ thống siêu thị?”… Ngày nay hầu hết các ứng dụng tin học đều được xây dựng để thực hiện trên mạng máy tính, các ứng dụng clientserver đang ngày càng được sử dụng phổ biến. Nhưng khi quy mô và mức độ của các ứng dụng tăng lên và yêu cầu về chất lượng, tốc độ xử lý và độ phức tạp cũng tăng theo thì trên thực tế, một xu hướng kỹ thuật mới ra đời – xu hướng phân tán các thành phần tạo nên hệ tin học theo hướng tiếp cận nơi sử dụng và sản xuất thông tin. Song để khai thác có hiệu quả toàn hệ, vấn đề quan trọng hàng đầu cần phải tính đến là các tài nguyên nói chung, đặc biệt là tài nguyên thông tin nói riêng và chiến lược khai thác, sử dụng chúng một cách tối ưu nhất. Sau khi được học hai môn “Hệ tin học phân tán” và môn “Lập trình mạng máy tính” dưới sự giảng dạy nhiệt tình của Thầy PGS.TS Lê Văn Sơn, chúng tôi đã tiếp thu được các kiến thức của hai môn học này. Với sự hướng dẫn tận tình của Thầy Lê Văn Sơn và sự giúp đỡ của các bạn, chúng tôi đã hoàn thành được cơ bản yêu cầu của bài toán đề ra. Vấn đề truy cập, xử lý thông tin và đảm bảo sự gắn bó dữ liệu trên hệ phân tán đã được nghiên cứu trong hàng loạt các công trình. Trong phạm vi tiểu luận của mình, tôi thực hiện những vấn đề sau: Phần I: Cơ sở lý thuyết, bao gồm: Hệ phân tán, Cơ sở dữ liệu trong hệ phân tán và Sự gắn bó dữ liệu trong cơ sở dữ liệu phân tán. Phần II: Bài tập ứng dụng. Trình bày về thuật toán Lamport và xây dựng chương trình sắp xếp các thông điệp đến dự trên đồng hồ Lamport. Mặc dầu đã hết sức cố gắng, nhưng do điều kiện thời gian và khả năng còn nhiều hạn chế, hơn nữa tiểu luận môn học này là một lĩnh vực tri thức rộng lớn, đa dạng và rất phức tạp nên chắc chắn không thể không tránh khỏi những sai sót và khiếm khuyết. Rất mong nhận được sự góp ý, phê bình, đánh giá của Thầy giáo và của các bạn trong lớp để nhóm chúng tôi rút kinh nghiệm và hoàn thiện tốt hơn trong thời gian tới. Chúng tôi xin gửi lời cảm ơn chân thành đến Thầy giáo Lê Văn Sơn đã cung cấp, định hướng và hướng dẫn chúng tôi trong suốt thời gian qua để nhóm chúng tôi hoàn thành tiểu luận này.
Trang 1ĐẠI HỌC ĐÀ NẴNG
-
-TIỂU LUẬN MÔN HỌC
Giáo viên hướng dẫn: PGS.TS Lê Văn Sơn
Học viên: Lê Trọng Hiền
Trang 2LỜI MỞ ĐẦU
Trong những năm gần đây, các thành tựu mới nhất của hệ thống tin học về phầncứng, phần mềm và các hệ quản trị cơ sở dữ liệu ổn định, tin cậy đã góp phần đáng kểcho sự phát triển của xã hội nói chung và ngành Công nghệ Thông tin nói riêng Mộttrong những thành tựu nổi bật đó, phải nói đến các phần mềm cơ sở nhằm vào, trực tiếp
và trước hết, tăng khả năng điều hành, khai thác hiệu quả tất cả các tài nguyên của hệ
Sự phát triển của CNTT-TT và đặc biệt là Internet, “thế giới là phẳng” Do đó, tất
cả mọi vấn đề, dù khoảng cách có xa đến đâu đi chăng nữa nhưng nếu chúng ta ngồitrước máy vi tính có nối mạng thì hầu như mọi thứ đang hiện hữu tại máy tính của chúng
ta Chúng ta có thể quản lý nhân sự của một công ty đa quốc gia, chúng ta có thể ngồi ởnhà để đăng ký đặt chỗ vé máy bay, mua một món hàng tại siêu thị… Để có được sự tiệnnghi này đối với người sử dụng thì nó đặt ra nhiều vấn đề rất lớn và rất phức tạp cho cácnhà nghiên cứu và phát triển các hệ thống này Các câu hỏi lớn đặt ra một cách cụ thểnhư: “làm thế nào để đảm bảo rằng không có ít nhất 2 người cùng đăng ký 01 vé máy baytrong hệ thống đăng ký vé? Làm thế nào để biết được có còn một mặt hàng nào đó trong
hệ thống siêu thị?”…
Ngày nay hầu hết các ứng dụng tin học đều được xây dựng để thực hiện trên mạngmáy tính, các ứng dụng client-server đang ngày càng được sử dụng phổ biến Nhưng khiquy mô và mức độ của các ứng dụng tăng lên và yêu cầu về chất lượng, tốc độ xử lý và
độ phức tạp cũng tăng theo thì trên thực tế, một xu hướng kỹ thuật mới ra đời – xu hướngphân tán các thành phần tạo nên hệ tin học theo hướng tiếp cận nơi sử dụng và sản xuấtthông tin Song để khai thác có hiệu quả toàn hệ, vấn đề quan trọng hàng đầu cần phảitính đến là các tài nguyên nói chung, đặc biệt là tài nguyên thông tin nói riêng và chiếnlược khai thác, sử dụng chúng một cách tối ưu nhất
Sau khi được học hai môn “Hệ tin học phân tán” và môn “Lập trình mạng máytính” dưới sự giảng dạy nhiệt tình của Thầy PGS.TS Lê Văn Sơn, chúng tôi đã tiếp thuđược các kiến thức của hai môn học này Với sự hướng dẫn tận tình của Thầy Lê VănSơn và sự giúp đỡ của các bạn, chúng tôi đã hoàn thành được cơ bản yêu cầu của bài toán
đề ra
Vấn đề truy cập, xử lý thông tin và đảm bảo sự gắn bó dữ liệu trên hệ phân tán đãđược nghiên cứu trong hàng loạt các công trình Trong phạm vi tiểu luận của mình, tôithực hiện những vấn đề sau:
Phần I: Cơ sở lý thuyết, bao gồm: Hệ phân tán, Cơ sở dữ liệu trong hệ phân tán
và Sự gắn bó dữ liệu trong cơ sở dữ liệu phân tán
Phần II: Bài tập ứng dụng Trình bày về thuật toán Lamport và xây dựng chương
trình sắp xếp các thông điệp đến dự trên đồng hồ Lamport
Trang 3hạn chế, hơn nữa tiểu luận môn học này là một lĩnh vực tri thức rộng lớn, đa dạng và rấtphức tạp nên chắc chắn không thể không tránh khỏi những sai sót và khiếm khuyết Rấtmong nhận được sự góp ý, phê bình, đánh giá của Thầy giáo và của các bạn trong lớp đểnhóm chúng tôi rút kinh nghiệm và hoàn thiện tốt hơn trong thời gian tới.
Chúng tôi xin gửi lời cảm ơn chân thành đến Thầy giáo Lê Văn Sơn đã cung cấp,định hướng và hướng dẫn chúng tôi trong suốt thời gian qua để nhóm chúng tôi hoànthành tiểu luận này
Mọi sự đóng góp và phê bình xin gửi về:
1 Lê Tự Quốc, Trường Cao đẳng Lương thực- Thực phẩm Đà Nẵng.
Địa chỉ: 101B Lê Hữu Trác-Quận Sơn Trà-Tp.Đà Nẵng
Điện thoại: 0914 112.319
Email: letuquocdglttp@yahoo.com.vn
2 Lê Trọng Hiền, Trường Đại học Công nghiệp Tp HCM – Cơ sở Miền trung.
Địa chỉ: 978 Quang trung- Tp Quảng Ngãi.
Trang 4PHẦN I: CƠ SỞ LÝ THUYẾT CHƯƠNG I: HỆ PHÂN TÁN, MÔ HÌNH CLIENT/SERVER
I Hệ phân tán.
I.1 Khái niệm.
Hệ tin học phân tán là hệ thống đa dạng, phức tạp về mặt cấu trúc, đang được cácchuyên gia công nghệ thông tin quan tâm nghiên cứu với hàng loạt các công trìnhđược công bố
Cho đến nay, xét trên các phương diện khác nhau, người ta có thể có các địnhnghĩa khác nhau về hệ tin học phân tán, nhưng phổ biến hơn cả là định nghĩa đượcphát biểu như sau :
Hệ tin học phân tán hay nói ngắn gọn là hệ phân tán (Distributed System) là hệthống xử lý thông tin bao gồm nhiều bộ xử lý (hoặc bộ vi xử lý) phân bố ở những vị tríđịa lý khác nhau, được liên kết với nhau thông qua phương tiện truyền thông (viễnthông) dưới quản lý thống nhất của một hệ thống điều khiển
Qua đó ta có thể xem hệ phân tán như là một tập hợp các bộ xử lý (hoặc bộ vi xửlý) với bộ nhớ và đồng hồ nhịp độc lập Điều này đồng nghĩa với việc các bộ xử lýkhông sử dụng chung bộ nhớ và đồng hồ Như vậy, mỗi một hệ xử lý thông tin thànhphần của hệ phân tán bao gồm một hay nhiều bộ xử lý và bộ nhớ cục bộ Trong hệphân tán, hệ xử lý thông tin thành phần phải được thiết kế sao cho về cấu trúc, sốlượng và dung lượng có thể cho phép thực hiện một cách trọn vẹn các chức năng mà
nó phải đảm nhận
Hệ tin học phân tán thực hiện hàng loạt các chức năng phức tạp, nhưng cơ bảnnhất là đảm bảo cung cấp cho người sử dụng khả năng truy cập có kết quả đến các loạitài nguyên vốn có và rất đa đạng của hệ thống như là những tài nguyên dùng chung Việc định nghĩa các tài nguyên của hệ như là tài nguyên dùng chung sẽ mangđến cho người sử dụng những tiện ích và đem lại cho hệ những hiệu năng tốt trongkhai thác ứng dụng
Những ưu điểm căn bản của việc sử dụng chung tài nguyên:
- Tăng tốc độ bình quân trong tính toán - xử lý
- Cải thiện tình trạng sẵn sàng của các loại tài nguyên dùng chung.
- Tăng độ an toàn và an ninh cho dữ liệu
- Đảm bảo tính vẹn toàn của thông tin do giải quyết được vấn đề gắn bó
dữ liệu
- Cho phép đa dạng hoá các loại hình dịch vụ tin học nói chung
Trang 5I.2 Các đặc điểm của hệ phân tán.
Các đặc điểm và yêu cầu được liệt kê dưới đây (bảng I.1 và I.2) giúp ta nhận biếtnhững đặc trưng cơ bản và phân biệt hệ tin học phân tán với các hệ tin học khác, đồngthời cung cấp thông tin cơ bản trong quá trình phân tích, thiết kế, xây dựng và đánh giámột hệ thống nào đó
1 Lập trình và thực hiện cho hệ thống đa truy cập, ngẫu nhiên, số lượng lớn
2 Định danh định danh cho các đối tượng qua hệ thống viễn thông
3 Cấu trúc lập trình được cho các truy vấn đa chiều và đáp ứng lại truy vấn
4 Trình tự và đồng bộ các tiến trình hoạt động
5 Gắn bó thông tin (Coherence) và vấn đề nhiều bản sao
6 Cung cấp từ xa các tài nguyên dùng chung (tài nguyên găng)
7 Vấn đề xử lý - tính toán đồng thời trong hệ
8 Vấn đề đa Server và hệ điều khiển - giám sát của người quản trị hệ thống
9 Vấn đề tin cậy và hiệu năng hệ thống
Bảng 1 Các yêu cầu cơ bản của hệ phân tán
1 Thời gian truyền thông tin trong hệ không giống nhau
2 Các thông điệp có thể bị mất trong quá trình truyền thông tin
3 Các thông điệp có thể được truyền kép
4 Việc phát và nhận thông điệp đối với toàn hệ là ngẩu nhiên
5 Việc cập nhật thông tin (chương trình và dữ liệu) dẫn đến hệ rơi vào trạng thái
thiếu gắn bó
6 Hệ có thể rơi vào trạng thái bế tắc, tắt nghẽn đường truyền, chờ vô hạn vàthiếu thốn tài nguyên
7 Một (hay nhiều) máy tính cấu thành của hệ phân tán có thể bị sự cố
Bảng I.2 Đặc điểm cơ bản của hệ phân tán
II Tiến trình trong hệ phân tán
II.1 Khái niệm
Tiến trình (Process) là khái niệm khá quen thuộc và là đối tượng nghiên cứu của
hệ điều hành Trong hệ phân tán ta chỉ xem xét và bổ sung đặc điểm hoạt động và truycập của các tiến trình có nhu cầu cung cấp tài nguyên dùng chung
Các đặc điểm đó là:
- Các tiến trình được hình thành và điều khiển bởi hệ điều khiển duy nhất
có nghĩa là nếu trong các thành phần tham gia hệ phân tán như mạng máytính, các hệ tập trung, có thể có các hệ điều hành riêng với các tiến trình
Trang 6riêng của mình, thì chúng cũng bị phái sinh lại trong nội dung của tiến trìnhmới, phân tán.
- Tiến trình là chương trình hay đoạn chương trình đang hoạt động trong
hệ phân tán là đối tượng chủ yếu có nhu cầu tài nguyên phần cứng hay phầnmềm để thực hiện các lệnh của mình Tiến trình cần tài nguyên để phát triển
Về nguyên tắc, tất cả các tiến trình và tài nguyên được cung cấp là các đốitượng ở xa
- Các nguyên lý của hệ tập trung có thể nghiên cứu và áp dụng cho cáctiến trình phân tán như dự phòng và chống bế tắc, chống xung đột,
- Khi tiến trình được cung cấp tài nguyên có thể nó thực hiện ngay, nếu nó
là đối tượng được gửi đến từ trước trên bộ xử lý (máy) cục bộ hoặc phải gửiđối tượng là tiến trình qua hệ thống đường truyền Việc cung cấp tài nguyêncho các tiến trình có thể thực hiện theo 2 cách trong hệ phân tán :
o Thông qua hệ thống cung cấp chung cho toàn hệ nhưControllor/Allocator
o Thông qua Allocator cục bộ trên Server/Workstation bằng cách thamchiếu vào bảng trạng thái, ảnh của thông tin toàn cục
II.2 Tầm quan trọng của việc đồng bộ hóa tiến trình trong hệ phân tán.
Đồng bộ hoá tiến trình được hiểu như là quá trình điều khiển tạo nên sự ăn khớpvới nhau giữa tất cả các tiến trình khác nhau giúp cho hệ phân tán hoạt động nhịpnhàng, tin cậy và phòng tránh các sự cố kỹ thuật
Trong tất cả các hệ thống tin học, ta cần phải nghiên cứu các công cụ đủ mạnh vàhiệu quả để có thể đồng bộ hóa các tiến trình Tính cấp thiết về mặt nguyên lý và kỹthuật của vấn đề này thể hiện ở hai nguyên do cơ bản sau đây :
Các tiến trình kể cả các tiến trình xuất phát từ các ứng dụng độc lập muốn truycập vào các tài nguyên với số lượng rất hạn chế hay truy cập vào thông tin dùng chungcùng một lúc gây nên hiện tượng truy cập tương tranh
Tương tranh là nguyên nhân chính của các xung đột giữa các tiến trình muốntruy cập vào các tài nguyên dùng chung
Các tiến trình của cùng một hệ ứng dụng hoạt động theo kiểu hợp lực để giảiquyết các bài tóan đặt ra và cho kết quả nhanh chóng nhất Điều này cho phép tănghiệu năng sử dụng thiết bị và hiệu quả hoạt động của chương trình
Hợp lực là nguyên nhân chính của sự tác động tương hỗ được lập trình giữa cáctiến trình nhằm cho phép chúng tham gia vào các hành động chung
Sự tương tranh và hợp lực giữa các tiến trình đòi hỏi phải có trao đổi thông tin qua lạivới nhau Trong các hệ thống tập trung, điều đó được thực hiện nhờ thuật toán loại trừ tương
hỗ thông qua các biến cùng tác động trong một vùng nhớ chung
Trang 7III Mô hình CLIENT/SERVER
III.1 Giới thiệu
Khi nói tới lập trình mạng ta thường nghĩ đến cách trao đổi giữa một chương trình phục vụ (Server) với một hay nhiều chương trình khách (Client) Chương trình
khách gửi một yêu cầu tới cho chương trình phục vụ, và chương trình này xử lý dữ liệu
để trả lời cho chương trình khách Như vậy, chương trình khách muốn gửi được yêu
cầu thì trước hết phải tìm cách kết nối với Server Server có thể chấp nhận hay từ chối
sự kết nối này Một khi sự kết nối đã được thiết lập thì Client và Server trao đổi với nhau thông qua Sockets Các lớp trong gói java.net cung cấp các phương thức để kết nối mạng và trao đổi tin giữa các máy với nhau theo mô hình Client/Server Mặt khác,
trên Internet nhiều máy tính sử dụng các giao thức để trao đổi với nhau
Socket chính là lớp (trừu tượng) thực hiện sự trao đổi giữa Server và Client.
Java xem sự trao đổi giữa Server và Client dựa trên Socket gần giống như các thao tác vào/ra (I/O), nghĩa là các chương trình có thể đọc, ghi vào Socket dễ dàng như chúng đọc, ghi lên tệp dữ liệu Lớp Server tạo ra sự kết nối từ máy Client tới Server thông
qua các phương thức tạo lập đối tượng
Lớp ServerSocket dùng để tạo kết nối từ Server tới các máy Client Đối tượng của lớp này được tạo ra trên Server và lắng nghe những kết nối từ máy Client theo cổng xác định Server phải chạy thường trực trước khi Client bắt đầu thực hiện.
Server chờ sự yêu cầu kết nối của Client Để thiết lập được một Server, ta phải tạo ra
một đối tượng, ví dụ ServerSocket của lớp ServerSocket, gắn nó với một cổng nào đó
và lắng nghe xem có Client nào cần kết nối hay không Các Socket được xác định
tương ứng với địa chỉ của máy và cổng
ServerSocket serverSocket = new ServerSocket(port);
Trong đó port là số hiệu của cổng nằm giữa 0 và 1023 Cổng cho phép trao đổi
tin giữa hai chương trình Địa chỉ của cổng là số 16 bit và thường phụ thuộc vào các
giao thức ứng dụng Thông thường, giao thức FTP sử dụng cổng 21, telnet dùng cổng
23, các dịch vụ E-mail (SMTP) sử dụng cổng 25, Web Server chạy trên cổng 80
Sau khi đối tượng serverSocket được tạo ra, Server có thể sử dụng câu lệnh sau
để lắng nghe yêu cầu kết nối của Client
Socket connectToServer = new Socket(ServerName,port);
serverName là tên của máy chủ trên Interrnet hoặc địa chỉ IP, xác định duy nhất một
máy tính trên toàn mạng Internet (cả thế giới) IP là giao thức được sử dụng để gửi tin
từ một máy tới máy khác trên mạng Internet IP phải xác định được máy gửi và máynhận thông qua địa chỉ IP Một địa chỉ IP gồm bốn số nguyên nằm giữa 0 và 255, phâncách với nhau bằng dấu ‘.’ Ví dụ:
Socket connectToServer = new Socket(“129.74.250.103”, 8000);
Vì địa chỉ IP thường rất khó nhớ nên thay vì địa chỉ IP người ta thường sử dụng
tên miền dịch vụ, ví dụ Gophe.nd.edu tương ứng với địa chỉ IP nêu trên
Trang 8Ngày nay, trên Internet hai máy có thể trao đổi với nhau phần lớn đều dựa trênqui ước hay giao thức chuẩn TCP/IP.
Sau khi sự kết nối đã được Server chấp nhận, việc trao đổi giữa Client và
Server giống như trên các luồng I/O Ví dụ:
InputStream isFromServer = connectToServer getInputStream();
OutputStream osToServer = connectToServer getOutputStream();
Tạo ra luồng vào/ra: isFromServer để đọc từ Server và osToServer để ghi vào (gửi cho) Server Hai lớp InputStream, OutputStream được sử dụng để đọc và ghi từng byte Ta cũng có thể sử dụng DataOutputStream, DataInputputStream,
BufferedReader, PrintWriter để đọc, ghi dữ liệu kiểu int, double, String, v.v Ví dụ,
đoạn chương trình sau tạo ra isFromClient, osToClient để đọc, ghi các dữ liệu kiểu nguyên thủy ở Client
DataInputStream isFromClient = new DataInputStream (connectToClient.getInputStream());
DataOutputStream osFromClient = new DataOutputStream (connectToClient.getOutputStream());
Server có thể sử dụng isFromClient.read() để nhận dữ liệu từ Client và
isFromClient.write() để gửi dữ liệu cho Client.
DataInputStream in DataOutputStream out Socket socket
socket = new Socket(host, port());
in = new DataInputStream (socket.getInputStream());
out = new DataOutputStream (socket.getOutputStream()); out.writeDouble(aNumber);
Trang 9III.2 Server phục vụ nhiều chương trình Client
Cùng một lúc, một chương trình Server có thể trao đổi với nhiều chương trình
Client Server chạy thường trực trên máy chủ và các chương trình Client trên mạng có
thể kết nối với Server bất kỳ lúc nào [Daniel] Server thiết lập việc kết nối với nhiều
Client như sau.
while(true){
Socket connectToClient = serverSocket.accept();
Thread thread = new ThreadClass(connectToClient);
thread.start();
}
Socket server có thể có nhiều kết nối Mỗi vòng lặp của chu trình while tạo ra
một kết nối mới Khi đã thiết lập được một kết nối, một luồng thực hiện (thread) mới được tạo ra để đảm nhận việc trao đổi giữa Server và Client Sau đó Server chờ những
yêu cầu kết nối khác Nghĩa là có nhiều kết nối thực hiện theo cơ chế đa luồng thựchiện đồng thời
Trong khi trao đổi với nhau, nhiều khi ta muốn biết ai kết nối với Server Muốn biết về chương trình khách ta sử dụng lớp InetAddress để biết được tên miền (host
name) và địa chỉ IP
Trang 10CHƯƠNG II: CƠ SỞ DỮ LIỆU PHÂN TÁN
I Cơ sở dữ liệu phân tán
Có nhiều lý do để xây dựng cơ sở dữ liệu phân tán, như chia sẻ thông tin, tăng độtin cậy, tăng tốc độ truy cập thông tin Tuy nhiên, sử dụng hệ thống phân tán phải trảgiá phát triển phần mềm, khó khăn hơn khi sửa lỗi dữ liệu và lỗi hệ thống
I.1 Các ưu điểm của việc phân tán dữ liệu
Trước tiên hệ thống cơ sở dữ liệu phân tán có ưu điểm cho phép dùng chung dữliệu theo cách hiệu quả và tin cậy
I.1.1 Chia sẻ dữ liệu và điều khiển phân tán
Nếu một số trạm nối nhau, người dùng tại một trạm có thể khai thác dữ liệu trêntrạm kia Thí dụ nếu không có hệ thống phân tán, việc chuyển tiền qua tài khoản phảithực hiện qua cơ chế trung gian
Tiến bộ thứ nhất này cho phép chia sẻ dữ liệu theo nghĩa mỗi trạm vẫn có mức
độ ưu tiên về điều khiển dữ liệu cục bộ Trong hệ thống tập trung, người quản trị cơ sở
dữ liệu của trạm trung tâm điều khiển các hoạt động xử lý của cơ sở dữ liệu Trong hệthống phân tán, cũng có người quản trị bao quát chung toàn hệ thống Một phần củatrách nhiệm này trao lại cho người quản trị địa phương tại trạm Phụ thuộc vào thiết kếcủa hệ thống mà người này có độ tự trị riêng Khả năng tự trị địa phương được xem là
ưu điểm chính của cơ sở dữ liệu phân tán
I.1.2 Tin cậy và sẵn sàng
Nếu một trạm trong cơ sở dữ liệu phân tán bị hỏng, các trạm còn lại vẫn có khảnăng tiếp tục công việc Cụ thể, nếu dữ liệu sao chép trên nhiều trạm, mỗi giao tác cần
dữ liệu cụ thể có thể tìm trên trạm khác Do vậy hư hỏng một trạm không gây sụp đổ
cả hệ thống
Sai sót của trạm cần được hệ thống phát hiện, cần có hành động thích hợp để hồiphục dữ liệu Hệ thống không tiếp tục sử dụng trạm bị hư mà đợi sau khi sửa xong,trạm này được gắn tích hợp vào hệ thống
Dù việc khôi phục sai sót trong cơ sở dữ liệu phân tán là phức tạp hơn so với cơ
sở dữ liệu tập trung, khả năng hầu hết các hệ thống là tiếp tục làm việc khiến cho tínhsẵn sàng tăng lên Tính sẵn sàng là khó đạt được trong cơ sở dữ liệu thời gian thực
Ví dụ : Trong hệ thống bán vé máy bay, việc không truy nhập được vào các dữliệu như việc không kịp đăng ký chỗ cho các chuyến bay sẽ gây tổn hại đến uy tín vàlượng khách hàng của hãng hàng không
I.1.3 Tăng tốc xử lý các truy vấn
Nếu một câu hỏi yêu cầu dữ liệu trên vài trạm, có thể tách câu hỏi này ra các câuhỏi nhỏ để có thể khai thác song song tại nhiều trạm Tính toán song song như thế cho
Trang 11phép trả lời câu hỏi nhanh hơn Trong trường hợp này, các trạm đều có một bản sao dữliệu, câu hỏi được hệ thống trả lời tại trạm nào có chi phí rẻ hơn cả.
I.2 Các nhược điểm của việc phân tán dữ liệu
Nhược điểm đầu tiên của hệ thống cơ sở dữ liệu phân tán là việc tăng thêm sựphức tạp khi xử lý phân tán Phức tạp tăng lên dưới các dạng sau:
- Giá phát triển phần mềm: Do các khó khăn khi cài đặt một hệ thống
phân tán, giá thành sẽ tăng lên
- Dễ mắc lỗi hơn: Vì các trạm trong hệ phân tán làm việc song song, khó
có thể đảm bảo thuật toán được thực hiện đúng trên tất cả các trạm Do vậy
mà số lỗi sẽ tăng lên Các thuật toán phù hợp với cơ sở dữ liệu phân tán cònđang được nghiên cứu
- Khối lượng các xử lý tăng: Hệ thống phân tán cần truyền nhiều thông
báo, nhiều tính toán phụ Do vậy khối lượng xử lý tăng lên so với hệ thốngtập trung Khi chọn thiết kế hệ thống cơ sở dữ liệu, người thiết kế cần phảicân đối các ưu điểm và nhược điểm của việc phân tán các dữ liệu Có dảirộng các thiết kế rất phân tán đến các hệ thống tập trung
- Những vấn đề về cập nhập và quản lý bản sao dữ liệu
- Xử lý các truy vấn phức tạp hơn
- Thiết kế và quản trị Cơ sở dữ liệu phức tạp hơn
II Thiết kế các cơ sở dữ liệu phân tán
Phần này tập trung vào các thiết kế dùng cho cơ sở dữ liệu phân tán Giả sử quan
hệ R được lưu trữ trong cơ sở dữ liệu Có vài lý do yêu cầu lưu quan hệ này trong hệthống phân tán
- Các bản sao: Hệ thống bảo trì vài bản sao như nhau của quan hệ Mỗiquan hệ được lưu tại một trạm
- Các phần nhỏ: Quan hệ tách thành các phần nhỏ Mỗi phần được lưu trênmột trạm
- Bản sao và phần nhỏ: Đây là hình thức tổ hợp của hai dạng vừa nêu.Quan hệ tách thành nhiều phần Hệ thống có nhiều bản sao của mỗi phần,trên các trạm khác nhau
Nếu quan hệ R được sao lại, một bản sao của R được lưu trong hai hay nhiềutrạm Trong trường hợp cực đoan, tại mỗi trạm đều có một bản sao Một vài ưu điểm
và nhược điểm của việc sao này
- Tính sẵn sàng: Nếu một trạm chứa quan hệ R bị hư, quan hệ R có thểđược tìm trên trạm khác Do vậy, hệ thống cần tiếp tục câu hỏi về quan hệ R
dù xảy ra hư hỏng trên một trạm
Trang 12- Tính song song tăng lên: Trong trường hợp đa số truy nhập quan hệ Rchỉ là đọc dữ liệu, một vài trạm yêu cầu R có thể xử lý song song Càngnhiều bản sao càng tăng khả năng sẵn sàng của dữ liệu Hơn nữa, việc tăngcác bản sao làm giảm số lượng thông tin cần truyền giữa các trạm.
- Phức tạp tăng lên khi tiến hành cập nhật: Hệ thống cần đảm bảo tất cảcác bản sao của quan hệ R là chặt chẽ, tức thỏa mãn các điều kiện toàn vẹn,trừ khi xảy ra sai sót Điều này có nghĩa khi một bản sao được cập nhật,phép xử lý này cần được thực hiện trên tất cả các trạm có chứa bản sao của
R Chẳng hạn trong hệ thống ngân hàng, khi tài khoản có trên các trạm, sốlượng tiền của tài khoản này trên các trạm phải như nhau
Nhìn chung, việc dùng các bản sao làm tăng hiệu quả của phép đọc, tăng tính sẵnsàng trong giao tác đọc dữ liệu Vấn đề điều khiển các phép cập nhật tương tranh củanhững giao thức trong trường hợp dữ liệu có các bản sao trong hệ thống phân tán làphức tạp hơn việc điều khiển trong hệ thống tập trung Việc quản lý có thể được đơngiản hóa bằng cách chọn ra một bản sao gọi là bản sao sơ cấp của quan hệ R
Ví dụ: Trong hệ thống ngân hàng, một tài khoản gắn với trạm mà tài khoản đóyêu cầu mở Tại trạm này, tài khoản có dữ liệu như bản sao sơ cấp Trong hệ thống đặtchỗ máy bay, dữ liệu gắn với chuyến bay tại trạm mà chuyến bay xuất phát sẽ đượcxem là bản sao sơ cấp
Trang 13CHƯƠNG III: SỰ GẮN BÓ DỮ LIỆU TRONG CƠ SỞ DỮ
LIỆU PHÂN TÁN
I Tác động và giao dịch
Các đối tượng khác nhau của hệ không phải là các đối tượng độc lập nhau, chúngquan hệ với nhau bởi tập hợp các quan hệ gọi là các ràng buộc toàn vẹn Các ràngbuộc này thể hiện sâu sắc các đặc tính riêng biệt của hệ
Trạng thái của hệ thoả mãn một tập các ràng buộc toàn vẹn gọi là trạng thái gắnbó
Các nhà thiết kế và vận hành hệ mong muốn rằng việc thực hiện các tiến trìnhphải duy trì cho được hệ trong trạng thái gắn bó Để chính xác hoá đặc tính này, cầnphải lưu ý là trạng thái của hệ chỉ được xác định ở mức quan sát cho trước
Ta quan tâm đến hai mức quan sát:
Ở mức hệ thống, ta có thể nói rằng các tác động là phần tử nhỏ nhất không thểchia cắt được nữa
Cho một tập hợp giao dịch M={T1, T2…, Tn} lần lượt được thực hiện bởi cáctiến trình độc lập p1, p2,…,pn Việc thực hiện tuần tự có nghĩa là thực hiện tất cả cácgiao dịch của M theo kiểu nối đuôi nhau và tuân thủ một trật tự nào đó Sự gắn bó của
hệ được bảo toàn, theo định nghĩa, bằng việc thực hiện riêng biệt từng giao dịch Dovậy, nó cũng được bảo toàn trong chế độ thực hiện tuần tự của M
Nếu, vì lý do hiệu quả, nhiều giao dịch được thực hiện song song, thì sự gắn bókhông còn đảm bảo được nữa
Một yêu cầu khác nữa rất quan trọng là trong quá trình thực hiện hệ phải đảmbảo cho các tác động không bị ngắt quãng
II Trật tự hóa các tác động
Trở lại với tập hợp giao dịch M = {T1, T2…, Tn} cho ở phần trước Mỗi giaodịch được cấu tạo từ một dãy các tác động Bằng các tác động không chia sẻ được này,toàn bộ sự việc thực hiện của tập hợp các giao dịch M bởi một tập hợp các tiến trình
Trang 14dịch này, như S = (a1, a2, , an) chẳng hạn Trong trật tự tuân thủ trật tự nội tại củatừng giao dịch, dãy này bao gồm tất cả các tác động cấu tạo nên các giao dịch M; mỗitác động chỉ xuất hiện một và chỉ một lần Một dãy như vậy gọi là trật tự hóa của tậpcác giao dịch M.
Ví dụ: Cho T1 = (a11, a12, a13, a14) và T2 = (a21, a22, a23) Một trật tự hóa(T1, T2) được thể hiện như sau:
S = a21, a11, a12, a22, a13, a23, a14
Trong số các trật tự hóa của một tập hợp các giao dịch, điều rất quan trọng làphải tách ra cho được những cái phục vụ trạng thái gắn bó dữ liệu và chúng được gọi
là trật tự hóa gắn bó
Như vậy, đặc tính quan trọng của trật tự hóa là: các trật tự hóa tương ứng vớiviệc thực hiện tuần tự của tập hợp các giao dịch hay còn gọi ngắn gọn là trật tự hóatuần tự
Điều kiện đủ cho sự gắn bó của một trật tự hóa có thể được phát biểu như sau:Một trật tự hóa là gắn bó, nếu nó có cùng quan hệ phụ thuộc với một trật tự tuần hoàn
III Triển khai giao dịch tôn trọng sự gắn bó
Cho một tập hợp giao dịch M={T1, T2…, Tn} Một trật tự hóa của tập hợp cáctác động thành phần sẽ tương ứng với việc thực hiện hoàn toàn các giao dịch Việc thuđược một trật tự hóa gắn bó chỉ có thể thành công khi áp dụng các ràng buộc trên trật
tự thực hiện các tác động Nguyên lý của phương pháp là ở chỗ làm chậm một tácđộng nào đó cho đến thời điểm mà sự thực hiện của nó không còn có nguy cơ phá hủy
sự gắn bó của trật tự hóa (bằng cách chặn tiến trình hiện hành)
Để đảm bảo các giao dịch trên tôn trọng sự gắn bó thông tin thì người ta đưa racác phương pháp, cơ chế để đảm bảo khi giao dịch vẫn có sự gắn bó thông tin toàn vẹn
dữ liệu trên cơ sở dữ liệu phân tán là:
- Cơ chế then cài: Cho phép một giao dịch có thể giải phóng đối tượng mà
- Giao dịch hai pha: 1 Toàn bộ đối tượng bị cài then vẫn ở trong tìnhtrạng cài then cho đến cuối giao dịch và 2 Không có then cài nào có thểdiễn ra tiếp theo một then cài khác trong cùng một giao dịch
Bây giờ ta tưởng tượng rằng các đối tượng được phân tán trên nhiều trạm khác nhau vàđược nối với nhau thông qua hệ thống viễn thông và rằng các tiến trình diễn ra trên các trạmkhác nhau Hệ thống viễn thông cho phép các tiến trình trên các trạm khác nhau có thể trao