CHƯƠNG 1. GIỚI THIỆU Nội dung chính: Trong chương này, chúng ta sẽ tìm hiểu về Hệ quản trị CSDL và nhà quản trị CSDL. Mục tiêu cần đạt: Sau khi học xong chương này, sinh viên có thể: • Định nghĩa hệ quản trị cơ sở dữ liệu (HQTCSDL) • Hiểu các chức năng, thành phần của một HQTCSDL. • Hiểu kiến trúc của HQTCSDL đa người dùng • Hiểu được vai trò, nhiệm vụ của nhà quản trị CSDL.
Định nghĩa hệ quản trị CSDL Hệ quản trị CSDL (HQTCSDL) là một hệ thống phần mềm cho phép người dùng định nghĩa, tạo và duy trì CSDL đồng thời cung cấp dịch vụ truy cập đến CSDL này một cách có quản lý. Chúng ta cần lưu ý là HQTCSDL chỉ là một phần của một hệ thống CSDL (database system). Như minh họa trong hình bên dưới, ngoài HQTCSDL, một hệ CSDL còn bao gồm các CSDL và các chương trình ứng dụng phục vụ cho người dùng cuối trong hệ thống. Các HQTCSDL phổ biến hiện nay bao gồm Oracle của tập đoàn Oracle, DB2 của IBM, MS SQL Server của Microsofts.
Ngoài ra còn có MS Access của Microsoft và các phần mềm nguồn mở như MySQL, PostGreSQL, … 1. Chức năng của hệ quản trị CSDL Lưu trữ, truy xuất và cập nhật dữ liệu Đây là các chức năng cơ bản của một HQTCSDL. Người dùng có thể lưu Hình 1. Hệ cơ sở dữ liệu trữ, truy xuất và cập nhật dữ liệu thông qua việc sử dụng các ngôn ngữ định nghĩa (Data Definition Langugage – DDL), ngôn ngữ thao tác dữ liệu (Data Manipulation Langugage – DML) trong đó bao hàm ngôn ngữ truy vấn dữ liệu (Structured Query Language – SQL).
HQTCSDL phải hỗ trợ khả năng thực hiện các chức năng này từ một máy tính truy cập từ xa vào CSDL qua mạng. Danh mục hệ thống Người dùng có thể truy cập vào danh mục chứa thông tin mô tả về các dữ liệu được lưu trong CSDL gọi là danh mục hệ thống (system catalog) hay còn gọi là tự điển dữ liệu (data dictionary). Dữ liệu này còn gọi là siêu dữ liệu hay dữ liệu về dữ liệu (metadata), tùy theo HQTCSDL mà chúng có thể bao gồm: - Tên, kiểu, và kích cỡ của các mục dữ liệu - Tên các mối quan hệ giữa các dữ liệu - Ràng buộc toàn vẹn trên dữ liệu - Tên người dùng được quyền truy cập vào dữ liệu - Mục dữ liệu và kiểu truy cập mà mỗi (loại) người dùng có quyền Trang 2 - Lược đồ ngoài, lược đồ quan niệm và lược đồ trong và ánh xạ giữa các lược đồ này. - Các con số thống kê sử dụng như tần suất của giao dịch, số lượt truy cập đến một đối tượng trong CSDL.
An toàn dữ liệu An toàn dữ liệu là sự bảo vệ CSDL khỏi những đe dọa có chủ ý hay vô tình thông qua các biện pháp có sử dụng máy tính hoặc không có sử dụng máy tinh. Việc xem xét an toàn không chỉ áp dụng cho dữ liệu trong CSDL, mà còn bao gồm cả phần cứng, phần mềm và con người. Vì vậy, các HQTCSDL phải cung cấp nhiều tiện ích để đảm bảo sự an toàn cho dữ liệu như ngăn chận truy cập đối với người dùng không được phép thông qua việc quản lý và cấp quyền người dùng (user authorization), hoặc chỉ truy cập dữ liệu thông qua view được cấp quyền. Các tiện ích này sẽ được đề cập chi tiết hơn trong chương 2.
Toàn vẹn dữ liệu Dữ liệu với một ý nghĩa trong thực tế luôn phải thỏa mãn các điều kiện ràng buộc toàn vẹn nào đó về mặt giá trị; chẳng hạn như, điểm thi mang giá trị thực từ 0 đến 10, hoặc giá trị của một hóa đơn phải bằng tổng các tích số lượng hàng bán nhân đơn giá bán. Các ràng buộc toàn vẹn này cũng góp phần duy trì một hệ CSDL an toàn bằng cách ngăn không cho dữ liệu thành không hợp lệ, từ đó tránh dẫn đến kết quả sai. Các HQTCSDL giúp duy trì tính nhất quán của dữ liệu thông qua việc hỗ trợ các phương tiện bảo đảm ràng buộc trên dữ liệu (data constraints), cơ chế quản lý giao dịch (transaction management). Các công cụ cài đặt ràng buộc đã được đề cập trong môn học CSDL, nên giáo trình này sẽ không nhắc lại.
Cơ chế quản lý giao dịch sẽ được đề cập chi tiết trong chương 3. Điều khiển cạnh tranh Trong tình huống CSDL có nhiều người dùng cùng lúc thì có khả năng xảy ra tình huống cập nhật làm cho dữ liệu mất tính nhất quán. Các HQTCSDL phải cung cấp cơ chế đảm bảo CSDL được cập nhật đúng đắn khi có nhiều người dùng cùng lúc cập nhật một mục dữ liệu. Các cơ chế điều khiển cạnh tranh sẽ được phân tích chi tiết trong chương 3.
Phục hồi CSDL Để đảm bảo tính an toàn cho hệ thống CSDL ngay cả khi có sự cố xảy ra, các HQTCSDL cần cung cấp cơ chế cho phép phục hồi CSDL về một trạng thái nhất quán sau sự cố làm CSDL bị hỏng theo bất cứ kiểu nào. Cơ chế về sao lưu và phục hồi sẽ được trình bày chi tiết trong chương 3. Các tiện ích khác Ngoài các chức năng trên, HQTCSDL thường hỗ trợ thêm các tiện ích khác: - Tiện ích nhập/xuất dữ liệu: cho phép tải dữ liệu từ các tập tin văn bản hay từ CSDL của các HQTCSDL khác và ngược lại. - Tiện ích giám sát: giám sát việc sử dụng và thao tác trên CSDL.
- Chương trình phân tích thống kê: dùng để khảo sát hiệu suất và thống kê việc sử dụng. - Tiện ích tổ chức chỉ mục Trang 3 1. Các thành phần của một HQTCSDL Để đáp ứng được các chức năng vừa nêu, các HQTCSDL là các phần mềm rất phức tạp và mỗi HQTCSDL đều có kiến trúc riêng, nên rất khó có thể đưa ra một kiến trúc chung. Mỗi tài liệu có thể đề xuất một kiến trúc khác nhau.
Hình bên dưới mô tả một kiến trúc HQTCSDL đề xuất bởi [Thomas 2005]. Lập trình viên Người dùng Nhà quản trị Ứng dụng Truy vấn Lược đồ CSDL HQTCSDL Bộ tiền xử lý Bộ xử lý truy Trình biên DML vấn dịch DDL Mã đối tượng Bộ quản lý Bộ quản lý chương trình CSDL tự điển Cơ chế Bộ quản lý Truy cập Tập tin Vùng đệm hệ thống CSDL và danh mục hệ thống Hình 2. Các thành phần của một HQTCSDL [Thomas 2005] Một HQTCSDL có thể phân thành sáu thành phần chính như Hình 2, mỗi phần đảm trách một công việc cụ thể: - Bộ xử lý truy vấn: Đây là thành phần chủ yếu của một HQTSCDL để biến đổi các truy vấn thành một tập lệnh cấp thấp chuyển đến bộ quản lý CSDL. - Bộ quản lý CSDL: nhận vào các mã đối tượng chương trình và các truy vấn, đối chiếu với lược đồ ngoài và lược đồ quan niệm để xác định các mẫu tin quan niệm cần thiết để trả lời truy vấn.
Bộ phận này được chia nhỏ thành các thành phần nhỏ hơn như Hình 3. - Bộ tiền xử lý ngôn ngữ DML: bộ phần này biến đổi các lệnh thao tác dữ liệu (DML) như insert, delete, update,. thành các lời gọi hàm chuẩn. Bộ phận này phải tương tác với bộ xử lý truy vấn để sinh mã phù hợp.
- Trình biên dịch DDL: chuyển các lệnh định nghĩa dữ liệu (DDL) thành một tập các bảng chứa siêu dữ liệu. Các bảng này sau đó được lưu trong tự điển hệ thống. - Bộ quản lý tự điển: quản lý sự truy cập và duy trì tự điển hệ thống. Trang 4 Mã đối tượng Bộ xử lý SQL Bộ quản lý chương trình tự điển Bộ quản lý CSDL Quản lý Quyền Bộ kiểm tra Bộ xử lý Lệnh Bộ tối ưu Toàn vẹn Truy vấn Bộ quản lý Bộ lập lịch Giao dịch trình Bộ quản lý Bộ quản lý Bộ quản lý Dữ liệu Vùng đệm Phục hồi Cơ chế Bộ quản lý Truy cập Tập tin Vùng đệm hệ thống CSDL và danh mục hệ thống Hình 3.
Các thành phần của Bộ quản lý CSDL Hình 3 mô tả các thành phần chính của bộ quản lý CSDL, chúng bao gồm: - Điều khiển quyền: kiểm tra xem người dùng có đủ các quyền cần thiết để thực hiện thao tác yêu cầu không. - Bộ xử lý lệnh: xử lý câu lệnh sau khi xác nhận là đủ quyền - Bộ kiểm tra toàn vẹn: đối với các thao tác làm thay đổi CSDL, bộ phần này sẽ kiểm tra xem thao tác này có thỏa mãn tất cả các ràng buộc toàn vẹn hay không. - Bộ tối ưu truy vấn: xác định một chiến lược tối ưu để thực hiện truy vấn. - Bộ quản lý giao dịch: thực hiện các xử lý cần thiết cho các thao tác nhận được từ các giao dịch.
- Bộ lập lịch trình: bộ phận này có trách nhiệm đảm bảo rằng các thao tác cạnh tranh trên CSDL được thực hiện mà không gây ra mâu thuẩn. Nó điều khiển trật tự thực thi tương đối của các thao tác trong từng giao dịch. Kiến trúc hệ CSDL đa người dùng Xử lý từ xa Đây là một kiến trúc truyền thống. Một máy tính rất mạnh (mainframe) kết nối với nhiều máy đầu cuối (terminal).
Toàn bộ tải (từ lưu trữ CSDL, HQTCSDL và ứng Trang 5 dụng) đều thực hiện trên mainframe. Một xu hướng được nhìn nhận hiện nay là thay thế mainframe đắt tiền bằng một tập hợp PC nối mạng nhằm đạt được khả năng tính toán mạnh như mainframe. Máy chủ tập tin (File-server) CSDL sẽ được lưu trên một máy chủ, HQTCSDL sẽ được cài tại các máy trạm (workstation) nối với máy chủ qua một mạng cục bộ. Kiến trúc này giúp phân chia tải trên nhiều máy.
Tuy nhiên nó có khuyết điểm là ảnh hưởng đến giao thông mạng, mỗi máy trạm đều phải cài HQTCSDL, và do đó khả năng quản lý cạnh tranh, phục hồi và toàn vẹn phức tạp hơn. Client-server hai tầng Kiến trúc này gồm 2 tầng: tầng client sẽ cài và chạy chương trình ứng dụng; tầng server cài HQTCSDL và CSDL. Hình 4 minh họa kiến trúc này. Nhờ CSDL được quản lý tập trung bởi 1 HQTCSDL tại server nên kiến trúc này có ưu điểm là khả năng truy cập đến CSDL được mở rộng hơn, tăng hiệu quả hoạt động, có thể giảm chi phí phần cứng, giảm chi phí truyền thông (chỉ những dữ liệu được yêu cầu mới được truyền về cho client), và tính nhất quán được đảm bảo.
Tuy nhiên, phía client nảy sinh 2 khó khăn khi chương trình ứng dụng trở nên lớn. Một là đòi hỏi nhiều tài nguyên hơn trên máy client để có thể chạy ứng dụng một cách hiệu quả (fat client). Hai là đòi hỏi thêm nhiều công việc quản trị ở phía client.