Khi xảy ra sự cố hệ thống, CSDL trong vùng đệm bị hủy, vì thế DBMS cần phải duy trì một số thông tin về trạng thái của nó lúc xảy ra sự cố, để đưa CSDL về trạng thái đúng đắn. Ta gọi đó là quá trình phục hồi thông tin.
Có hai khả năng là cập nhật tại chỗ và cập nhật ngoại vùng. Cập nhật tại chỗ làm thay đổi giá trị của CSDL ổn định. Kết quả là giá trị trước đó đều bị mất. Còn cập nhật ngoài vùng không thay đổi giá trị mục dữ liệu trong CSDL ổn định, mà duy trì giá trị mới riêng biệt. Theo định kỳ, giá trị này được tích hợp vào CSDL ổn định. Việc thực thi thao tác cập nhật có thể dựa vào thông tin trong nhật ký CSDL (log file) để chuyển trạng thái CSDL cũ sang trạng thái CSDL mới. Cơ sở dữ liệu ổn định Bộ quản lý khôi phục cục bộ LRM Bộ quản lý vùng đệm CSDL Vùng đệm CSDL (CSDL khả hủy) Bộ nhớ chính Đọc/ ghi Fetch/ flush Đọc/ ghi Bộ nhớ thứ cấp Vùng đệm nhật ký Đọc/ ghi Nhật ký ổn định Đọc/ ghi Hình 1.10: Giao diện nhật ký CSDL
Trường hợp một giao dịch đã được hoàn thành nhưng dữ liệu cập nhật còn đang ở trong bộ đệm thì xảy ra một sự cố. Khi đó cần phải tiến hành phục hồi để cập nhật thông tin mới này vào CSDL. Ngược lại, khi một giao dịch chưa được hoàn thành hoàn toàn thì phải thực hiện thao tác loại bỏ để loại những thao tác đã thực hiện trước đó của giao dịch.
Thao tác cập nhật Trạng thái đúng đắn cũ Trạng thái đúng đắn mới Nhật ký CSDL Hình 1.11: Thực thi thao tác cập nhật
REDO Trạng thái đúng đắn cũ Trạng thái đúng đắn mới Nhật ký CSDL Hình 1.12: Hành động REDO UNDO Trạng thái đúng đắn mới Trạng thái đúng đắn cũ Nhật ký CSDL Hình 1.13: Hành động UNDO
1.6.3 Một số giao thức khả tín phân tán
Giao thức ủy thác 2 pha (two-phase commit 2PC)
Khởi tạo Ghi begin_commit vào nhật ký Đợi Có ai “NO”? Ghi commit vào nhật ký Commit Ghi end_of_transaction vào nhật ký Abort Ghi abort vào
nhật ký
Ghi abort vào nhật ký
Ghi ready vào nhật ký Khởi tạo Sẵn sàng ủy thác? Ready Thông báo gì?
Ghi abort vào nhật ký
Ghi commit vào nhật ký
Abort Commit Điều phối viên Thành viên
Không Có Không Sẵn sàng Commit Abort Chuẩn bị Đồng ý bỏ qua Đồng ý commit Bỏ qua toàn cục Commit toàn cục ACK ACK Đơn phương hủy bỏ
Giao thức ủy thác 3 pha (three-phase commit 3PC) Khởi tạo Ghi begin_commit vào nhật ký Đợi Có ai “NO”? Ghi prepare_to_commit vào nhật ký Pre-commit Ghi end_of_transaction vào nhật ký Abort Ghi abort vào
nhật ký
Ghi abort vào nhật ký
Ghi ready vào nhật ký Khởi tạo Sẵn sàng ủy thác? Ready Thông báo gì?
Ghi abort vào nhật ký
Ghi pre_commit vào nhật ký
Abort Pre_commit
Điều phối viên Thành viên
Không Có Không Sẵn sàng Prepare_to _commit Abort Chuẩn bị Đồng ý bỏ qua Đồng ý commit Bỏ qua toàn cục Chuẩn bị commit ACK ACK Đơn phương hủy bỏ
Ghi commit vào nhật ký
Commit Ghi commit vào
nhật ký
Commit
Commit Sẵn sàng
commit
1.7 Vấn đề An toàn dữ liệu
Vấn đề an toàn dữ liệu là để đảm bảo dữ liệu an toàn trước những truy cập trái phép từ bên ngoài vào hệ thống CSDL, khả năng chống lại những hiểm hoạ, các lỗi và sự tác động không mong đợi tới hệ thống, đồng thời đảm bảo tính sẵn sàng đối với người sử dùng hợp pháp.
1.7.1 Vấn đề An toàn mạng
An toàn mạng nhằm chống lại các kiểu tấn công có thể xảy ra trên mạng. Có 3 kiểu tấn công chủ yếu là
Tấn công liên lạc: Kẻ đột nhập có thể thu trộm các thông tin nếu đường truyền tin là truyền dẫn vô tuyến, truyền dẫn trên đường điện thoại..
Tấn công modem: Việc tấn công dựa trên đặc tính của modem và cấu hình cơ bản do người dùng modem chọn. Việc truy nhập qua modem hầu như không giới hạn về dữ liệu và tài nguyên hệ thống.
Tấn công hệ thống mạng: dựa vào tính kết nối của các thành phần trong mạng. Kẻ đột nhập có thể giả mạo, sử dụng lại, hoặc ngăn chặn người sử dụng có quyền.
Để góp phần làm an toàn mạng, có 3 cách cơ bản: Mã hóa dữ liệu.
Sử dụng các giao thức: các giao thức để xác thực và bảo mật. Được sử dụng để liên kết các thành phần trong mạng
Sử dụng các thành phần tin cậy: các thành phần này thường cung cấp những phương tiện tốt nhất để bảo vệ hoạt động của các cơ chế đảm bảo an toàn mạng.
1.7.2 Vấn đề An toàn CSDL
Việc tấn công CSDL có thể phân ra như sau: Tấn công làm lộ các thông tin trong CSDL
Tấn công làm thay đổi thông tin được lưu trữ trong CSDL
Tấn công làm cho các cá nhân được cấp quyền không truy nhập được các thông tin trong CSDL.
Các công cụ bảo vệ CSDL thường dùng là quản lý khung nhìn, quản lý an toàn dữ liệu, kiểm soát toàn vẹn ngữ nghĩa
1.7.3 Quản lý khung nhìn
Lược đồ ngoài cho phép người sử dụng có một hình ảnh cụ thể về CSDL, hay còn gọi là khung nhìn. Nó không được lưu trữ thực sự trong CSDL. Người dùng chỉ được phép truy xuất CSDL qua khung nhìn, không nhìn thấy hay tác động được lên CSDL.
1.7.4 An toàn dữ liệu
An toàn dữ liệu bao gồm việc bảo vệ dữ liệu và kiểm soát cấp quyền.
Phương pháp chính là mã hóa dữ liệu dùng cho các thông tin trên đĩa và thông tin trao đổi trên mạng. Việc mã hóa là do hệ điều hành phụ trách. Dữ liệu chỉ có thể được giải mã bởi người dùng được phép. Có hai cách chính để mã là sử dụng mã DES và phương pháp mã hóa công khai.
Kiểm soát cấp quyền đảm bảo chỉ những người sử dụng được phép mới được thực hiện các thao tác được phép trên CSDL. Việc kiểm soát này cũng do hệ điều hành đảm nhiệm. Cấp quyền sao cho những người sử dụng khác nhau có quyền khác nhau trên một đối tượng.
Kiểm soát cấp quyền tập trung
Cấp quyền tập trung liên quan đến 3 nhân tố: người sử dụng, các thao tác gắn với ứng dụng, các đối tượng CSDL được các thao tác. Kiểm sóat cấp quyền gồm việc kiểm tra xem một bộ ba này.
Người sử dụng có thể được kiểm soát qua phương pháp đăng nhập thông thường dùng username, password.
Đối tượng cần bảo vệ là các tập con CSDL như khung nhìn, quan hệ, bộ, thuộc tính… Để cấp quyền và thu hồi quyền, ta có thể sử dụng lệnh sau
GRANT <kiểu thao thác> ON <đối tượng> TO <người sử dụng> REVOKE <kiểu thao thác> FROM <đối tượng> TO <người sử dụng> Trong đó kiểu thao tác là các kiểu INSERT, UPDATE, SELECT, DELETE…
Ngoài ra, việc kiểm soát có thể là tập trung vào một người, người này có quyền trên mọi đối tượng và là người dùng các lệnh Grant, Revoke để cấp quyền cho người khác. Kiểm soát phi tập trung thì người tạo ra đối tượng là người có
mọi quyền đối với đối tượng đó và có thể trao quyền cho người khác, và có thể dùng cây phân cấp quyền để kiểm soát.
Kiểm soát cấp quyền phân tán
Trong môi trường phân tán, đối tượng và người dùng là phân tán, do đó phải quan tâm tới việc cấp quyền cho người dùng ở xa, quản lý các quy tắc cấp quyền phân tán, xử lý khung nhìn, nhóm người dung….
Cấp quyền cho người dùng ở xa: Có hai cách để nhận diện người dùng Dùng user name, password được nhân bản ở tất cả các vị trí.
Tất cả các vị trí trong hệ được nhận diện và xác nhận bằng một mật khẩu của vị trí. Cách này làm cố định hệ thống.
1.7.5 Kiểm soát toàn vẹn ngữ nghĩa
Hệ CSDL phải đảm bảo tính nhất quán. Một trạng thái CSDL là nhất quán nếu nó thỏa mãn một tập các ràng buộc. Để duy trì tính nhất quán, phải sử dụng nhiều cơ chế như điều khiển đồng thời, tăng độ tin cậy, bảo vệ kiểm soát toàn vẹn ngữ nghĩa.
Có hai loại ràng buộc toàn vẹn:
Ràng buộc cấu trúc: diễn tả những đặc tính ngữ nghĩa cơ bản vốn có trong mô hình. Ví dụ như ràng buộc khóa.
Ràng buộc hành vi: điều hòa hoạt động của ứng dụng diễn tả mối quan hệ giữa các đối tượng, mô tả các đặc tính cấu trúc của đối tượng.
Phương pháp khai báo dùng để giảm bớt các vấn đề về sự phụ thuộc chương trình, dữ liệu, tính dư thừa mã. Các ràng buộc được diễn tả qua các phán đóan của phép toán vị từ nên có thể khai báo và điều chình dễ dàng.
Kiểm soát toàn vẹn ngữ nghĩa tập trung
Một hệ thống kiểm soát toàn vẹn ngữ nghĩa có hai thành phần chính: Một ngôn ngữ cho phép diễn tả và thao tác các phán đoán toàn vẹn Một cơ chế để thực hiện các hoạt động cụ thể để đảm bảo toàn vẹn
khi cập nhật.
Đặc tả các ràng buộc toàn vẹn phải sử dụng một ngôn ngữ cấp cao (SQL).
Các ràng buộc được định nghĩa vào lúc tạo các quan hệ hoặc sau đó. Trong hệ CSDL quan hệ, ràng buộc toàn vẹn được định nghĩa là các phán đoán. Một phán
đoán là một biểu thức đặc biệt được viết bằng phép tính quan hệ. Có 3 loại ràng buộc toàn vẹn:
Ràng buộc tiền định: Ràng buộc các thuộc tính không null, ràng buộc khóa duy nhất, khóa ngoại, phụ thuộc hàm…
Dùng các cấu trúc <thuộc tính>NOT NULL IN<bảng>, <thuộc tính>UNIQUE IN<bảng>, <thuộc tính>IN<bảng> REFERENCE<thuộc tính>IN<bảng>., <thuộc tính>IN<bảng> DETERMINES<thuộc tính>.
Ràng buộc tiền dịch: diễn tả các tiền điều kiện phải được thảo mãn bởi các bộ trong một quan hệ đối với các kiểu cập nhật đã cho. Dùng cấu trúc CHECK ON <bảng> WHEN <kiểu cập nhật> (điều kiện cập nhật).
Ràng buộc tổng quát: hệ CSDL phải đảm bảo những chức năng này luôn đóng. Ràng buộc này có thể liên quan tới nhiều quan hệ. Dùng cấu trúc CHECK ON danh sách <thuộc tính: bảng (điều kiện)>.
Thực thi ràng buộc nhằm loại bỏ các chương trình cập nhật vi phạm ràng
buộc nào đó. Có hai phương pháp:
Phát hiện mâu thuẫn: hay còn gọi là phương pháp kiểm tra sau: áp dụng sau khi trạng thái CSDL đã thay đổi. Thao tác cập nhật u
chuyển CSDL từ trạng thái D sang trạng thái Du. Thuật toán xác định các ràng buộc vẫn đóng trên Du bằng cách kiểm tra Du. Nếu Du không phải là một trạng thái nhất quán thì DBMS sẽ cố gắng hiệu chỉnh Du để đưa CSDL sang trạng thái Du’, hoặc khôi phục lại Du. Tuy nhiên, phương pháp này không hiệu quả nếu phải thực hiện nhiều thao tác hiệu chỉnh.
Ngăn chặn mâu thuẫn: Thao tác cập nhật chỉ được thực hiện nếu nó chuyển CSDL sang một trạng thái nhất quán khác. Nó kiểm tra giá trị các bộ cần cập nhật trước khi cập nhật. Đây là phương pháp kiểm tra trước, hiệu quả hơn do không phải khôi phục các thao tác. Phương pháp này hiệu chỉnh các truy vấn bằng cách lấy hội các vị từ phán đoán với các vị từ cập nhật của mỗi chỉ thị của giao dịch.
Cách để tạo phán đoán biên dịch có thể thực hiện vào lúc định nghĩa phán đoán. u là một cập nhật trên quan hệ R. R+ sẽ chứa các bộ được chèn vào R, R- chứa các bộ bị xóa khỏi R. Nếu u là thao tác chèn thì R- là rỗng. Nếu u là xóa thì R+là rỗng. u là phép biến đổi thì sau sửa đổi R= R+ hợp với hiệu của R và R-.
Một phán đoán biên dịch là một bộ ba (RTC) với R là quan hệ, T là kiểu cập nhật, C là phán đoán. Nếu I là một ràng buộc, ta sẽ định nghĩa ra một tập các phán đoán biên dịch cho các quan hệ được I tác động. Khi có một quan hệ có trong I được cập nhật bởi u thì các phan đoán biên dịch cần phải được kiểm tra, và chỉ cho những phán đoán đã được định nghĩa trên I đối với kiểu u được thực hiện mà thôi.
Kiểm soát toàn vẹn ngữ nghĩa phân tán
Ta giả thiết rằng, hệ thống là tự trị vị trí, mỗi vị trí đều có thể xử lý các câu truy vấn cục bộ và thực hiện kiểm soát dữ liệu.
Định nghĩa các phán đoán toàn vẹn phân tán. Các phán đoán toàn vẹn phân tán được diễn tả bằng các phép tính quan hệ bộ. Ta có thể chia làm 3 lớp phán đoán
Phán đoán riêng: là các phán đoán đơn biến, đơn quan hệ, chỉ đề cập đến các bộ được cập nhật, độc lập với phần còn lại của CSDL.
Phán đoán hướng tập hợp: gồm các ràng buộc đa biến, đơn quan hệ như phụ thuộc hàm, hoặc đa biến đa quan hệ như các ràng buộc khóa ngoại.
Phán đoán có các hàm gộp: đòi hỏi phải được xử lý đặc biệt do chi phí ước lượng hàm gộp cao.
Việc định nghĩa phán đoán toàn vẹn được thực hiện qua hai bước. Bước 1 là biến đổi các phán đoán ở cấp cao thành các phán đoán biên dịch theo các kỹ thuật của tập trung. Bước 2 là lưu các phán đoán này tùy theo nó thuộc lớp phán đoán nào.
Với phán đoán riêng thì định nghĩa phán đoán được gửi tới mọi vị trí lưu trữ các đoạn của quan hệ có mặt trong phán đoán. Phán đoán phải tương thích với dữ liệu của quan hệ tại mỗi vị trí. Tính tương thích ở đây gồm 2 mức là
Tương thích vị từ: xây dựng bằng cách so sánh vị từ phán đoán với vị từ mảng. Một phán đoán C không tương tích với vị từ mảng p nếu C đúng mà p sai. Nếu tính tương thích vị trí không được đảm bảo thì định nghĩa phán đoán đó phải được loại bỏ toàn cục do bộ các đoạn này không thảo mãn tính ràng buộc.
Nếu có tương thích vị từ rồi thì phán đoán sẽ được thẩm tra ứng với thể hiện của đoạn. Nếu thể hiện đó không thỏa phán đoán thì phán
đoán cũng bị hủy bỏ ở mức toàn cục. Nếu tương thích thì nó sẽ được lưu tại mọi vị trí có chứa đoạn.
Với phán đoán hướng tập hợp, định nghĩa phán đoán có thể gửi tới tất cả các vị trí có chứa các đoạn mà các biến trong phán đoán tham chiếu tới. Nó đòi hỏi phải nối mỗi đoạn của quan hệ R với tất cả các đoạn của quan hệ S tùy theo vị từ nối. Vị từ nối có thể đòi hỏi một bộ của S phải đối sánh với một bộ của R ở cùng vị trí, mỗi bộ của R phải đối sánh với tối đa một đoạn của S, hoặc mỗi bộ của R phải đối sánh với tất cả các đoạn của S. Nếu phán đóan là tương thích thì nó sẽ được lưu tại mọi vị trí liên quan.
Cơ chế thi hành. Việc thi hành phụ thuộc vào lớp phán đoán, kiểu cập nhật, bản chất vị trí đưa ra yêu cầu cập nhật, chi phí truyền dữ liệu.
Phán đoán riêng: nếu cập nhật yêu cầu chèn, thì mọi bộ cần chèn phải được cung cấp, phán đoán riêng được thi hành tại mọi vị trí đưa ra cập nhật. Nếu là xóa, sửa đổi thì nó sẽ được gửi tới vị trí lưu quan hệ cần cập nhật và tiến hành tại đó
Phán đoán hướng tập hợp: giả sử có một quan hệ A và phán đoán C. Một thao tác cập nhật được thựchiện và trả về một hoặc 2 quan hệ tạm thời. Các quan hệ này được gửi đến mọi vị trí lưu A. Mỗi vị trí này sẽ phải phán đoán C. Nếu phán đoán không được thỏa tại một vị trí nào đó thì vị trí đó sẽ gửi thông báo lỗi, việc cập nhật trở nên không có giá trị, Hệ thống kiểm soát toàn vẹn ngữ nghĩa sẽ phải quyết định xem toàn bộ chương trình có bị loại bỏ hay không. Với