Phân quyền truy xuất

Một phần của tài liệu bài giảng cơ sở dữ liệu (Trang 88 - 93)

6.2 Phân quyền truy xuất 6.2 Phân quyền truy xuất 6.2 Phân quyền truy xuất

Việc phân quyền truy xuất là do ng−ời quản trị cơ sở dữ liệu quyết định. Nó bao gồm việc tạo ra quyền account cho một ng−ời sử dụng (user name và password) và các quyền truy xuất cho ng−ời đó:

- Quyền truy vấn trên một bảng.

-Quyền tạo một bảng mới , xoá bảng, thay đổi bảng.

-Quyền chèn, cập nhật và xoá.

Trong SQL phát biểu GRANT và REVOKE đ−ợc dùng để cấp quyền và t−ớc quyền truy xuất của một user.

Cú pháp:

GRANT <quyền> ON <đối t−ợng> TO <users> [WITH GRANT OPTION] GRANT <quyền> ON <đối t−ợng> TO <users> [WITH GRANT OPTION] GRANT <quyền> ON <đối t−ợng> TO <users> [WITH GRANT OPTION] GRANT <quyền> ON <đối t−ợng> TO <users> [WITH GRANT OPTION]

Đối t−ợng th−ờng là bảng.

Mệnh đề WITH GRANT OPTION để cho phép users có quyền cấp quyền truy xuất cho user khác.

REVOKE [GRANT OPTION FOR] <quyền> ON <đối t−ợng> FROM REVOKE [GRANT OPTION FOR] <quyền> ON <đối t−ợng> FROM REVOKE [GRANT OPTION FOR] <quyền> ON <đối t−ợng> FROM REVOKE [GRANT OPTION FOR] <quyền> ON <đối t−ợng> FROM <users>

<users> <users>

<users> { RESTRICT | CASCADE}{ RESTRICT | CASCADE}{ RESTRICT | CASCADE}{ RESTRICT | CASCADE}

Mệnh đề GRANT OPTION FOR chỉ t−ớc bỏ quyền cấp quyền truy xuất cho user khác.

Từ khoá CASCADE dùng để xoá quyền của user đó và các users khác mà user đó đã cấp quyền.

Từ khoá RESTRICT dùng để chỉ xoá quyền của user đó mà thôi. Ví dụ: User U1:

GRANT SELECT ON TABLE S TO U2 WITH GRANT OPTION User U2:

GRANT SELECT ON TABLE S TO U3 WITH GRANT OPTION User U3:

GRANT SELECT ON TABLE S TO U4 WITH GRANT OPTION User U1

REVOKE SELECT ON TABLE TO U2 CASCADE Lúc đó U2, U3, U4 sẽ bị mất quyền SELECT trên bảng S User U1

REVOKE SELECT ON TABLE TO U2 RESTRICT Lúc đó chỉ có U2 mất quyền SELECT

Ch−ơng 7 Phục hồi dữ liệu và tính nguyên tố Ch−ơng 7 Phục hồi dữ liệu và tính nguyên tốCh−ơng 7 Phục hồi dữ liệu và tính nguyên tố Ch−ơng 7 Phục hồi dữ liệu và tính nguyên tố

7.1 Phân loại hỏng hóc 7.1 Phân loại hỏng hóc 7.1 Phân loại hỏng hóc 7.1 Phân loại hỏng hóc

7.1.1 Các loại l−u trữ

Các loại l−u trữ truyền thống đ−ợc phân biệt bởi tốc độ, dung l−ợng và khả năng phục hồi hỏng hóc. Chúng đ−ợc phân loại nh− sau:

•L−u trữ biến động: _ L−u trữ vào bộ nhớ chính _ Khả năng truy xuất nhanh

_ Không thể cứu lại thông tin nếu hệ thống có sự cố

•L−u trữ bất biến:

_ L−u trữ trên đĩa hoặc băng từ

_ Đĩa có độ tin cậy hơn bộ nhớ chính nh−ng kém hơn băng từ. _ Thông tin vẫn tồn tại và có thể cứu đ−ợc khi hệ thống có sự cố.

