Hệ thống cơ sở dữ liệu (database system) là một hệ thống tích hợp hoàn chỉnh bao gồm cơ sở dữ liệu lưu trữ, hệ quản trị cơ sở dữ liệu (database management system), phần cứng máy tính và các ứng dụng phần mềm giao tiếp với người dùng. Mục đích cốt lõi của hệ thống cơ sở dữ liệu là cung cấp một môi trường tập trung, an toàn và hiệu quả để định nghĩa, lưu trữ, truy xuất và thao tác dữ liệu có cấu trúc hoặc bán cấu trúc, đồng thời đảm bảo tính toàn vẹn và độc lập dữ liệu trước các biến động của môi trường vật lý. Mục từ này trình bày kiến trúc phân tầng chuẩn, các mô hình dữ liệu nền tảng, cấu trúc phần mềm bên trong, cơ chế xử lý giao dịch và các thách thức trong thiết kế hệ thống phân tán.
Bản chất và kiến trúc ba tầng của hệ thống cơ sở dữ liệu
Để giải quyết các hạn chế kinh điển của hệ thống quản lý tệp tin truyền thống như sự dư thừa dữ liệu, không nhất quán và sự phụ thuộc chặt chẽ giữa chương trình với cấu trúc lưu trữ, kiến trúc hệ thống cơ sở dữ liệu hiện đại được thiết kế theo mô hình ba tầng trừu tượng:
- Tầng ngoài (External Level / View Level): Là mức độ trừu tượng cao nhất, biểu diễn giao diện dữ liệu tùy biến cho từng nhóm người dùng hoặc ứng dụng cụ thể. Mỗi khung nhìn (view) chỉ hiển thị phần dữ liệu cần thiết cho một nhiệm vụ chuyên biệt và ẩn đi toàn bộ chi tiết phức tạp của phần còn lại trong hệ thống.
- Tầng quan niệm (Conceptual Level / Logical Level): Mô tả toàn bộ cấu trúc logic của cơ sở dữ liệu, bao gồm các thực thể, mối quan hệ giữa các thực thể, kiểu dữ liệu, các ràng buộc toàn vẹn và quy tắc nghiệp vụ mà không cần quan tâm đến cách thức tổ chức lưu trữ vật lý trên đĩa từ hay bộ nhớ flash.
- Tầng trong (Internal Level / Physical Level): Là mức độ trừu tượng thấp nhất, mô tả chi tiết cách thức dữ liệu thực sự được lưu trữ trên các thiết bị nhớ thứ cấp. Tầng này quản lý cấu trúc tệp dữ liệu, chỉ mục tìm kiếm, kỹ thuật nén, thuật toán băm và các khối cấp phát lưu trữ.
Kiến trúc ba tầng mang lại hai đặc tính quan trọng bậc nhất của hệ thống cơ sở dữ liệu:
- Tính độc lập dữ liệu vật lý (Physical Data Independence): Cho phép quản trị viên thay đổi cấu trúc lưu trữ vật lý, phương pháp lập chỉ mục hoặc chuyển đổi phần cứng mà không làm ảnh hưởng đến lược đồ logic ở tầng quan niệm hay các chương trình ứng dụng ở tầng ngoài.
- Tính độc lập dữ liệu logic (Logical Data Independence): Cho phép mở rộng hoặc điều chỉnh lược đồ quan niệm (như thêm thuộc tính mới, thêm bảng mới) mà không buộc phải viết lại các ứng dụng hiện có đang hoạt động trên các khung nhìn độc lập.
Mô hình dữ liệu và quá trình phát triển
Mô hình dữ liệu là tập hợp các khái niệm toán học và quy tắc dùng để biểu diễn cấu trúc dữ liệu, mối quan hệ và các ràng buộc toàn vẹn:
1. Mô hình phân cấp và mô hình mạng
Trong giai đoạn đầu của khoa học máy tính, các hệ thống cơ sở dữ liệu dựa trên mô hình phân cấp (dữ liệu tổ chức dạng cây một-nhiều) và mô hình mạng (dữ liệu tổ chức dạng đồ thị nhiều-nhiều). Điểm hạn chế nghiêm trọng của các mô hình này là cấu trúc logic gắn liền với con trỏ vật lý, khiến việc truy vấn đòi hỏi lập trình viên phải biết chính xác đường dẫn điều hướng trên đĩa, gây khó khăn cho việc bảo trì khi hệ thống mở rộng.
2. Mô hình quan hệ
Năm 1970, nhà khoa học máy tính Edgar F. Codd đã công bố công trình nền tảng thiết lập mô hình dữ liệu quan hệ (Relational Model). Dựa trên lý thuyết tập hợp và đại số quan hệ, Codd đề xuất biểu diễn toàn bộ dữ liệu dưới dạng các bảng hai chiều (quan hệ), trong đó mỗi hàng là một bộ giá trị (tuple) và mỗi cột là một thuộc tính (attribute). Mô hình quan hệ giải phóng hoàn toàn người dùng khỏi việc điều hướng con trỏ vật lý, mở đường cho sự ra đời của các ngôn ngữ truy vấn khai báo chuẩn hóa như ngôn ngữ truy vấn có cấu trúc (SQL).
3. Các mô hình dữ liệu hiện đại
Trước sự bùng nổ của dữ liệu phi cấu trúc và yêu cầu xử lý quy mô siêu lớn, các hệ thống cơ sở dữ liệu phi quan hệ (NoSQL) và hệ thống thế hệ mới (NewSQL) đã phát triển mạnh mẽ:
| Mô hình dữ liệu | Cấu trúc lưu trữ chính | Đặc trưng nổi bật | Trường hợp sử dụng điển hình |
|---|---|---|---|
| Mô hình quan hệ (Relational) | Bảng hai chiều gồm hàng và cột với khóa chính và khóa ngoại | Đảm bảo nghiêm ngặt tính toàn vẹn dữ liệu và hỗ trợ giao dịch phức tạp | Hệ thống ngân hàng, tài chính, hoạch định nguồn lực doanh nghiệp |
| Mô hình tài liệu (Document) | Tài liệu bán cấu trúc (định dạng JSON, BSON hoặc XML) | Lược đồ linh hoạt, dữ liệu lồng nhau tự mô tả cấu trúc | Hệ thống quản lý nội dung số, danh mục sản phẩm thương mại điện tử |
| Mô hình khóa-giá trị (Key-Value) | Cặp khóa duy nhất ánh xạ trực tiếp tới một khối giá trị nhị phân | Truy xuất cực nhanh theo khóa đơn lẻ, cấu trúc đơn giản | Vùng nhớ đệm tốc độ cao, quản lý phiên làm việc người dùng |
| Mô hình đồ thị (Graph) | Các đỉnh đại diện cho thực thể và các cạnh đại diện cho mối quan hệ | Tối ưu hóa đặc biệt cho các phép duyệt đồ thị và tìm kiếm đường đi | Mạng xã hội, hệ thống gợi ý sản phẩm, phát hiện gian lận tài chính |
Kiến trúc phần mềm bên trong của hệ quản trị cơ sở dữ liệu
Theo công trình tổng hợp của Hellerstein, Stonebraker và Hamilton (2007), một hệ quản trị cơ sở dữ liệu hiện đại được cấu thành từ năm phân hệ phần mềm cốt lõi hoạt động phối hợp chặt chẽ:
- Trình quản lý kết nối và tiến trình (Process & Connection Manager): Tiếp nhận các yêu cầu kết nối mạng từ phía ứng dụng khách, xác thực quyền hạn người dùng, thiết lập bối cảnh phiên làm việc và điều phối các luồng thực thi trong hệ điều hành.
- Trình phân tích và tối ưu hóa truy vấn (Query Parser & Optimizer): Tiếp nhận câu lệnh truy vấn khai báo, phân tích cú pháp tạo thành cây trừu tượng, kiểm tra ngữ nghĩa và áp dụng các mô hình chi phí thống kê để chuyển đổi truy vấn thành cây kế hoạch thực thi tối ưu nhất.
- Bộ máy thực thi truy vấn (Query Execution Engine): Tiếp nhận kế hoạch thực thi từ trình tối ưu hóa và thực hiện các toán tử đại số quan hệ (quét bảng, lọc chỉ mục, nối dữ liệu vòng lặp lồng nhau hoặc nối băm) theo mô hình lặp hoặc mô hình xử lý véc-tơ hóa.
- Trình quản lý vùng nhớ đệm và lưu trữ (Buffer Pool & Storage Manager): Điều phối việc đọc và ghi các trang dữ liệu giữa bộ nhớ trong (RAM) và bộ nhớ ngoài (đĩa từ, SSD). Trình quản lý vùng đệm duy trì các trang dữ liệu thường xuyên truy cập trong bộ nhớ đệm và áp dụng các chiến lược thay thế trang để tối ưu hóa hiệu suất truy cập phần cứng.
- Trình quản lý giao dịch và phục hồi (Transaction & Recovery Manager): Theo dõi trạng thái hoạt động của các giao dịch, điều khiển khóa để ngăn ngừa xung đột tương tranh và duy trì tệp nhật ký ghi trước để sẵn sàng khôi phục trạng thái nhất quán của dữ liệu khi xảy ra sự cố phần mềm hoặc mất điện đột ngột.
Giao dịch, thuộc tính ACID và cơ chế phục hồi sự cố
Giao dịch (transaction) là một đơn vị công việc logic bao gồm một chuỗi các thao tác đọc và ghi dữ liệu trên hệ thống. Năm 1983, Theo Haerder và Andreas Reuter đã chuẩn hóa bốn thuộc tính cơ bản của một giao dịch đáng tin cậy, được viết tắt là nguyên lý ACID:
- Tính nguyên tử (Atomicity): Đảm bảo toàn bộ các thao tác bên trong giao dịch được thực hiện thành công trọn vẹn, hoặc nếu xảy ra bất kỳ lỗi nào thì toàn bộ hệ thống sẽ được hoàn tác về trạng thái ban đầu như thể giao dịch chưa từng diễn ra (nguyên lý tất cả hoặc không có gì).
- Tính nhất quán (Consistency): Đảm bảo giao dịch chỉ chuyển cơ sở dữ liệu từ một trạng thái hợp lệ này sang một trạng thái hợp lệ khác, luôn thỏa mãn đầy đủ mọi ràng buộc toàn vẹn dữ liệu đã được định nghĩa trong lược đồ hệ thống.
- Tính cô lập (Isolation): Đảm bảo các giao dịch diễn ra đồng thời không nhìn thấy trạng thái trung gian chưa hoàn tất của nhau, ngăn ngừa các hiện tượng đọc bẩn, đọc không lặp lại hoặc bóng ma dữ liệu.
- Tính bền vững (Durability): Đảm bảo một khi giao dịch đã được xác nhận hoàn tất thành công, các thay đổi dữ liệu sẽ được ghi nhận vĩnh viễn vào bộ lưu trữ cố định và không bị mất ngay cả khi hệ thống gặp sự cố sập nguồn phần cứng sau đó.
Cơ chế phục hồi ARIES
Để đảm bảo tính nguyên tử và tính bền vững với chi phí hiệu năng tối thiểu, các hệ thống cơ sở dữ liệu sử dụng nguyên lý ghi nhật ký trước (Write-Ahead Logging, WAL). Theo nguyên lý này, bản ghi nhật ký mô tả sự thay đổi phải được đẩy an toàn xuống bộ nhớ cố định trước khi trang dữ liệu thực tế tương ứng được ghi đè lên đĩa.
Năm 1992, C. Mohan và các cộng sự tại IBM đã công bố thuật toán phục hồi ARIES, trở thành tiêu chuẩn phục hồi kinh điển trong khoa học máy tính. Khi hệ thống khởi động lại sau sự cố, thuật toán ARIES thực hiện quy trình phục hồi qua ba pha tuần tự:
- Pha phân tích (Analysis Pass): Quét tệp nhật ký xuôi từ điểm kiểm tra gần nhất để xác định trạng thái của vùng đệm tại thời điểm sập hệ thống, lập danh sách các trang bị bẩn và xác định các giao dịch đang hoạt động dở dang chưa được xác nhận.
- Pha làm lại (Redo Pass): Quét nhật ký xuôi để tái lập chính xác trạng thái của cơ sở dữ liệu ngay trước thời điểm xảy ra sự cố, thực hiện lại toàn bộ các thay đổi của cả giao dịch thành công lẫn giao dịch chưa hoàn tất.
- Pha hoàn tác (Undo Pass): Quét nhật ký ngược từ thời điểm sự cố để đảo ngược toàn bộ các thao tác của những giao dịch chưa kịp xác nhận, đưa cơ sở dữ liệu trở về trạng thái nhất quán hoàn toàn.
Kiểm soát tương tranh trong hệ thống cơ sở dữ liệu
Khi nhiều người dùng và tiến trình cùng truy cập và chỉnh sửa dữ liệu đồng thời, hệ thống cơ sở dữ liệu phải áp dụng các kỹ thuật kiểm soát tương tranh để đảm bảo tính cô lập của giao dịch:
- Giao thức khóa hai pha (Two-Phase Locking, 2PL): Phân chia vòng đời của giao dịch thành pha mở rộng (chỉ xin thêm khóa) và pha thu hẹp (chỉ giải phóng khóa). Để tránh hiện tượng đọc dữ liệu bẩn và phục hồi xếp tầng, các hệ thống thương mại thường áp dụng biến thể khóa hai pha nghiêm ngặt (Strict 2PL), trong đó toàn bộ khóa độc quyền chỉ được giải phóng đồng loạt tại thời điểm giao dịch hoàn tất.
- Kiểm soát tương tranh đa phiên bản (Multiversion Concurrency Control, MVCC): Thay vì khóa chặn dữ liệu, mỗi thao tác ghi sẽ tạo ra một phiên bản dữ liệu mới mang dấu ấn thời gian riêng biệt. Các giao dịch đọc sẽ truy cập vào phiên bản ảnh chụp nhất quán tương ứng với thời điểm bắt đầu giao dịch. Kỹ thuật này giúp các tác vụ đọc không bao giờ chặn các tác vụ ghi và ngược lại, nâng cao vượt bậc thông lượng xử lý của hệ thống.
- Kiểm soát tương tranh trong hệ thống phân tán: Năm 1981, Philip A. Bernstein và Nathan Goodman đã xuất bản công trình tổng quan toàn diện về các giải pháp kiểm soát tương tranh phân tán, phân loại các tiếp cận dựa trên khóa hai pha phân tán và thứ tự tem thời gian, cung cấp nền tảng lý thuyết cho việc đồng bộ hóa dữ liệu trên các cụm máy chủ nhiều nút.
Hệ thống cơ sở dữ liệu phân tán và định lý CAP
Khi dữ liệu được phân tán trên nhiều máy chủ mạng nhằm đáp ứng tải xử lý cao và dự phòng thảm họa, các kiến trúc sư hệ thống phải đối mặt với các rào cản nền tảng của điện toán phân tán.
Định lý CAP, được Eric Brewer phân tích chuyên sâu trong bài tổng kết năm 2012, chỉ ra rằng một hệ thống dữ liệu chia sẻ phân tán trong điều kiện mạng bị chia cắt không thể đồng thời đạt được cả ba thuộc tính mong muốn:
- Tính nhất quán (Consistency): Mọi nút trong hệ thống đều nhìn thấy cùng một phiên bản dữ liệu mới nhất tại cùng một thời điểm đọc.
- Tính khả dụng (Availability): Mọi yêu cầu đọc hoặc ghi gửi tới các nút còn sống đều nhận được phản hồi thành công không bị lỗi, dù không đảm bảo phản hồi đó chứa dữ liệu mới nhất.
- Khả năng chịu phân vùng mạng (Partition Tolerance): Hệ thống vẫn tiếp tục duy trì hoạt động ngay cả khi các đường truyền mạng giữa các nút máy chủ bị mất kết nối hoặc trễ gói tin nghiêm trọng.
Do sự cố mạng là điều tất yếu xảy ra trong hạ tầng phân tán quy mô lớn, các hệ thống cơ sở dữ liệu buộc phải đánh đổi giữa tính nhất quán nghiêm ngặt (hệ thống ưu tiên CP) hoặc tính khả dụng liên tục (hệ thống ưu tiên AP với mô hình nhất quán cuối cùng).
Hạn chế và thách thức kỹ thuật
Trong bối cảnh dữ liệu tiếp tục tăng trưởng theo cấp số nhân, các hệ thống cơ sở dữ liệu hiện đại đối diện với nhiều thách thức phức tạp:
- Độ trễ và chi phí đồng thuận phân tán: Việc duy trì các giao dịch phân tán hỗ trợ ACID trên nhiều trung tâm dữ liệu đòi hỏi các giao thức đồng thuận phức tạp, dẫn đến độ trễ mạng đáng kể và suy giảm hiệu năng xử lý tác vụ trực tuyến.
- Khoảng cách tốc độ giữa bộ nhớ và bộ xử lý: Tốc độ xử lý của vi xử lý tăng nhanh hơn nhiều so với băng thông truy xuất bộ nhớ chính và bộ nhớ ngoài, buộc các nhà phát triển hệ thống phải thiết kế lại cấu trúc dữ liệu tối ưu cho bộ nhớ đệm CPU và tận dụng bộ nhớ bất biến thế hệ mới.
- Thách thức bảo mật và quyền riêng tư: Việc lưu trữ tập trung khối lượng lớn dữ liệu nhạy cảm khiến hệ thống cơ sở dữ liệu trở thành mục tiêu tấn công hàng đầu, đặt ra yêu cầu bức thiết về mã hóa dữ liệu tại chỗ, mã hóa đường truyền, kiểm soát truy cập dựa trên vai trò và khả năng tự động ẩn danh hóa dữ liệu tuân thủ các quy định pháp lý.