Quay lại thư viện câu hỏi
recursion Middle

Trong các hệ thống Quản lý Nội dung (CMS) hoặc Thương mại Điện tử, việc quản lý danh mục sản phẩm hoặc danh mục bài viết đa cấp thường sử dụng đệ quy để xây dựng cây danh mục. Khi số lượng cấp độ tăng lên đột ngột, việc truy vấn cơ sở dữ liệu theo kiểu đệ quy (Recursive DB Queries) gây ra hiện tượng gì và giải pháp thay thế tối ưu là gì?

Vấn đề kiến trúc

  • Hiện tượng N+1 Query Problem: Nếu hàm đệ quy được thực thi kèm theo việc gọi cơ sở dữ liệu để lấy danh mục con ở mỗi cấp độ (ví dụ: lấy danh mục cha, sau đó gọi tiếp DB lấy danh mục con của từng danh mục), số lượng câu lệnh SQL tăng theo cấp số nhân, làm sập cơ sở dữ liệu.

Các giải pháp tối ưu tiêu chuẩn Enterprise

  1. Chiến lược Lazy Loading kết hợp Single Query (Eager Loading with Flattening):
    • Thay vì gọi DB nhiều lần, thực hiện một câu lệnh SQL duy nhất để lấy toàn bộ bảng danh mục về bộ nhớ ứng dụng (Memory).
    • Sử dụng hàm đệ quy trên chính bộ nhớ RAM của ứng dụng để dựng cây danh mục (In-memory Tree Construction). Do thao tác trên RAM cực kỳ nhanh, cách này loại bỏ hoàn toàn gánh nặng cho Database.
  2. Sử dụng Mô hình Lưu trữ Đồ thị trong CSDL (Adjacency List kết hợp Closure Table hoặc Nested Set Model):
    • Closure Table: Lưu trữ mọi mối quan hệ tổ tiên - con cháu trong một bảng phụ riêng, giúp việc truy vấn toàn bộ cây hoặc nhánh con chỉ bằng một câu lệnh JOIN duy nhất mà không cần đệ quy phía Database.
    • Nested Set Model: Lưu trữ dựa trên khoảng giá trị (left, right), cho phép truy vấn toàn bộ cây con cực kỳ nhanh chóng nhưng phức tạp khi thêm/sửa node.

Khuyến nghị thực chiến

Đối với đa số ứng dụng cấp độ Middle, giải pháp Lấy toàn bộ dữ liệu một lần (Single Query) rồi dùng đệ quy In-memory là tối ưu nhất khi số lượng bản ghi danh mục dưới vài chục nghìn, vừa đảm bảo hiệu năng vừa giữ cho mã nguồn dễ bảo trì.

Luyện tập câu hỏi này trong chế độ đếm ngược mô phỏng phỏng vấn thật:
Phòng Luyện Tập
Khóa học Chuyên sâu Chủ đề recursion

Làm Chủ Phỏng Vấn & Nâng Cao Trình Độ Chuyên Nghiệp

Hệ thống khóa học thực chiến chuẩn Enterprise giúp bạn tự tin chinh phục mọi kỳ phỏng vấn kỹ thuật và thăng tiến thu nhập.

Tải Tuyển Tập 100+ Câu Hỏi Phỏng Vấn Chuyên Sâu (PDF)

Bộ tài liệu chuẩn Senior do Unicode Academy tuyển chọn & biên soạn, hỗ trợ tải về định dạng PDF chuẩn in ấn.

High-Ticket Mentoring
Cần Mentor Phỏng Vấn Thử 1-1 & Tối Ưu CV?

Mô phỏng phỏng vấn kỹ thuật thực tế 1-1 qua Google Meet, nhận xét chi tiết điểm mạnh/yếu và sửa CV trực tiếp cùng giảng viên Unicode.

AI Resume Scanner
Kiểm Tra CV Chuẩn ATS Miễn Phí

Tải CV của bạn lên để hệ thống AI rà soát từ khóa kỹ năng, định dạng và tính điểm chuẩn nhà tuyển dụng.

vừa nâng cấp PRO khóa 1 phút trước   Tìm hiểu khóa học