An toàn dữ liệu
- Bảo vệ cơ sở dữ liệu chống lại sự truy cập bất hợp pháp
- Cần cơ chế cho phép:
- Nhận biết người dùng (Authentication)
- Xác định thao tác hợp lệ với từng (nhóm) người dùng (Authorization)
Ràng buộc dữ liệu
- Mục đích: định nghĩa tính đúng đắn của dữ liệu trong toàn bộ cơ sở dữ liệu
- Phân loại
- Ràng buộc về miền giá trị
- Ràng buộc về khóa
Toàn vẹn dữ liệu
- Mục đích: đảm bảo tính đúng đắn của dữ liệu trong quá trình thao tác (thêm, sửa, xóa dữ liệu)
- Yêu cầu:
- Kiểm tra ràng buộc toàn vẹn dữ liệu khi thực hiện thao tác thêm, sửa, xóa sử dụng Trigger
- Kiểm tra tính đúng đắn của các thao tác trên cơ sở dữ liệu
Trigger
- là các xử lí được gắn với các bảng
- Được thực hiện tự động trước/sau/thay thế các thao tác thêm, sửa, xóa bản ghi
Giao dịch (Transaction)
- Là một tập các thao tác được xử lí như một đơn vị không chia cắt được
- Cho phép đảm bảo tính nhất quán và tính đúng đắn của dữ liệu
- Tính chất ACID:
- Atomicity: Hoặc toàn bộ hành động của giao dịch được thực hiện, hoặc không hành nào được thực hiện.
- Consistency: Dữ liệu được đảm bảo nhất quán trước và sau khi kết thúc giao dịch. Các ràng buộc không bị phá vỡ.
- Isolation: Giao dịch được thực hiện độc lập với các giao dịch tiến hành đồng thời.
- Durability: Mọi thay đổi mà giao dịch thực hiện trên cơ sở dữ liệu phải được ghi nhận bền vững (VD: ghi trên bộ nhớ ngoài)
- Các trạng thái có thể của giao dịch:
- Active: giao dịch hoạt động
- Partially committed: giao dịch được thực hiện một phần
- Commited: giao dịch hoàn thành, mọi thay đổi được lưu trữ bền vững
- Failed: giao dịch không thành công, hủy bỏ mọi thay đổi trước đó (nếu có)
- Aborted: giao dịch bị dừng
Điều khiển tương tranh (Concurrency control)
- Mục đích: tránh đụng độ giữa các giao dịch trên cùng một đối tượng có thể làm mất tính nhất quán dữ liệu
- Kỹ thuật khóa (Locking): đảm bảo việc truy nhập đến các dữ liệu được thực hiện theo phương pháp loại trừ nhau
- Khóa chia sẻ: chỉ đọc, không thể ghi dữ liệu
- Khóa độc quyền: có thể đọc và ghi dữ liệu
- Khóa chết (Deadlock) xảy ra khi các thành viên (giao dịch, tiến trình,...) trong một nhóm đều không thể kết thúc do phải đợi các thành viên còn lại mở khóa đang nắm giữ. Vấn đề này cần có giải pháp giải quyết riêng cho từng yêu cầu cụ thể.