_ Nó là đối t−ợng hỏng hóc gây nên sự mất mát thông tin _ Tốc độ truy xuất chậm hơn bộ nhớ chính. (adsbygoogle = window.adsbygoogle || []).push({});

•L−u trữ vững chắc:

_ Thông tin chứa trên kiểu l−u trữ ổn định không bao giờ (ổn định) bị mất.

_ Nhân bản (dữ liệu) thông tin vào nhiều đĩa l−u trữ.

7.1.2 Các kiểu hỏng hóc .

_ Lỗi luận lý : Giao tác không thể tiếp tục do 1 số điều kiện nh− dữ liệu nhập sai, dữ liệu không tìm thấy, tràn, giới hạn tài nguyên ...

_ Lỗi hệ thống : Hệ thống đi vào 1 trạng thái không mong muốn nh− deadlock (khoá chết). Kết quả là giao tác không thể tiếp tục. Tuy nhiên hệ thống có thể đ−ợc thực thi lại sau 1 thời gian.

_ Hệ thống hỏng : Mất thông tin trong bộ nhớ chính nh−ng trong đĩa còn nguyên.

_ Hỏng đĩa : Mất thông tin trên đĩa. 7.2 Sự phân cấp l−u trữ.

7.2 Sự phân cấp l−u trữ. 7.2 Sự phân cấp l−u trữ. 7.2 Sự phân cấp l−u trữ.

-Hệ CSDL th−ờng trú trên đĩa. CSDL đ−ợc phân chia vào các đơn vị l−u trữ kích th−ớc cố định đ−ợc gọi là blocks.

-Các thao tác (phép toán) xuất nhập đ−ợc thực hiện trên các đơn vị blocks.

-Các blocks th−ờng trú trên đĩa đ−ợc gọi là blocks vật lý trong khi các blocks th−ờng trú tạm trên bộ nhớ chính đ−ợc gọi là buffer blocks.

-Một block có thể chứa nhiều mẫu dữ liệu. Ta giả sử không có mẫu dữ liệu d−ợc l−u trữ trên 2 hay nhiều blocks.

-Sự di chuyển block giữa đĩa và bộ nhớ chính đ−ợc thực hiện qua 2 phép toán sau (hình 7.1):

Input (x) : chuyển block vật lý chứa mẫu dữ liệu X vào bộ nhớ chính. Output (x) : ng−ợc lại.

Hình 7.1Các phép toán l−u trữ khối

- Các giao tác t−ơng tác với hệ cơ sở dữ liệu bởi sự chuyển dữ liệu từ các biến ch−ơng trình vào cơ sở dữ liệu và ng−ợc lại. Sự chuyển dữ liệu này đ−ợc thực hiện bởi 2 phép toán sau :

• Read (X, xI) : gán giá trị của mẫu dữ liệu X vào biến cục bộ xi . Phép toán đ−ợc thực hiện nh− sau:

1/ If If If block chứa X không th−ờng trú trên bộ nhớ chính then input (x). If 2/ xi : = X từ buffer block

• Write (X, x): gán giá trị biến cục bộ x vào mẫu dữ liệu X trên A B A B Input A Input B Disk Main memory

1/ IfIfIf block chứa X không th−ờng trú trên bộ nhớ chính then input (x). If 2/ X : = xi trong buffer block.

- Cuối cùng buffer block cũng đ−ợc ghi vào đĩa vì cần không gian bộ nhớ hoặc do hệ thống cơ sở dữ liệu quyết định bằng thao tác output (x). - Khi 1 thao tác cần truy xuất mẫu dữ liệu X lần đầu tiên , nó phải thực hiện read (X, xi). ∀ cập nhật X đều đ−ợc thể hiện trên xi . Cuối cùng giao tác phải thực hiện write (X, xi) để phản ảnh sự thay đổi trong CSDL.

- Thao tác Output (x) không cần thực hiện ngay sau lệnh Write (X, xi), vì X vẫn còn đ−ợc truy xuất do đó thao tác Output đ−ợc thực hiện sau. Nếu hệ thống hỏng sau khi Write (X, xi) đ−ợc thực hiện nh−ng tr−ớc Output (X) thì giá trị mới của X không bao giờ đ−ợc ghi lên đĩa.

