Tổng quan về giáo trình

Giáo trình bài giảng môn học Hệ Quản Trị Cơ Sở Dữ Liệu (Database Management Systems - Mã môn học: CO3021) được biên soạn bởi TS. Võ Thị Ngọc Châu (Email: chauvtn@hcmut.vn), thuộc Khoa Khoa học và Kỹ thuật Máy tính (Faculty of Computer Science and Engineering), Trường Đại học Bách Khoa – ĐHQG TP.HCM (Ho Chi Minh City University of Technology - HCMUT), áp dụng cho chương trình đào tạo ngành Khoa học Máy tính trong Học kỳ 1 năm học 2020–2021.

Môn học giữ vị trí chuyên ngành cốt lõi trong chương trình đào tạo kỹ sư và cử nhân công nghệ thông tin, đóng vai trò cầu nối giữa lý thuyết cơ sở dữ liệu quan hệ căn bản với kiến trúc nội tại của các hệ thống quản trị cơ sở dữ liệu hiện đại.

Mục tiêu học tập chính của học liệu là cung cấp cho người học hiểu biết toàn diện về các tầng xử lý bên trong một DBMS: từ tổ chức lưu trữ vật lý trên đĩa cứng, cấu trúc đánh chỉ mục, tối ưu hóa câu truy vấn, cho đến nguyên lý xử lý giao dịch đồng thời và các giao thức phục hồi dữ liệu khi xảy ra sự cố.

Tài liệu được cấu trúc có hệ thống gồm 7 chương học thuật, tiếp cận từ tầng vật lý đến tầng logic và tầng điều khiển hệ thống. Nội dung giáo trình được tổng hợp và đối chiếu từ các tài liệu tham khảo chuẩn mực quốc tế bao gồm: Fundamentals of Database Systems (Ấn bản 6 năm 2011 và Ấn bản 7 năm 2016 của R. Navathe, Pearson), Database System Implementation (Widom, 2000), Database Systems: The Complete Book (Widom, 2002) và Database System Concepts (Ấn bản 3 năm 1999 của A. Sudarshan, McGraw-Hill).


Nội dung kiến thức cốt lõi

Các chương/chủ đề chính

Đề cương toàn diện của môn học bao gồm 7 chương kiến thức nối tiếp nhau:

  • Chương 1 (Chapter 1. Overall Introduction to Database Management Systems): Tổng quan về kiến trúc và các thành phần chức năng của Hệ quản trị Cơ sở dữ liệu.
  • Chương 2 (Chapter 2. Disk Storage and Basic File Structures): Lưu trữ trên đĩa từ và các cấu trúc tệp dữ liệu cơ bản.
  • Chương 3 (Chapter 3. Indexing Structures for Files): Cấu trúc chỉ mục nâng cao cho tệp dữ liệu nhằm tối ưu hóa việc định vị bản ghi.
  • Chương 4 (Chapter 4. Query Processing and Optimization): Kỹ thuật phân tích, biến đổi và tối ưu hóa chi phí thực thi câu truy vấn.
  • Chương 5 (Chapter 5. Introduction to Transaction Processing Concepts and Theory): Khái niệm và lý thuyết nền tảng về xử lý giao dịch.
  • Chương 6 (Chapter 6. Concurrency Control Techniques): Các giao thức và kỹ thuật điều khiển truy xuất đồng thời.
  • Chương 7 (Chapter 7. Database Recovery Techniques): Các giải thuật và kỹ thuật phục hồi cơ sở dữ liệu sau sự cố.

Trong đó, nội dung trọng tâm của Chương 5 được chia thành 5 chuyên đề chuyên sâu:

  1. Transaction and System Concepts: Khái niệm giao dịch và kiến trúc hệ thống xử lý giao dịch.
  2. Desirable Properties of Transactions: Các đặc tính bắt buộc của giao dịch (ACID).
  3. Characterizing Schedules based on Recoverability: Phân loại lịch trình thực thi dựa trên khả năng phục hồi.
  4. Characterizing Schedules based on Serializability: Đặc trưng lịch trình dựa trên tính khả tuần tự.
  5. Transaction Support in SQL: Cơ chế hỗ trợ và cú pháp điều khiển giao dịch trong chuẩn SQL.
+-----------------------------------------------------------------------------+
|                                COURSE OUTLINE                               |
|                                                                             |
| [Ch.1: Introduction] -> [Ch.2: Disk Storage] -> [Ch.3: Indexing Structures] |
|                                       |                                     |
|                                       v                                     |
| [Ch.6: Concurrency Control] <- [Ch.5: Transactions] <- [Ch.4: Query Opt.]   |
|         |                                                                   |
|         v                                                                   |
| [Ch.7: Recovery Tech.]                                                      |
+-----------------------------------------------------------------------------+

