Điều khiển t−ơng tranh liên quan tới tính độc lập và nhất quán của giao tác với mục tiêu chính là đảm bảo tính nhất quán của CSDL.
Các thuật toán điều khiển t−ơng tranh chia làm hai loại: Pessimistic và Optimistic.
1. Khái niệm xung đột và lịch đầy đủ.
Quy −ớc: Oij(x) là thao tác Oj của giao tác Ti trên mục dữ liệu x. Oj={Read, Write}. Okl(x) cũng đ−ợc quy −ớc t−ơng tự.
Xung đột: Oij(x) và Okl(x) đ−ợc gọi là xung đột nếu tối thiểu một trong hai thao tác là viết (W),và không nhất thiết i phải khác k.
Lịch đầy đủ: Định nghĩa thứ tự thực hiện của các thao tác. 2. Các cơ chế điều khiển t−ơng tranh.
a. Cơ chế Optimistic:
áp dụng cơ chế này khi số giao tác xung đột không nhiều lắm.
Cơ chế Optimistic qua định: Trong khi một giao tác đang thực hiện, nếu xuất hiện xung đột cơ chế này sẽ đợi cho giao tác kết thúc sau đó mới xử lý các xung đột (Trễ việc đồng bộ các giao tác đến khi kết thúc chúng).
b. Cơ chế Pessimistic:
Cơ chế này đ−ợc áp dụng khi môi tr−ờng có nhiều giao tác xung đột.
Cơ chế Pessimistic thực hiện xử lý các xung đột ngay sau khi chúng đ−ợc phát hiện ( đồng bộ việc thực hiện các giao tác t−ơng tranh sớm trong chu kỳ thực hiện chúng ).
c. Cơ chế dựa vào khoá:
Việc đồng bộ các giao tác đạt đ−ợc bằng cách dùng khoá trên từng phần của CSDL. Kích th−ớc của các phần CSDL đ−ợc khoá này là một vấn đề quan trọng cần phải đ−ợc tính toán hợp lý. Tuy nhiên, chúng ta sẽ bỏ qua điều này và coi phần đ−ợc chọn là một đơn vị khoá.
Có các kiểu khoá nh− sau:
+ Khoá tập trung: Trên mạng có một vị trí đ−ợc thiết kế để l−u giữ các bảng khoá cho toàn bộ CSDL. Vị trí đó có nhiệm vụ nhiệm vụ phân phối khoá cho các giao tác và chỉ các giao tác có khoá mới đ−ợc truy nhập vào CSDL.
+ Khoá bản sao chính: Trong môi tr−ờng phân tán có nhiều bản sao của cùng một dữ liệu thì một bản sao (đóng vai trò là bản sao chính ) sẽ l−u giữ khoá chung cho các bản sao. Có nghĩa là muốn truy nhập vào bất kỳ bản sao nào của đơn vị khoá này phải có khoá của bản sao chính.
+ Khoá không tập trung: Nhiệm vụ khoá đ−ợc chia sẻ cho toàn bộ các vị trí trong mạng. Trong tr−ờng hợp này, việc thực hiện một giao tác đ−ợc phối hợp với các bộ lập lịch tại ít nhất là hai vị trí. Mỗi bộ lập lịch địa ph−ơng có trách nhiệm với các đơn vị khoá cục bộ tại vị trí đó.
+ Thứ tự nhãn thời gian (TO): Có nhiệm vụ tổ chức thứ tự thực hiện các giao tác, thứ tự này đ−ợc sử dụng cho cả giao tác và các mục dữ liệu đ−ợc l−u trữ trong CSDL.
Hình 5.II mô tả sự phân lớp các thuật toán điều khiển t−ơng tranh: Các thuật toán điều
khiển t−ơng tranh
Pessimistic Optimistic
Khoá Thứ tự nhãn thời gian Tập trung Bản sao chính Phân tán Cơ bản Multiversion Bảo thủConservative Lai (Hybrid) Khoá Thứ tự nhãn thời gian Hình 5.II: Sự phân lớp các điều thuật toán khiển t−ơng tranh 3. Quản lý khóa chết.
Hạn chế của các cơ chế điều khiển t−ơng tranh dựa vào khoá là trong khi thực hiện các giao tác th−ờng gặp phải khoá chết.
Các thuật toán dựa trên nhãn thời gian thì ng−ợc lại: Các giao tác không đợi khi chúng giữ quyền truy nhập vào các mục dữ liệu, trong quá trình đó nếu xảy ra xung đột bộ lập lịch đ−ợc khởi động lại bởi bộ quản lý giao tác với một nhãn thời gian mới. Cho nên cơ chế dựa trên nhãn thời gian không bao giờ dẫn
đến khoá chết. Nh−ng thay vào đó là khả năng phải khởi động lại một giao tác nhiều lần.
Định nghĩa: Khoá chết là các khoá đ−ợc nắm giữ bởi một giao tác nh−ng giao tác đó không thể truy nhập đ−ợc vào CSDL t−ơng ứng.
Ví dụ về khoá chết:
CSDL 5 CSDL 4 CSDL 1
A B
CSDL 5, CSDL 4, CSDL 1 có các khoá t−ơng ứng là 5, 4,1.
Giao tác A có khoá 5 nên truy nhập đ−ợc vào CSDL 5. A thao tác lần l−ợt trên CSDL 1 đến CSDL 4. Trong quá trình A đang thao tác với CSDL 1 thì giao tác B có khoá đ−ợc quyền truy nhập vào CSDL 4. Nh− vậy khi A thao tác xong với CSDL 1 nh−ng B ch−a thao tác xong với CSDL 4 , A sẽ phải đợi khi nào B thực hiện xong. Trong thời gian chờ A vẫn nắm giữ khoá nh−ng không truy nhập đ−ợc vào CSDL. Khoá trong tình trạng nh− vậy gọi là khoá chết.
a. Phòng ngừa khóa chết:
Ph−ơng pháp phòng ngừa không cho phép các khóa chết xảy ra:
Bộ quản lý giao tác kiểm tra một giao tác khi nó đ−ợc khởi tạo lần đầu và không cho phép nó tiếp tục nếu nó có thể dẫn đến khóa chết. Để thực hiện việc kiểm tra này, nó yêu cầu các mục dữ liệu sẽ đ−ợc truy nhập bởi một giao tác phải đ−ợc khai báo tr−ớc. Bộ quản lý giao tác cho phép một giao tác tiếp tục nếu toàn bộ mục dữ liệu cần truy nhập sẵn sàng. Ng−ợc lại, giao tác không đ−ợc phép tiếp tục.
Các hệ thống nh− vậy không phù hợp cho các môi tr−ờng CSDL. Vấn đề cơ bản là th−ờng rất khó để biết chính xác các mục dữ liệu nào đ−ợc truy nhập bởi một giao tác. Truy nhập vào các mục dữ liệu nhất định có thể phụ thuộc vào các điều kiện mà các điều kiện này có thể không đ−ợc giải quyết đến thời gian chạy.
b. Tránh khóa chết:
Cách đơn giản nhất để tránh khóa chết là sắp xếp tài nguyên và nhấn mạnh mỗi tiến trình yêu cầu truy nhập vào các tài nguyên theo thứ tự. Giải pháp này, đ−ợc đề xuất một thời gian dài cho các hệ điều hành. Các thứ tự có thể là toàn cục hoặc cục bộ. Trong tr−ờng hợp là cục bộ cần thiết sắp xếp vị trí và yêu cầu giao tác truy nhập vào mục dữ liệu tại nhiều vị trí yêu cầu khóa của chúng bằng việc duyệt các vị trí theo thứ tự định nghĩa tr−ớc.
Một cách chọn lựa khác, là sử dụng nhãn thời gian của các giao tác để định mức −u tiên giao tác và giải quyết khóa chết bởi việc loại bỏ giao tác với mức −u tiên cao hơn (hoặc thấp hơn).
3. Kết luận.
Điều khiển t−ơng tranh phân tán cung cấp tính độc lập và nhất quán của giao tác, đồng thời đảm bảo tính nhất quán của CSDL phân tán. Còn một số vấn đề cần quan tâm là:
1. Các thuật toán điều khiển t−ơng tranh.
2. Thực hiện −ớc l−ợng các thuật toán điều khiển t−ơng tranh 3. Các mô hình giao tác khác
4. Các ph−ơng pháp điều khiển t−ơng tranh khác: Có một lớp các thuật toán điều khiển t−ơng tranh khác đ−ợc gọi là “các ph−ơng pháp kiểm tra đồ thị tuần tự ”, xây dựng một đồ thị phụ thuộc và kiểm tra chu trình kín. Đồ thị phụ thuộc của một lịch S, DG(S), là đồ thị chỉ mô tả quan hệ xung đột giữa các giao tác trong S là một nút. Một cung (Ti Tj) tồn tại trong DG(S) khi và chỉ khi có một thao tác khác tr−ớc đó trong Tj. Các bộ lập lịch cập nhật các DG của mình khi một trong các điều kiện sau đ−ợc thi hành: Một giao tác mới bắt đầu trong hệ thống, một giao tác đọc hoặc ghi nhận đ−ợc bởi bộ lập lịch, một giao tác kết thúc hoặc một giao tác bị loại bỏ...
5. Mô hình thực hiện giao tác: Thực hiện tập trung và thực hiện phân tán. V. Lỗi và chịu lỗi trong hệ phân tán.
1. Các khái niệm.
Hệ thống: Là cơ chế bao gồm một tập hợp các phần tử và các tác động qua lại lẫn nhau với môi tr−ờng của chúng bởi sự đáp lại kích thích từ môi tr−ờng với một mô hình đối xử đ−ợc công nhận.
Thành phần 1 Thành phần 2 Thành phần 3 Hệ thống Môi tr−ờng Kích thích Trả lời
Hình 6.II: Giản đồ của một hệ thống
Mỗi thành phần của hệ thống tự nó cũng là một hệ thống và gọi là hệ thống con. Cách đặt các thành phần vào cùng một hệ thống đ−ợc gọi là thiết kế hệ thống.
H− hỏng (fault): Trạng thái h− hỏng phần cứng hoặc phần mềm, kết quả từ các h− hỏng của các thành phần.
Lỗi (error): Lỗi ch−ơng trình hoặc cấu trúc dữ liệu. Sự cố (failure): Các thay đổi vật lý trong phần cứng.
fault Dẫn đến error Dẫn đến failure
Hình 7.II: Dây chuyền dẫn đến lỗi hệ thống Trong hình 8.II d−ới đây mô tả các loại lỗi th−ờng gặp:
b. Tin cậy và sẵn sàng: Tính tin cậy:
Hệ thống không trải qua bất kỳ một lỗi nào trong một khoảng thời gian. Nó đ−ợc sử dụng đặc biệt để vạch ra các hệ thống không thể sửa chữa đ−ợc (nh− trong các máy tính space_based), hoặc nếu thao tác của hệ thống là nguy kịch không có thời gian chết cho sửa chữa.
Tính sẵn sàng của hệ thốngR(t):
R(t) = Pr{0 các lỗi trong thời gian [0, t] không các lỗi tại t=0}.
Minh hoạ công thức ở trên cho phần cứng, phần thông th−ờng gánh các lỗi sau sự phân tán tồi tệ. Trong tr−ờng hợp này
R(t) = Pr{0 các lỗi trong thời gian [0, t]}
Pr{k các lỗi trong thời gian [0, t] = e-m(t)[m(t)]k/k!}. Với m(t) = ∫t
0 z(x)dx. ở đây z(t) đ−ợc hiểu nh− hàm may rủi.
c. Thời gian trung bình giữa các lỗi, thời gian trung bình để sửa chữa:
MTBF: Thời gian trung bình giữa hai lỗi trong hệ thống. MTTR: Thời gian chờ đợi để sửa chữa lỗi hệ thống.
MTTF: Thời gian chờ đợi lỗi đầu tiên của hệ thống kể từ khi hệ thống khởi tạo thành công tại thời gian 0.
Công thức: MTBF = MTTF + MTTR A = MTTF / (MTBR + MTTR). 2. Các lỗi trong Hệ phân tán.
a. Lỗi giao tác.
b. Các lỗi vị trí (hệ thống):
- Dữ liệu trong bộ nhớ mất.
- Lỗi toàn bộ các vị trí trong hệ thống phân tán. - Lỗi một phần các vị trí trong hệ thống phân tán.
c. Các lỗi môi tr−ờng:
Các lỗi môi tr−ờng qui về các lỗi của các thiết bị l−u trữ: Lỗi hệ điều hành, lỗi phần cứng, lỗi các bộ điều khiển dẫn đến một phần hoặc toàn bộ CSDL có thể bị phá hủy hoặc không truy nhập đ−ợc. Khắc phục bằng sao bản và các chức năng khôi phục phân tán.
d. Các lỗi truyền thông:
Ba kiểu lỗi mô tả ở trên chung cho cả hai CSDL tập trung và CSDL phân tán. Các lỗi truyền thông chỉ cho duy nhất trong tr−ờng hợp phân tán. Kiểu
chung nhất là lỗi trong thông báo, các thông báo có thứ tự không thích hợp, mất thông báo, và lỗi đ−ờng truyền. Hai lỗi đầu thuộc về mạng máy tính (communication subnet bao gồm physical, data link, và network layers của kiến trúc ISO/OSI) chúng ta không quan tâm.
Các lỗi đ−ờng truyền là do sự phân đoạn mạng và việc không nhất quán trong CSDL và có thể giải quyết bằng cách đặt timeout.
3. Các cách chịu lỗi trong Hệ phân tán.
Có hai cách cơ bản để xây dựng hệ thống tin cậy là chịu lỗi và cấm lỗi. Chịu lỗi đ−a ra cách thiết kế hệ thống chấp nhận các lỗi sẽ xảy ra: Xây dựng hệ thống sao cho các lỗi có thể đ−ợc phát hiện và tháo bỏ hoặc đền bù tr−ớc khi chúng có thể dẫn đến kết quả là một hệ thống lỗi.
Các kỹ thuật cấm lỗi trợ giúp đảm bảo rằng hệ thống hoàn thành sẽ không chứa bất kỳ một lỗi nào.
Cấm lỗi có hai h−ớng:
+ Đầu tiên là tránh lỗi: Cách đ−a ra các kỹ thuật sử dụng để đảm bảo chắc chắn rằng các lỗi là không mở đầu trong hệ thống. Các kỹ thuật này bao gồm các ph−ơng pháp thiết kế chi tiết, và điều khiển chất l−ợng.
+ H−ớng thứ hai của cấm lỗi là tháo bỏ lỗi: Đ−a ra các kỹ thuật đ−ợc dùng để phát hiện bất kỳ lỗi nào có thể còn sót lại trong hệ thống. Chú ý rằng các kỹ thuật tháo bỏ lỗi áp dụng trong việc thực hiện hệ thống tr−ớc khi đ−a ra quyền sử dụng của hệ thống.
Các phạm trù cấm lỗi và tránh lỗi đ−ợc sử dụng xen kẽ nhau. Một tên chung khác cho cách này là không chấp nhận lỗi. Các kỹ thuật này tập trung vào việc thiết kế hệ thống sử dụng các thành phần tin cậy cao và ph−ơng pháp tinh vi của kỹ thuật gói bởi việc kiểm tra bao quát. Nh− vậy, hạn chế đ−ợc chờ đợi, giảm sự xuất hiện các lỗi hệ thống nhỏ nhất có thể. Tuy nhiên có một số môi tr−ờng bảo quản và sửa chữa thủ công là không thể, hoặc thời gian cần để sửa chữa là không chấp nhận đ−ợc trong các môi tr−ờng này. Thiết kế hệ thống chịu lỗi là cách chọn lựa phù hợp.
Cách thứ ba: Cấu trúc các hệ thống tin cậy là phát hiện lỗi. Đ−ợc dựa theo bất kỳ kỹ thuật chịu lỗi nào. Cách báo khi một lỗi xuất hiện nh−ng không
cung cấp bất kỳ biện pháp chịu lỗi nào. Vì vậy, nó có thể đ−ợc dành riêng cho việc phát hiện lỗi riêng lẻ.
Điều quan trọng cần chú ý là các lỗi hệ thống có thể tiềm tàng. Một lỗi tiềm tàng là một lỗi đ−ợc phát hiện sau thời gian nó xảy ra. Thời kỳ này đ−ợc gọi là ẩn lỗi, và thời gian ẩn lỗi trong hình trên một số các hệ thống chính đ−ợc gọi là thời gian trung bình để phát hiện lỗi (MTTD). Hình 9.II vẽ quan hệ của nhiều mức tin cậy với các xuất hiện thực sự các lỗi.
Phần III cơ sở dữ liệu phân tán trên oraclE
I. Các khái niệm cơ bản. 1. Snapshot. 1. Snapshot.
Định nghĩa: Snapshot là một yêu cầu phân tán tham chiếu tới một hay nhiều bảng chính, các View, hoặc các Snapshot khác. Mỗi sao bản của bảng chính đ−ợc gọi là một Snapshot vì thông tin có đ−ợc tại bất kỳ thời điểm nào có thể định kỳ đ−ợc "làm t−ơi ", nghĩa là làm cho các Snapshot có trạng thái t−ơng ứng với trạng thái mới nhất của bảng chính.
- Read-only Snapshot: Là một bản sao đầy đủ của một bảng hay một tập các bảng. Nó là sự phản ánh đầy đủ tình trạng mới nhất của bảng chính.
- Snapshot Updatable: Có thể sửa đổi bản sao của bảng chủ và đ−ợc định nghĩa bao hàm bản sao đầy đủ của bảng chủ hoặc tập các hàng trong bảng chủ.
Nh− vậy sự khác nhau cơ bản giữa hai loại Snapshot trên là: Snapshot Updatable cho các yêu cầu và cập nhật, các Read-only Snapshot chỉ cho các yêu cầu.
2. Sao bản cơ sở.
Sao bản cơ sở là sao bản sử dụng các Read-only Snapshot và tuân theo một dạng của vị trí sao bản đầu tiên. Dữ liệu ở các Read-only Snapshot sẽ đ−ợc làm t−ơi định kỳ, quá trình này đ−ợc so sánh t−ơng tự nh− việc cập nhật các thay đổi về dữ liệu từ bảng CSDL chính của các Read-only Snapshot.
3. Các nhóm sao bản ( Replication Groups).
Các nhóm sao bản: Kết hợp một đặc tính ứng dụng chung và đ−ợc sao bản tới một tập các vị trí.
Oracle cho phép sao bản: * Các bảng.
* Các đối t−ợng chứa các bảng: Views, Trigges, Packages, Indexes, Sequences, Synonyms.
4. Các vị trí sao bản (Replication Sites).
- Các vị trí chủ ( Master sites): Phải chứa một bản sao đầy đủ (A full copy) của tất cả các đối t−ợng trong sao bản nhóm. Mỗi vị trí chủ sẽ chuyển các thay đổi của nó tới vị trí chủ khác cho các nhóm sao bản.
- Các vị trí Snapshot (Snapshot sites): Là vị trí có thể chứa một hay một tập các đối t−ợng trong nhóm sao bản.
5. Danh mục sao bản.
Sao bản sử dụng một danh mục sao bản thông tin, giống nh− các đối t−ợng đ−ợc sao bản, nơi chúng đ−ợc sao bản và cập nhật nh− thế nào cần đ−ợc truyền tới danh mục sao bản , từ đó các bảng dữ liệu có thể quay trở lại và tìm đ−ợc.
6. Database link.
Là một đối t−ợng nằm trong CSDL địa ph−ơng cho phép truy nhập tới các đối t−ợng khác trên CSDL ở xa hoặc kết nối với CSDL ở xa trong chế độ Read-only. CSDL ở xa có thể là CSDL Oracle hoặc không phải là Oracle.
Cú pháp lệnh tạo Database link:
CREATE [PUBLIC] DATABASE LINK dblink [CONNECT TO user IDENTIFIED BY password]
[USING 'connect_string'];
Public: Các user dùng chung Database link. Dblink: Tên Database link.
User: Tên user mà ta muốn kết nối tới.
Password: Mật khẩu của user mà ta muốn kết nối tới.