Trình Điều Khiển MongoDB Bằng Lua
Thực ra tôi biết đã có một số thư viện Lua cho MongoDB như cái này. Tuy nhiên, tôi không muốn chỉ đơn thuần là bao bọc lấy API C++ vốn có, mà muốn xây dựng từ tầng giao thức trở lên để sau này dễ dàng chuyển đổi sang mô hình bất đồng bộ và tích hợp mượt mà vào hệ sinh thái Skynet.
Một phương án thuần Lua khác cũng từng được triển khai theo hướng bắt tay trực tiếp với giao thức. Nhưng giải pháp này tồn tại vài điểm hạn chế: thứ nhất là phụ thuộc vào thư viện lua-socket, thứ hai hiệu năng không thể bằng được với các thư viện viết bằng C, thứ ba là thiếu sót nhiều tính năng quan trọng.
Tôi từng thử đóng gói lại từ thư viện C gốc cho MongoDB. Trong quá trình nghiên cứu, tôi phát hiện ra chất lượng mã nguồn của thư viện C này không cao, tài liệu hỗ trợ thiếu sót, nhiều chức năng còn bỏ ngỏ. Cuối cùng tôi quyết định tự tay xây dựng lại từ đầu dựa trên giao thức gốc.
Tài liệu về MongoDB theo tôi thấy chưa thực sự đầy đủ, đặc tả giao thức cũng chưa chặt chẽ cho lắm. Điều này khiến quá trình phát triển gặp không ít trở ngại. Ban đầu tôi dự tính chỉ cần một ngày để hoàn thành, nhưng thực tế phải mất ba ngày liền mới xong. Hôm nay cuối cùng cũng có thể công bố phiên bản alpha đầu tiên:
Ý tưởng thiết kế cốt lõi của dự án này là tách riêng hoàn toàn phần xử lý BSON thành một dự án độc lập tên là lua-bson. Nhờ đó, về sau khi cần tùy biến phiên bản đặc biệt cho Skynet sẽ linh hoạt hơn nhiều. Vì trong môi trường Skynet, quá trình đóng gói BSON và giao tiếp với MongoDB có thể diễn ra trên những Lua state khác nhau.
Những phần yêu cầu hiệu năng cao sẽ được tôi chuyển sang viết bằng C, nhưng lớp C này chỉ cung cấp những API tối giản nhất. Các chức năng phức tạp hơn sẽ được xây dựng bằng Lua để dễ bảo trì và mở rộng.
Hiện tại đây mới chỉ là phiên bản đầu tiên với nhiều hạn chế. Bản thân tôi gần như chưa từng sử dụng MongoDB trong thực tế, kiến thức chủ yếu dựa trên nghiên cứu giao thức. Rất mong nhận được sự góp sức từ các bạn am hiểu MongoDB để cùng hoàn thiện thư viện này.