Kiến thức nền tảng được xây dựng

  1. Mô hình giao dịch và cơ chế đọc/ghi cơ bản:

    • Khái niệm Giao dịch (Transaction): Đơn vị logic xử lý cơ sở dữ liệu gồm một chuỗi các thao tác truy xuất dữ liệu (read – đọc/truy xuất, write – chèn, cập nhật, xóa), được giới hạn bởi các câu lệnh biên (begin_transaction, end_transaction).
    • Mô hình đơn giản của CSDL: CSDL là tập hợp các phần tử dữ liệu có tên (named data items) với độ mịn (granularity) có thể là trường dữ liệu (field), bản ghi (record), hoặc cả khối đĩa (disk block).
    • Thao tác read_item(X): Bao gồm tìm địa chỉ khối đĩa chứa $X$, sao chép khối đĩa vào bộ đệm (buffer) trong bộ nhớ chính (main memory), và nạp dữ liệu $X$ từ bộ đệm vào biến chương trình $X$.
    • Thao tác write_item(X): Bao gồm tìm địa chỉ khối đĩa, nạp vào bộ đệm trong bộ nhớ chính, chuyển giá trị từ biến $X$ vào vị trí tương ứng trong bộ đệm, và ghi khối đĩa đã cập nhật từ bộ đệm trở lại đĩa từ (ngay lập tức hoặc tại thời điểm sau đó).
  2. Mô hình xử lý đồng thời và các vấn đề phát sinh:

    • Phân biệt hệ thống: Đơn người dùng (Single-user) và đa người dùng (Multi-user).
    • Cơ chế thực thi: Xử lý xen kẽ (Interleaved processing - CPU luân chuyển thực thi giữa các tiến trình khi có thao tác I/O) và Xử lý song song (Parallel processing - sử dụng nhiều vi xử lý CPU).
    • 5 hiện tượng xung đột khi không kiểm soát đồng thời:
      • Mất dữ liệu cập nhật (Lost update problem): Hai giao dịch xen kẽ ghi đè làm mất tác vụ ghi của giao dịch trước.
      • Cập nhật tạm thời / Đọc dữ liệu rác (Temporary update / Dirty read problem): Giao dịch $T_2$ đọc dữ liệu chưa commit của $T_1$, sau đó $T_1$ thất bại và abort.
      • Tóm tắt sai lệch (Incorrect summary problem): Giao dịch tính toán hàm tổng hợp trên tập bản ghi trong khi giao dịch khác đang thực hiện cập nhật dở dang trên một số bản ghi đó.
      • Đọc không lặp lại (Unrepeatable / Nonrepeatable read problem): Giao dịch $T$ đọc cùng một phần tử dữ liệu hai lần nhưng nhận về hai giá trị khác nhau do bị giao dịch $T'$ xen ngang cập nhật.
      • Bản ghi ma (Phantom problem): Giao dịch $T_1$ đọc tập bản ghi thỏa mãn điều kiện WHERE, giao dịch $T_2$ chèn bản ghi mới thỏa mãn điều kiện đó, khiến lần đọc lại của $T_1$ xuất hiện thêm bản ghi trước đó chưa tồn tại.
  3. Nguyên nhân gây lỗi giao dịch (Transaction Failures):

    • Sự cố máy tính (System crash): Lỗi phần cứng/phần mềm làm mất dữ liệu trên bộ nhớ trong.
    • Lỗi giao dịch hoặc lỗi hệ thống (Transaction/system error): Tràn số nguyên (integer overflow), chia cho 0, sai tham số, lỗi logic lập trình, hoặc ngắt bởi người dùng.
    • Lỗi cục bộ hoặc điều kiện ngoại lệ (Local errors/exceptions): Không tìm thấy dữ liệu, tài khoản không đủ số dư khiến giao dịch tự hủy (programmed abort).
    • Thực thi kiểm soát đồng thời (Concurrency control enforcement): Hệ thống chủ động abort giao dịch do vi phạm tính khả tuần tự hoặc rơi vào trạng thái bế tắc (deadlock).
    • Lỗi đĩa từ (Disk failure): Hỏng đầu đọc/ghi, mất dữ liệu khối đĩa.
    • Thảm họa vật lý (Physical catastrophes): Mất điện, hỏa hoạn, ghi đè băng từ.
  4. Vòng đời trạng thái và Nhật ký hệ thống (System Log):

    • Sơ đồ chuyển trạng thái: Giao dịch khởi đầu ở trạng thái Hoạt động (Active), chuyển sang Đã commit một phần (Partially committed) sau lệnh thao tác cuối, đạt điểm commit chuyển sang Đã commit (Committed). Nếu phát sinh lỗi ở trạng thái Active hoặc Partially committed, giao dịch chuyển sang Thất bại (Failed), tiến hành rollback rồi kết thúc ở Đã kết thúc (Terminated).
    • Các loại bản ghi trong Log: [start_transaction, T], [write_item, T, X, old_value, new_value], [read_item, T, X], [commit, T], [abort, T].
    • Cơ chế phục hồi: Kỹ thuật Undo (hoàn tác thao tác ghi bằng cách đọc ngược Log và khôi phục old_value) và Redo (làm lại thao tác ghi bằng cách đọc xuôi Log và thiết lập lại new_value).
    • Điểm Commit và Force-writing: Quy tắc bắt buộc ghi toàn bộ các bản ghi nhật ký liên quan từ bộ đệm ra đĩa từ (force-writing the log) trước khi xác nhận giao dịch đạt điểm commit.
  5. Bộ thuộc tính ACID:

    • Atomicity (Tính nguyên tử): Giao dịch được hoàn tất toàn bộ hoặc không thực hiện thao tác nào.
    • Consistency preservation (Bảo toàn tính nhất quán): Giao dịch đưa CSDL từ trạng thái nhất quán này sang trạng thái nhất quán khác.
    • Isolation (Tính cô lập): Thực thi của giao dịch độc lập, không bị ảnh hưởng bởi các giao dịch đồng thời khác.
    • Durability (Tính bền vững): Mọi thay đổi của giao dịch đã commit đều được lưu trữ vĩnh viễn trên đĩa.
  6. Phân loại lịch trình (Schedules) dựa trên tính phục hồi:

    • Lịch trình không thể phục hồi (Nonrecoverable schedule): Xảy ra khi giao dịch $T$ commit sau khi đọc giá trị được ghi bởi $T'$, nhưng sau đó $T'$ bị abort (dẫn đến yêu cầu rollback một giao dịch đã commit, vi phạm tính Durability).
    • Lịch trình có thể phục hồi (Recoverable schedule): Không có giao dịch $T$ nào trong lịch trình được phép commit trước khi tất cả các giao dịch $T'$ đã ghi dữ liệu mà $T$ đọc thực hiện commit.
    • Lịch trình tránh hủy dây chuyền (Cascadeless schedule): Mọi giao dịch chỉ được phép đọc các phần tử dữ liệu đã được commit bởi các giao dịch trước đó.
    • Lịch trình nghiêm ngặt (Strict schedule): Giao dịch không được phép đọc lẫn ghi lên phần tử dữ liệu $X$ cho đến khi giao dịch ghi $X$ gần nhất trước đó hoàn tất commit hoặc abort.
