[Series] Database Internals - Bài 0: Giải Mã Những Lớp Kiến Trúc Bên Trong DBMS
![[Series] Database Internals - Bài 0: Giải Mã Những Lớp Kiến Trúc Bên Trong DBMS](/_next/image?url=https%3A%2F%2Fnllgiwbecqskpipvcvpt.supabase.co%2Fstorage%2Fv1%2Fobject%2Fpublic%2Fblog-images%2F0.5746714924169717.png&w=3840&q=75)
Chào anh em, mình là Phúc. Trong quá trình làm việc, chắc hẳn không ít lần anh em cũng giống như mình, coi Database là một "chiếc hộp đen" (Black Box). Chúng ta thường chỉ quan tâm đến việc gửi câu lệnh SQL vào và nhận kết quả, nhưng đôi khi việc dừng lại để tìm hiểu xem điều gì thực sự xảy ra bên trong khoảng thời gian vài mil giây đó lại mang lại những giá trị bất ngờ.
Việc nắm bắt được "nội công" của DBMS có thể giúp anh em có tư duy sắc bén hơn khi cần thiết kế hệ thống chịu tải cao hoặc tối ưu hóa những câu truy vấn phức tạp. Series này là những nội dung mình tổng hợp và hệ thống lại từ các bài giảng uy tín như CMU 15-445 hay Berkeley CS186, với hy vọng mang đến cho anh em một cái nhìn toàn diện nhất.
Chúng ta sẽ cùng đi sâu vào từng lớp kiến trúc của DBMS theo hướng Top-Down (Từ cao xuống thấp) — bắt đầu từ tầng xử lý logic cho đến nơi dữ liệu thực sự nằm trên đĩa cứng.
Tại sao nên quan tâm đến Database Internals?
Tối ưu hóa hiệu năng thực tế: Khi hiểu cách hệ thống chọn kế hoạch thực thi, anh em có thể chủ động tránh được các điểm nghẽn về chi phí I/O thay vì chỉ thử sai với Index.
Kiểm soát sự phức tạp: Khi ứng dụng mở rộng, các vấn đề về tranh chấp tài nguyên (Concurrency) hay khả năng phục hồi dữ liệu (Recovery) sẽ trở nên cực kỳ quan trọng.
Lựa chọn giải pháp lưu trữ: Hiểu về các mô hình lưu trữ khác nhau giúp anh em có thêm tiêu chí để chọn đúng loại Database cho từng bài toán cụ thể.
Lộ trình series:
Series sẽ được chia làm 5 giai đoạn chính, tương ứng với 5 tầng kiến trúc của một DBMS hiện đại:

1. Tầng Query Planning (Lập kế hoạch truy vấn)
Đây là "bộ não" của hệ thống. Tại đây, câu lệnh sẽ được phân tích, kiểm tra ngữ nghĩa và tối ưu hóa. Chúng ta sẽ tìm hiểu về Cost-based Optimizer — thành phần quyết định con đường ngắn nhất để lấy dữ liệu.
2. Tầng Operator Execution (Thực thi toán tử)
Sau khi có kế hoạch, DBMS cần những "toán tử" để thực hiện các phép toán như Filter, Sort hay Join. Đây cũng là nơi các cơ chế Concurrency Control hoạt động để đảm bảo dữ liệu luôn nhất quán trong môi trường đa nhiệm.
3. Tầng Access Methods (Phương thức truy cập)
Lớp này chịu trách nhiệm tìm kiếm các bản ghi cụ thể. Chúng ta sẽ mổ xẻ các cấu trúc kinh điển như B+ Tree, Hash Index và cách tổ chức dữ liệu linh hoạt trong các Slotted Pages.
4. Tầng Buffer Pool Manager (Quản lý bộ nhớ đệm)
Cầu nối quan trọng giữa RAM và Disk. DBMS quản lý bộ nhớ đệm như thế nào để hạn chế tối đa việc đọc đĩa chậm chạp? Các thuật toán thay thế trang (Page Replacement) sẽ là trọng tâm ở tầng này.
5. Tầng Disk Manager (Quản lý lưu trữ vật lý)
Điểm đến cuối cùng của hành trình. Phần này sẽ giải thích cách dữ liệu nằm trên đĩa thông qua Heap Files và cách hệ thống tự bảo vệ mình qua Write-Ahead Log (WAL) để đảm bảo dữ liệu không bao giờ bị mất.
Lời kết
Series này được mình tổng hợp từ quá trình làm việc và hệ thống lại từ các tài liệu học thuật chuyên sâu về Database. Hy vọng những chia sẻ này sẽ mang lại cho anh em thêm chút kiến thức.



![[Series] Database Internals - Bài 2: Giải mã "Thùng sách" – Nghệ thuật sắp xếp Slotted Page Layout](/_next/image?url=https%3A%2F%2Fnllgiwbecqskpipvcvpt.supabase.co%2Fstorage%2Fv1%2Fobject%2Fpublic%2Fblog-images%2F0.30555181914624063.png&w=3840&q=75)