Queue và pub/sub ngay trong tệp SQLite
Một dự án open source mới tên Honker vừa gây chú ý trên Hacker News khi mang cơ chế NOTIFY/LISTEN của PostgreSQL vào SQLite. Thay vì phải chạy thêm Redis hay một message broker riêng, Honker cho phép lập trình viên tạo hàng đợi (queue), luồng sự kiện (event stream) và pub/sub ngay trong cùng một tệp SQLite. Điều này có nghĩa là khi bạn INSERT một đơn hàng vào bảng business và enqueue một công việc, cả hai nằm trong cùng một transaction. Nếu rollback, cả job lẫn đơn hàng đều biến mất, không lo mất đồng bộ dữ liệu.
Hiệu năng ấn tượng, chi phí thấp
Honker hoạt động bằng cách đọc PRAGMA data_version của SQLite mỗi mili giây. Đây là một số đếm tăng dần mỗi khi có commit từ bất kỳ kết nối hay process nào, chỉ tốn khoảng 3 micro giây để đọc. Kết quả là độ trễ đánh thức giữa các tiến trình chỉ khoảng 0,7 ms ở phân vị 50 trên laptop Apple M-series. Một luồng nền duy nhất dùng chung cho tất cả subscriber, không cần mỗi listener chạy một truy vấn riêng. Chi phí rảnh rỗi chỉ là một SELECT nhẹ mỗi mili giây, không gây áp lực lên bộ nhớ cache hay tranh chấp writer lock.
Honker tương thích với Python, Node, Rust, Go, Ruby, Bun và Elixir, tất cả đều dùng chung một định dạng tệp. Với những ứng dụng SQLite đang vận hành thực tế như Bluesky PDS, Fly LiteFS hay Turso, Honker là giải pháp queue gọn nhẹ thay thế Redis + Celery, loại bỏ bài toán dual-write và giảm tải vận hành. Nếu bạn đã dùng PostgreSQL, hãy dùng ngay pg-boss hay Oban. Nhưng nếu SQLite là primary datastore, Honker chính là lựa chọn tự nhiên nhất.