+-----------------------------------------------------------------------------+
|                     SCHEDULE RECOVERABILITY HIERARCHY                       |
|                                                                             |
|  +-----------------------------------------------------------------------+  |
|  | Recoverable Schedules                                                 |  |
|  |   +-----------------------------------------------------------------+ |  |
|  |   | Cascadeless Schedules (Avoids Cascading Rollback)               | |  |
|  |   |   +-----------------------------------------------------------+ | |  |
|  |   |   | Strict Schedules                                          | | |  |
|  |   |   | (No read/write on uncommitted items)                      | | |  |
|  |   |   +-----------------------------------------------------------+ | |  |
|  |   +-----------------------------------------------------------------+ |  |
|  +-----------------------------------------------------------------------+  |
|                                                                             |
|  * Nonrecoverable Schedules lie strictly outside this hierarchy             |
+-----------------------------------------------------------------------------+

Kỹ năng phát triển

  • Kỹ năng kỹ thuật (Technical skills): Viết và theo dõi lịch trình thực thi bằng ký hiệu rút gọn ($r_1(X), w_1(X), c_1, a_1$); thiết kế và diễn giải các bản ghi System Log phục vụ cho quá trình Undo/Redo.
  • Kỹ năng phân tích (Analytical skills): Nhận diện chính xác 5 dạng lỗi tương tranh trong các kịch bản thực thi xen kẽ; phân tích sơ đồ chuyển trạng thái của giao dịch; phân biệt bản chất giữa xử lý xen kẽ và xử lý song song phần cứng.
  • Năng lực thực hành chuyên sâu (Practical competencies): Đánh giá và phân loại một lịch trình thực thi cụ thể thuộc nhóm Recoverable, Cascadeless, Strict hay Nonrecoverable; xây dựng giải pháp ghi Log phù hợp để triệt tiêu hiện tượng hủy dây chuyền (cascading rollback).

