[Tư vấn] Nên sử dụng 'mongodb' hay 'mongooes'?



  • Chúng mày code đê! Hiếp chết cả lũ bây giờ



  • Thể theo nguyện vọng của mấy "FPT" viết mấy dòng cho xôm tụ topic

    1, Về câu hỏi "Nên sử dụng 'mongodb' hay 'mongooes'?"

    OK sau khi đã vọc xong thì thử trả lời câu hỏi này nhé "Nếu dùng mongoose thì có cần dùng đên mongodb nữa không?"

    Mịa, câu trả lời đáng buồn là có =)) thế thì hỏi làm mịa gì nữa, kiểu gì chả có mongodb =))
    => câu hỏi đáng ra nên là "Nếu tôi dùng mongodb cho hệ thống thì "CÓ-NÊN-DÙNG-MONGOOES-HAY-KHÔNG?"

    1. Sau khi đã chuyển sang câu hỏi mới thì câu trả lời "đáng buồn" lại vẫn là còn tùy.
      Vơi dạng câu hỏi theo kiểu lựa chọn nói chung ấy thì đéo bao giờ có đáp án chính xác, cái gì cũng có 2 mặt cụ thể hơn thì là được và mất, xem xét lại xem những cái 'ĐƯỢC' có đáng để mình phải bỏ ra những cái sẽ "MẤT" hay không. Và với những câu theo kiểu A hay B (mà không còn một dữ kiện có ý nghĩa nào nữa) thì câu trả lời chính xác là còn tùy. Lấy 1 ví dụ đơn giản: "giờ đi làm bằng xe đạp hay xe máy?"
      Đi xe đạp thì chậm, mất sức, nhìn không ngầu nhưng tiết kiệm $ và có cơ hội luyện tập thể dục
      Xe máy thì nhanh hơn, không mất sức mấy nhưng chi phí cao hơn và chả có cơ hội vận động mấy.
      Đấy, chọn đi, lúc này tất nhiên là nếu đủ tuổi, có bằng, nhà xa và đủ khả năng nuôi thì xe máy thôi, đạp xe hơi mệt và mất thời gian,
      Nhưng nếu nhà không xa lắm + đang cần tiết kiệm thì lại xe đạp (thậm chí đi bộ)
      Đấy, rõ ràng là câu trả lời cho việc chọn xe đạp hay xe máy làm phương tiện nó chính là "CÒN TÙY" đấy thôi

    2. Quay trở lại với câu hỏi (CÓ-NÊN-DÙNG-MONGOOES-HAY-KHÔNG?)
      Câu trả lời như đã nói ở trên nhé.
      Nếu để tư vấn thì, cứ thử đi để xem nó phù hợp với những kiểu hệ thống thế nào, trải nghiệm thì lúc nào cũng có giá trị cả kể cả là thử để biết là mình không nên.
      Còn với người mới tìm hiểu thì lời khuyên là bắt đầu từ basic trước đã (kiểu như là học ngôn ngữ trước khi tìm hiểu về library hay framework ấy mà)

    P/S: Ý kiến cá nhân: tránh xa thằng mongooes ra mật ngọt chết ruồi đấy =))
    P/S 2: chém gió đấy, đừng tin =))
    P/S 3: dành cho mấy thằng "FPT" hay thích bới móc theo kiểu "trả lời chung chung, chả có tý ý nghĩa nào", "người ta đang cần giải thích" => tự tìm hiểu đi, trải nghiệm nào cũng có giá trị cả đấy =))



  • Đọc rep của các bác em càng thấy mung lung =)) Mình đang code thử 1 project backend với các hàm API phục vụ cho Android thôi. Đã code xong với 'mongodb' rồi. Tìm hiểu thấy có 'mongoose' thấy rằng có Schema làm code tương đối sáng sủa :D Dùng nhanh gọn hơn.



  • @tientoantai câu trả lời rất hay, p không làm mình thất vọng.



  • Ơn giời thánh @tientoantai đã nhả lời vàng ngọc cho anh em rồi



  • Nếu bạn chưa biết vì sao nên dùng Mongooes thì nên đọc quyển này : https://www.packtpub.com/web-development/mean-web-development , tổng hợp cho người mới bước vào thế giới NodeJs luôn.

    Căn bản thì Mongoose sẽ hỗ trợ :

    • Default Value : giá trị mặc định kiểu như , creationDate: Date.now
    • Predefined modifiers : tùy chỉnh dữ liệu trước khi lưu trữ.
    • Validation data,
    • Balalala...

    Nói chung là nếu không có Mongoose thì sẽ phải code nhiều hơn. mà code nhiều hơn thì nhiều bug hơn.

    Còn có Moogose thì chắc code sẽ chạy chậm hơn một xíu, nhưng bù lại code sáng sủa, phân chia rõ ràng.

    Vì mình code xong còn có thèng khác fix bug nữa mà . ahjhj



  • @Duc-Nguyen108: "Còn có Moogose thì chắc code sẽ chạy chậm hơn một xíu, nhưng bù lại code sáng sủa, phân chia rõ ràng."
    Thế cơ ah? Mình cứ tưởng code sáng sủa hay không là do bản thân người viết code chứ =))



  • @tientoantai said in [Tư vấn] Nên sử dụng 'mongodb' hay 'mongooes'?:

    @Duc-Nguyen108: "Còn có Moogose thì chắc code sẽ chạy chậm hơn một xíu, nhưng bù lại code sáng sủa, phân chia rõ ràng."
    Thế cơ ah? Mình cứ tưởng code sáng sủa hay không là do bản thân người viết code chứ =))

    Theo mình thì chắc ý bạn muốn nói 'mongoose' có Schema nên nhìn rõ ràng hơn? Và giờ mình vẫn phân vân không biết dùng gì là tốt hất :D



  • Nếu chỉ đơn thuần làm product thì mongoose mà tiến thôi bạn, dễ dùng dễ xử lý, support nhiều cái hơn mongodb native.
    Chậm hơn hay sáng sủa hơn thì ko bàn vì bạn code sida thì kết quả như nào cũng tự biết.



  • @Bờm said in [Tư vấn] Nên sử dụng 'mongodb' hay 'mongooes'?:

    Chậm hơn hay sáng sủa hơn thì ko bàn vì bạn code sida thì kết quả như nào cũng tự biết.
    Like câu này nhưng mà bảo là

    @Bờm said in [Tư vấn] Nên sử dụng 'mongodb' hay 'mongooes'?:

    Nếu chỉ đơn thuần làm product thì mongoose mà tiến thôi bạn, dễ dùng dễ xử lý, support nhiều cái hơn mongodb native.

    thì hơi xàm rồi đấy

    @Bui-Minh-Phong : như đã comment ở trên không có cái gọi là tốt nhất, tùy từng điều kiện và mục đích mà chọn công cụ phù hợp thôi.

    Ý kiến cá nhân: Vì bài toán của p vẫn đơn giản nên dùng Mongoose sẽ cảm thấy rất TIỆN (và đúng là tiện thật) nhưng nếu yêu cầu nghiệp vụ của p vượt quá khả năng đáp ứng của Mongoose thì sml thôi. Nên là lời khuyên và vẫn cứ là nên tìm hiểu cách thao tác với mongodb bằng Node, Mongoose thì biết dùng cũng tốt nhưng đừng phụ thuộc vào nó
    P/S nói thật đấy, cứ tin đi



  • @tientoantai xàm là xàm như nào bạn? Mongoose có gì mà không đáp ứng được yêu cầu nghiệp vụ cao?
    Mình không hề chê mongodb native, nhưng rõ ràng tính ứng dụng của mongoose vào product là cao hơn hẳn.



  • Về cơ bản, đây là topic xin tư vấn, nên cá nhân mình cho rằng mọi "lời khuyên" đưa ra đều nên khách quan và KHÔNG nên mang tính quy chụp. B có thể cho rằng Mongoose đủ khả năng đáp ứng yêu cầu nghiệp vụ cao (thậm chí là đáp ứng mọi loại nghiệp vụ) và có tính ứng dụng vào product (RẤT) cao. Đó là quyền của b và mình không có nhu cầu thay đổi quan điểm đấy.
    Tuy nhiên 1 câu rất quy chụp kiểu như [Nếu chỉ đơn thuần làm product thì mongoose mà tiến thôi] thì bản thân mình thấy khá là không ổn (mà ở đây mình dùng từ xàm) nếu b thấy phật ý về điều đó thì mình sorry, không có ý gì đâu (đừng giận)
    Trở lại với vấn đề CÓ-NÊN-DÙNG-MONGOOSE-HAY-KHÔNG? thì như mình đã nói, câu trả lời là còn tùy, không có giải pháp chung cho mọi vấn đề và mỗi thứ đều có ưu, nhược điểm riêng, nên thử nghiệm để biết được ưu nhược điểm của từng loại giải pháp và đưa ra kết luận từng giải pháp ấy phù hợp với loại vấn đề nào.
    Và với @Bui-Minh-Phong là người (tự nhận là) mới tìm hiểu thì lại càng nên thử nghiệm.
    Vốn định không nói gì nhiều đâu, nhưng có vẻ không nói thì chắc không ổn nên cũng lý giải một chút tại sao cá nhân mình cho rằng không nên lạm dụng Mongoose.
    Đầu tiên phải quay về với lý do TẠI-SAO-LAI-CHỌN-DÙNG-MONGODB?
    Nếu các b định trả lời mấy câu kiểu như MEAN stack hay code Node ai chả dùng thì hơi ngụy biện rồi. MEAN chỉ là 1 software stack và chẳng có luật nào quy định PHẢI dùng đủ stack và có nhiều DBMS có thểsử dụng trong ứng dụng Node. Câu trả lời cho câu bên trên rất xin lỗi vẫn là còn tùy =))
    Nhưng lưu ý là mongodb là "schemaless" và tại sao lại schemaless thì đọc thêm ở đây
    https://www.mongodb.com/blog/post/why-schemaless
    và Mongoose thì có Schema =)) có ai thấy nghịch lý gì ở đây không? B sử dụng 1 công cụ để có thể sử dụng Schema vào với 1 thứ ĐƯỢC-CỐ-TÌNH-TẠO-RA-VỚI-ĐẶC-ĐIỂM-SCHEMALESS.
    Các b có thể đọc thêm ở đây để tham khảo thêm quan điểm của các LTV http://stackoverflow.com/questions/18531696/why-do-we-need-what-advantages-to-use-mongoose
    P/S: mình không phủ nhận tính TIỆN LỢI của Mongoose trong một số trường hợp nhé, đừng hiểu lầm
    P/S2: @Bờm Mình xin lỗi vì không chỉ ra trường hợp mà Mongoose không đáp ứng được nghiệp vụ, đấy không phải vấn đề chính của topic



  • Cản ơn bác @tientoantai đã trả lời.
    Trước khi viết topic này để hỏi thực ra mình đã tự viết một api restful với 'mongodb' ở mức đơn giản rồi. Càng tìm hiểu thì càng lắm vấn đề mới nên mới tạo topic này để xin tư vấn. Bản thân mình code Java Android cũng rất thích dùng native code để xử lý hơn là dùng các lib bên ngoài.
    Tất nhiên hiểu về native code sẽ tốt hơn.
    Vì đang code quen theo kiểu OOP nên mình viết topic này chủ yếu để giải quyết vấn đề của mình đó là dùng 'mongoose' có Schema nên viết dễ hiểu và tiết kiệm code hơn (mình hiểu như là tạo được đối tượng, phương thức, thuộc tính,...) còn 'mongodb' không làm được việc đó, code sẽ dài hơn (do mình mới tìm hiểu nên chưa biết cách code sao cho chuẩn :D ). Còn mình chỉ viết api restfull đơn giản thôi nên chưa biết các task đòi hỏi xử lý phức tạp như thế nào :)



  • Mình thì thấy ko có gì tuyệt đối :D
    Mình cũng dùng 1 lib tương tự như mongooes, tất nhiên là tiện hơn, code nhanh hơn, gọn hơn nhưng cũng có những trường hợp mình vẫn phải kết nối trực tiếp mongoDB để xử lý vì lib ko hỗ trợ cho trường hợp đó tốt bằng mongoDB
    Tất cả chỉ là tương đối :D


Log in to reply