Tại sao MongoDB có nhiều người dùng?

Hi !
Cho mình hỏi MongoDB dễ học hay do nó đang là trend mà mình thấy nhiều người dùng quá vậy ?
Cảm ơn mọi người !

Hm, cậu có thể cho bọn tớ biết điều gì khiến cậu nghĩ có nhiều người dùng MongoDB quá vậy? :smiley:
Về cơ bản, công nghệ được sinh ra để giải quyết vấn đề, nếu như Mongo DB giải quyết được vấn đề một cách hiệu quả, nó sẽ được sử dụng nhiều, không phải do dễ học hay trend gì.

6 Likes

số liệu thống kê ở đâu ? Phải có số liệu mới biết chính xác chứ. Đừng kêu do mình nhìn thấy nhiều người xài nha :upside_down_face:

5 Likes

À mình không có số liệu, Các hệ thống lớn thì mình không biết, hình như không dùng MongoDB, nhưng các project nhỏ hay cá nhân đa số dùng MongoDB Vì dạo gần đây mình lướt trên forum, group lập trình thấy người ta dùngMongoDB, trong trường mình anh chị làm đồ án cũng MongoDB, cả thầy cô cũng đi học MongoDB nữa, trong trường thầy cô dạy SQL server, MySQL, … nhưng đến khi làm project thì dùng mongoDB.

2 Likes

Một bằng chứng cho sự nổi tiếng của MongoDB :rofl::
HSBC Holdings PLC là tập đoàn tài chính lớn nhất thế giới về giá trị vốn hóa thị trường. Tập đoàn này cũng lớn thứ 3 thế giới theo xếp hạng của Forbes năm 2000. HSBC đang lên kế hoạch chuyển 65 cái database phân tán ở nhiều nơi trên thế giới về chung một database duy nhất bằng MongoDB:

7 Likes

NoSQL có thể xem là phản đề (antithesis) của CSDLQH (QH ở đây là quan hệ trong toán rời rạc, được biểu diễn bằng cái bảng). Cái bảng được cho là quá cứng nhắc vì số cột trong thực tế là bất định.

NoSQL không phải là không sử dụng ngôn ngữ SQL, mặc dù đã có những hệ quản trị như vậy :slight_smile:

6 Likes

Tớ hiểu rồi.
Tớ nghĩ các project cá nhân hay thầy cô giáo sử dụng mongo DB có thể vì mục đích thử nghiệm/education purpose là chủ yếu.
Như tớ có đề cập ở trên, Mongo DB là 1 công nghệ, nếu nó giải quyết vấn đề của cậu, go ahead! :smiley:
Ở ngoài industry cũng có nhiều hệ thống dùng mongo DB, tuy nhiên đa số các hệ thống vẫn dùng cơ sở dữ liệu quan hệ, chủ yếu vì Data integrity (đa số hệ thống cần điều này :smiley:)

Về vụ HSBC migrate sang mongo DB, tớ hi vọng HSBC có lý do phù hợp cho việc đó, không thì họ sẽ có database thứ 66 :wink:

8 Likes

Nếu có cái database thứ 66 thì không biết một tập đoàn tài chính lớn như HSBC sẽ nhục như thế nào đây :stuck_out_tongue:

5 Likes

NoSQL thay ACID bằng BASE:

  • Tối đa thông lượng nên không có lock.
  • Dữ liệu ở trong trạng thái bất định vì không có lock.
  • Nếu không ai tác động vào bản ghi sau một khoảng thời gian thì bản ghi mới ổn định.
8 Likes

Nosql có nhiều loại, documentdb như mongodb, couchdb, dynamodb, graphdb như neo4j… một số vẫn hỗ trợ lock và transaction như neo4j nhưng hạn chế.

3 Likes

Cảm ơn cậu về thông tin đó nhé! :smile:
Đúng rồi, đó ( Basically Available, Soft state, Eventual consistency) là lý do noSQL không đảm bảo data integrity.
Với những use case không cần dữ liệu chính xác tại mọi thời điểm (như user data), NoSQL có thể được sử dụng. Với use case như payment transaction (yêu cầu rất cao về data integrity), gần như không có lựa chọn nào khác ngoài RDB.

5 Likes

Tai sao mongoDB lại bị chê chỉ làm ở những dự án nhỏ, mang tính học tâp nghiên cứu mà không áp dụng cho production nhỉ, mà sao mongoDB lại hay đi với NodeJS mà không phải NodeJS + postgreSQL hay NodeJS + mySQL, ai giải thích được không, mình mới học :sleepy:

1 Like

Hm, cậu có thể chỉ ra cơ sở cho điều trên được không? :smiley: Để ít nhất bọn tớ tránh phải giải thích điều không đúng.

Tớ nghĩ 1 phần lý do là do Node JS/Javascript làm việc rất hiệu quả với JSON (do nó được serialize tự động trên Javascript). Mongo DB trả về BSON (binary JSON), nên về cơ bản Node JS sẽ làm việc khá hợp với dữ liệu do Mongo DB trả về.
Tuy nhiên, lý do chính ở đây là do design của Node JS - nhà có điều kiện, toàn event - và Mongo DB - B asically A vailable, S oft state, E ventual consistency như đề cập ở trên, nên cả 2 thường rất hữu dụng cho hệ thống event-oriented - như hệ thống chat realtime, mấy tool edit online như google speadsheet… Vì vậy, stack Node JS + Mongo DB thường đi với nhau.

Cậu có thể đã đoán ra, lý do sao Node JS không thường đi kèm với RDB như Postgre/MySQL. Tất nhiên là cậu có thể sử dụng combination đó, nhưng rõ ràng với Node JS, lợi thế lớn nhất của nó là event, nếu cậu sử dụng nó cùng với RDB, cậu sẽ có 1 cái bottleneck to tướng - chính là database - khi mọi sự kiện update/insert/delete có thể block lẫn nhau (RDB được thiết kế để đảm bảo dữ liệu được toàn vẹn tại mọi thời điểm - các sự kiện update có thể lock các resource cần thiết để đảm bảo việc đó). Lúc đó, event-driven architecture không còn lợi thế như cách nó nên có.
Như tớ thường xuyên đề cập, không có viên đạn bạc nào cả. Công nghệ là công cụ, nó nên được dùng để giải quyết đúng vấn đề mà nó được thiết kế để làm :smiley:

Edit: @Xiaomi_Nguyen_Tuan tớ bổ sung thêm lý do tại sao Node JS với RDB thường không đi với nhau, hi vọng đã trả lời câu hỏi ở comment dưới đây của cậu.

13 Likes

Tại sao nhắc tới NodeJS người ta hay nhắc tới MongoDB chứ không phải các db khác ạ, có phải do single thread của nodejs phù hợp mongodb.

Còn những thằng xử lí cần nhiều CPU thì sẽ đi với các csdl như postgre hay mysql

4 Likes

Lý do đơn giản, vì NodeJS và MongoDB đều sử dụng JavaScript. Học một ngôn ngữ xài được đủ thứ công nghệ. Chung quy là lười cả.

Nhưng theo cảm nhận của mình, do thích chuyên môn một mảng (mà nhiều người cũng khuyên vậy), nên dev thường dính chặt luôn 1 ngôn ngữ, cái gì có liên quan đến JavaScript là tìm hiểu hết.

Điều đó dẫn đến bị trời quật, cùng 1 task về database, theo JS học nhiều hơn và viết nhiều hơn là so với cách dùng cả JS và SQL.

8 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?