Phương pháp giảng dạy và học tập

Giáo trình triển khai phương pháp tiếp cận sư phạm đi từ mô hình phần cứng/vật lý đến các khái niệm trừu tượng và mô hình toán học:

  1. Phương pháp sư phạm: Khởi đầu bằng cơ chế trao đổi dữ liệu khối đĩa (Disk block transfer) giữa bộ nhớ đệm (Main memory buffer) và đĩa từ, làm rõ bản chất thực thi vật lý của các lệnh read_item(X)write_item(X). Từ đó, giáo trình xây dựng mô hình trạng thái hữu hạn (State transition diagram) và hình thức hóa các bài toán tương tranh thông qua lý thuyết lịch biểu (Schedule theory).
  2. Bài tập và kịch bản thực hành:
    • Bài tập ghi nhật ký hệ thống: Cung cấp các chuỗi thực thi của hai giao dịch $T_1, T_2$ trên hai phần tử dữ liệu $X=10, Y=5$, yêu cầu người học xuất nội dung bản ghi System Log theo từng quy tắc: ghi log tiêu chuẩn, ghi log theo giao thức tránh hủy dây chuyền (không ghi thao tác read), và ghi log theo giao thức nghiêm ngặt (không lưu giá trị new_value).
    • Bài tập phân loại lịch trình: Cung cấp các chuỗi thao tác dạng ký hiệu rút gọn (ví dụ: $S_f: r_1(X); w_1(X); r_1(Y); w_1(Y); c_1; r_2(X); w_2(X); c_2$ hoặc $S_g: r_1(X); r_2(Z); r_1(Z); r_3(X); r_3(Y); w_1(X); c_1; w_3(Y); c_3; r_2(Y); w_2(Z); r_2(Y); c_2$), yêu cầu phân tích lý do thỏa mãn tính chất Cascadeless hoặc Strict.
  3. Phương pháp đánh giá: Đánh giá năng lực sinh viên thông qua các bài kiểm tra phân tích lịch trình, khả năng phát hiện lỗi đọc rác/mất cập nhật trong các kịch bản thực tế, và bài tập xây dựng chuỗi Undo/Redo khi hệ thống sụp đổ tại một mốc thời gian xác định.
  4. Hướng dẫn tự học: Sinh viên cần đọc song song tài liệu bài giảng của TS. Võ Thị Ngọc Châu cùng các chương tương ứng trong sách Fundamentals of Database Systems (R. Navathe) và làm lại toàn bộ các bài tập phân tích log, phân loại schedule được cung cấp trong slide.

Điểm nổi bật và cập nhật

  • Tích hợp học liệu chuẩn mực quốc tế: Giáo trình kế thừa và cập nhật có chọn lọc hệ thống kiến thức từ các ấn bản kinh điển: Fundamentals of Database Systems (6th & 7th Edition) của Navathe, các công trình của Widom (2000, 2002) và Sudarshan (1999).
  • Mô tả tường minh cơ chế bộ đệm và đĩa từ: Thay vì chỉ định nghĩa trừu tượng, giáo trình phân rã chi tiết từng bước của read_itemwrite_item, giúp sinh viên hiểu rõ vai trò của bộ nhớ đệm trong tính nhất quán và nguyên nhân dẫn đến sự cần thiết của kỹ thuật force-writing.
  • Gắn liền với các hệ thống giao dịch quy mô lớn trong thực tế: Minh họa cụ thể các ứng dụng của hệ thống xử lý giao dịch (Transaction Processing Systems) thông qua các ví dụ thực tế được nêu trong tài liệu: hệ thống đặt vé máy bay (airline reservations), hệ thống ngân hàng (banking), xử lý thẻ tín dụng (credit card processing), thương mại điện tử trực tuyến (online retail purchasing), thị trường chứng khoán (stock markets), và quầy thanh toán siêu thị (supermarket checkouts).

