Advent of Code 2024 bằng SQL thuần
(databasearchitects.blogspot.com)-
Thử thách Advent of Code 2024 bằng SQL thuần
-
Tổng quan
- Tác giả đã quyết định giải Advent of Code năm nay hoàn toàn bằng SQL thuần.
- Trải nghiệm này thú vị vì buộc phải suy nghĩ về bài toán theo cách khác, và họ đã giải được mọi bài chỉ với SQL.
- SQL đôi khi lại rất dễ sử dụng.
-
Ví dụ Day 11
- Bài viết đưa ra toàn bộ lời giải cùng dữ liệu đầu vào.
- Việc phân tích cú pháp đầu vào trong SQL có phần rườm rà, nhưng không phải không thể.
- Thuật toán tương đối ngắn và thực hiện duyệt đệ quy theo trường.
- SQL phù hợp cho các phép tìm kiếm quy mô nhỏ.
-
Thử thách các ngày khác
- Ở Day 16, tác giả thực hiện một bài toán tương tự để tính khoảng cách duyệt ngắn nhất trên trường.
- Dễ diễn đạt bằng SQL, nhưng việc đánh giá không hiệu quả.
- Khi xử lý dữ liệu đầu vào lớn, cần giữ rất nhiều trạng thái và đòi hỏi trên 200GB bộ nhớ.
- Một số DBMS không cung cấp các tính năng để giải bài toán này.
-
Giới hạn của SQL đệ quy
- Ở Day 23, cần tìm clique lớn nhất trong một đồ thị thưa.
- Có thể dùng thuật toán Bron-Kerbosch, nhưng thể hiện dưới dạng SQL đệ quy lại khá phức tạp.
- SQL đệ quy chỉ truyền được một tập hợp nên không tương thích với các thuật toán cần duy trì nhiều tập hợp cùng lúc.
-
Kết luận
- Việc lập trình các thuật toán phức tạp bằng SQL là khả thi và mã SQL có thể bất ngờ dễ đọc, dễ dùng.
- Nếu có cơ chế cập nhật trạng thái, SQL đệ quy sẽ hiệu quả hơn và thân thiện hơn khi sử dụng.
- Khi bổ sung cơ chế thao tác trạng thái phức tạp, SQL có thể trở thành lựa chọn mạnh mẽ cho việc chạy thuật toán phức tạp ngay trong cơ sở dữ liệu.
1 bình luận
Bình luận Hacker News