Hỏi về khả năng chịu tải của Mongodb
Chả là trong dự án lần này em đang làm có sử dụng Mongodb, Nhưng em chưa từng làm với nó bao giờ. Em muốn hỏi khả năng chịu tải của Mongodb Có tốt không Em có dùng 2 collection để lưu dữ liệu, mỗi bản ghi dung lượng tầm 1-3MB Dự án đáp ứng cho tầm 10k users lưu trữ dữ liệu
Các bác cho e hỏi là lưu trữ dữ liện nặng như vậy thì tốc độ có bị giảm đi nhiều không ạ
Thanks
2 CÂU TRẢ LỜI
Mongodb là một Nosql, được thiết kế dựa trên document. Bạn có thể hiểu nó là dạng key - value, key là giá trị để xác định đối tượng, value là các document json. Tốc độ bạn quan tâm ở trên mình tạm phân tích gồm 3 phần
- ghi dữ liệu: cấu trúc data trên mongodb là đơn giản trên Sql như Mysql nên tốc độ ghi dữ liệu của mongodb nhanh hơn Mysql, cùng cấu hình thì có thể ước lượng nhanh hơn 2x. Tại sao nhanh hơn ko nhiều vì Mongodb cũng hỗ trợ secondary index như mysql, khi insert vào thêm bản ghi mới, chi phí bỏ vào cho index của 2 bên chênh nhau ko nhiều. Mongodb do ko có schema nên chi phí insert record ít hơn, Mysql bạn có thể hiểu đó là chi phí convert data.
- đọc dữ liệu: do ko có schema, việc query để select dữ liệu có điều kiện, điều kiện này ko được đánh index chậm hơn so vs Mysql. Bạn có thể hình dung mất thêm chi phí cast object nữa. So vs Mysql thì đọc sẽ bị chậm hơn 50%.
- update dữ liệu: do cấu trúc data chỉ đơn giản là các con trỏ, trỏ đến các document, khi update data mongodb sẽ nhanh hơn rất nhiều so vs Mysql. Tuỳ tình huống thông tin mình update có liên quan đến index hay ko mà có sự khác nhau, bạn có thể hình dung là update nhanh hơn 10x so vs Mysql.
Tại sao ở trên mình chỉ phân tích ở khía cạnh data structure giữa Mongodb và Mysql, vì 2 database này tương đồng nhau về thao tác đọc ghi đĩa cứng, quản lý index, sự khác biệt giữa 2 database trên là ko nhiều. Điểm khác biệt lớn nhất là một bên yêu cầu schema cho data được xác định rõ ràng, một bên thì data linh hoạt.
Để đáp ứng cho 10k users thì vấn đề performance của bạn sẽ xoay quanh việc bạn thiết kế index cho database như thế nào. Các query của bạn có sử dụng được index để tăng tốc độ truy vấn hay không.
Cảm ơn bác nhiều nhé. chi tiết quá
hiệu năng read của thằng mongo ko tốt lắm đâu, nó dùng khi bạn vừa ghi nhiều, vừa đọc nhiều thôi. Chứ ghi ít đọc nhiều thì sql vẫn ngon hơn.
Thanks bác
Buồn nhỉ ko có bác nào tư vấn sao