Đối tượng sử dụng giáo trình

  • Đối tượng người học: Sinh viên đại học năm thứ 3 hoặc năm thứ 4 chuyên ngành Khoa học Máy tính (Computer Science) và Kỹ thuật Phần mềm đang theo học học phần Hệ Quản Trị Cơ Sở Dữ Liệu (CO3021).
  • Yêu cầu kiến thức tiên quyết (Prerequisites):
    • Kiến thức Cơ sở dữ liệu cơ bản (Đại số quan hệ, mô hình E/R, ngôn ngữ truy vấn SQL căn bản).
    • Kiến thức Cấu trúc dữ liệu và Giải thuật.
    • Kiến thức cơ bản về Hệ điều hành (Khái niệm tiến trình, xử lý đa nhiệm, quản lý bộ nhớ và hoạt động I/O).
  • Đối tượng giảng viên: Dùng làm đề cương, cấu trúc slide chuẩn và ngân hàng bài tập tình huống cho công tác giảng dạy môn học Hệ quản trị CSDL ở bậc đại học.
  • Tham khảo chuyên sâu: Dành cho kỹ sư hệ thống, nhà phát triển phần mềm phụ trách thiết kế backend, hệ thống xử lý phân tán cần hiểu sâu về cơ chế ACID, Logging và Khả năng phục hồi dữ liệu.

Câu hỏi thường gặp

1. Giáo trình này phù hợp với ai?

Tài liệu được thiết kế chuyên biệt cho sinh viên ngành Khoa học và Kỹ thuật Máy tính tại Trường ĐH Bách Khoa TP.HCM (HCMUT) tham gia học phần CO3021, cũng như người học muốn tiếp cận nguyên lý bên trong (internals) của DBMS.

2. Cần kiến thức nền nào để học?

Người học cần hoàn thành học phần Cơ sở dữ liệu đại cương, nắm vững các câu lệnh SQL cơ bản, đồng thời có kiến thức nền tảng về cấu trúc tệp dữ liệu, quản lý tiến trình và quản lý bộ nhớ trong hệ điều hành.

3. Điểm khác biệt với các giáo trình cơ sở dữ liệu nhập môn thông thường?

Giáo trình không dừng lại ở mức độ người dùng (thiết kế mô hình dữ liệu quan hệ, chuẩn hóa hay viết truy vấn SQL), mà đi sâu vào tầng kiến trúc bên trong của hệ quản trị: cấu trúc khối đĩa, xử lý tối ưu hóa truy vấn, cơ chế nhật ký hệ thống, thuật toán kiểm soát đồng thời và kỹ thuật phục hồi lỗi giao dịch.

4. Làm sao để tự học hiệu quả?

Người học nên bám sát lộ trình 7 chương, thực hành chi tiết các bài toán phân tích lịch trình (Schedule), vẽ sơ đồ trạng thái, tự tay giải các bài tập lập bảng System Log trong các trường hợp giao dịch commit/abort xen kẽ, và đối chiếu với giáo trình của Navathe.

5. Có tài liệu bổ trợ nào kèm theo?

Tài liệu tham khảo chính thức gồm 4 đầu sách:

  1. R. Navathe, Fundamentals of Database Systems, 6th Edition (2011) và 7th Edition (2016), Pearson.
  2. Widom, Database System Implementation, Prentice-Hall (2000).
  3. Widom, Database Systems: The Complete Book, Prentice-Hall (2002).
  4. A. Sudarshan, Database System Concepts, 3rd Edition, McGraw-Hill (1999).

Kết luận

Giáo trình bài giảng môn học Hệ Quản Trị Cơ Sở Dữ Liệu (CO3021) của TS. Võ Thị Ngọc Châu cung cấp hệ thống lý thuyết chuẩn mực và chặt chẽ về kiến trúc DBMS, tập trung sâu vào cơ chế xử lý giao dịch, kiểm soát đồng thời và kỹ thuật phục hồi dữ liệu.

Lộ trình học tập đề xuất cho người học là tuần tự tiếp cận từ tổ chức tầng vật lý (Chương 2, 3), qua tối ưu hóa câu truy vấn (Chương 4), làm chủ lý thuyết xử lý giao dịch và thuộc tính ACID (Chương 5), trước khi phát triển lên các kỹ thuật điều khiển đồng thời (Chương 6) và giải thuật phục hồi hệ thống chuyên sâu (Chương 7). Việc kết hợp nghiên cứu giáo trình cùng các đầu sách tham khảo kinh điển của Navathe, Widom và Sudarshan sẽ hoàn thiện nền tảng lý thuyết và kỹ năng kỹ thuật cần thiết cho sinh viên ngành Khoa học Máy tính.