7.3 Mô hình giao tác. 7.3 Mô hình giao tác. 7.3 Mô hình giao tác. 7.3 Mô hình giao tác.

Một giao tác là 1 đơn vị ch−ơng trình mà truy xuất và có thể cập nhật lên các mẫu dữ liệu.

Mỗi mẫu dữ liệu đ−ợc đọc chính xác 1 lần bởi 1 giao tác và đ−ợc ghi 1 lần nếu nó cập nhật dữ liệu đó.

Các giao tác không đ−ợc vi phạm các ràng buộc toàn vẹn . Nếu cơ sở dữ liệu nhất quán khi giao tác bắt đầu thì cơ sở dữ liệu phải nhất quán sau khi giao tác kết thúc thành công. Tuy nhiên trong quá trình thực thi giao tác thì cho phép dữ liệu không nhất quán. Sự nhất quán tạm thời có thể dẫn đến khó khăn khi 1 hỏng hóc xảy ra.

7.3.1 Ví dụ

Một giao tác T chuyển $50 từ account A → account B. T : read (A, a1 ) a1 : = a1 - 50 write (A, a1 ) read (B, b1 ) b1 : = b1 + 50 write (B, b1 )

Ta có ràng buộc toàn vẹn : A + B = const Giả sử: _ Ban đầu A = $1000 (adsbygoogle = window.adsbygoogle || []).push({});

_ Bộ nhớ chính chứa buffer block của A nh−ng không có B. _ Sự cố xảy ra sau khi output (A) đã thực hiện nh−ng output(B) ch−a thực hiện.

7.3.2 Tính đúng đắn và tính nguyên tố.

Tính đúng đắn : Mỗi 1 giao tác phải là 1 ch−ơng trình bảo vệ tính nhất quán dữ liệu.

Tính nguyên tố : ∀ phép toán trong 1 giao tác phải đ−ợc thực thi đầy đủ hoặc không có cái nào đ−ợc thực thi.

- Bảo đảm tính đúng đắn là nhiệm vụ của lập trình viên

- Bảo đảm tính nguyên tố là trách nhiệm của hệ thống quản trị cơ sở dữ liệu đặc biệt là thành phần quản lý giao tác.

Nếu không có sự cố thì tính nguyên tố đ−ợc thực hiện dễ dàng, nh−ng không phải giao tác nào cũng hoàn tất. Giao tác không hoàn tất đ−ợc gọi là giao tác bị bỏ dở (aborted). Để đảm bảo tính nguyên tố, 1 giao tác bị bỏ dở không đ−ợc gây ảnh h−ởng lên trạng thái của cơ sở dữ liệu. Vì thế, trạng thái của cơ sở dữ liệu phải đ−ợc phục hồi trở lại (restored) đến trạng thái ban đầu tức phục hồi nguyên trạng ngay tr−ớc khi giao tác trong câu hỏi đ−ợc bắt đầu thực hiện. Chúng ta gọi giao tác nh− thế đ−ợc là giao tác đ−ợc quay lùi lại (rolled back). Thao tác quay lui là chức năng của quá trình phục hồi dữ liệu để quản lý các giao tác bị bỏ dở.

_ Một giao tác hoàn thành tốt đ−ợc gọi là giao tác đ−ợc xác nhận (committed). Một giao tác đ−ợc xác nhận mà thể hiện các cập nhật sẽ chuyển trạng thái của cơ sở dữ liệu đến 1 trạng thái nhất quán mới.

_ ảnh h−ởng của 1 giao tác đ−ợc xác nhận không thể làm lại (undo) bởi 1 giao tác bị bỏ dở. Nó chỉ đ−ợc hủy bởi 1 giao tác đền bù. Sự bắt đầu của 1 giao tác nh− thế th−ờng là trách nhiệm của ng−ời sử dụng chứ không phải của hệ thống cơ sở dữ liệu.

Một phần của tài liệu bài giảng cơ sở dữ liệu (Trang 88 - 93)