Chia sẻ kiến thức lập trình

MongoDB

Nếu bạn muốn nhanh hơn!

Chúng ta đã quá quen với #SQL, với #MySQL với #Oracle hay SQL server rồi và chúng ta vẫn thường phàn nàn với nhau về việc phải tạo bảng, về tốc độ của các câu lệnh truy vấn join, về việc phải dùng #ORM để truy vấn dữ liệu thì đây nhé! Chúng ta có #MongoDB không cần tạo bảng, không #join, đối tượng java thế nào thì lưu xuống MongoDB thế ấy, thật là tuyệt vời.
Ngày xưa mình làm game, hồi đầu dùng MySQL nhưng sau thấy các câu lệnh join rất chậm, mà thiết kế bảng thì cứ phải theo nguyên tắc #1NF, lôi hibernate vào, khai báo đủ kiểu map qua map lại rất mất thời gian, trong khi đó việc phát triển game cần phải nhanh để chiếm lĩnh thị trường, và game cũng yêu cầu hiệu năng rất cao. Khi mình biết đến MongoDB, thử code những dòng đầu tiên mình đã tìm được chân ái. Từ đó mà tốc độ phát triển dự án lẫn hiệu năng của game đều được đảm bảo

Không phải viên đạn bạc

NHƯNG, mình đã phạm phải 1 sai lầm. Vì quá yêu thích MongoDB nên mình đã dùng nó cho 1 dự án quản lý khách hàng và cơn ác mộng đã tới. Việc thiếu các câu lệnh join khiến việc code trầy trật đặc biệt là câu lệnh inner join và đến nghiệp vụ phân trang thì hy vọng đã tắt, gần như không thể làm được nghiệp vụ này nếu không có câu lệnh join, thế mới biết lệnh join nó quan trọng thế nào

Các loại dự án phù hợp

Qua 4, 5 dự án mình rút ra kinh nghiệm, MongoDB chỉ phủ hợp cho những loại dự án:

  1. Đòi hỏi việc tốc độ truy vấn, insert và update nhanh:
  2. Không có các nghiệp vụ trích xuất báo cáo phân trang phức tạp, yêu cầu join giữa các bảng. Tiêu biểu như các dự án: #game, #chat, #blockchain

Nếu các bạn đang có ý định sử dụng MongoDB cho các dự án kiểu #CRM, Quản lý nhân sự, Quản lý hàng hoá, vân vân và mây mây, đại loại là các dự án quản lý nặng về nghiệp vụ truy xuất và báo cáo thì hãy dừng ý tưởng này lại nếu không muốn phải code lại toàn bộ tầng Repository. #MySQL + #Redis sẽ là lựa chọn tốt hơn cho chúng ta.

Share: