Sự khác nhau giữa MongoDB với các hệ quản trị cơ sở dữ liệu quan hệ (RELATIONAL DATABASE MANAGEMENT SYSTEM – RDBMS) như MySQL, MS SQL… đó là lưu dữ liệu dạng NoSQL tức là không có sự ràng buộc giữa các bảng.
Đang xem: Mongodb là gì
MongoDB là document database – database hướng tài liệu.
Dữ liệu trong MongoDB lưu dưới dạng json. Do đó có thể hiểu document database ở đây nghĩa là dữ liệu lưu trữ kiểu text/json, chứ không lưu theo kiểu bảng, cột với kiểu dữ liệu byte, clob… như trong RDBMS.
Khi làm việc với MongoDB bạn sẽ gặp các khái niệm sau:
Collection, Document, Embeded documents, linking, Primary Key. Vậy chúng là gì?
RDBMS | MongoDB |
Database | Database |
Table | Collection |
Row | Document |
Column | Field |
Table Join | Embedded Documents |
Primary Key | Primary Key (mặc định là _id) |
Chắc hẳn bạn sẽ tự hỏi tại sao không dùng luôn mấy khái niệm table, row… đi cho dễ nhớ còn bày đặt ra Collection, document là gì. Có lý do của nó nhé.
Collection: Collection là một nhóm các dữ liệu thuộc cùng loại do người dùng qui định, sự khác nhau giữa collection với table trong RDBMS đó là collection không có ràng buộc, quan hệ với collection khác. Mỗi dữ liệu trong collection không cố định về số trường như row trong table.Document: Document là một tài liệu lưu trữ dưới dạng json. Nó tương đương với row trong table của RDBMS nhưng dữ liệu trong document khá linh hoạt, nó không cố định có bao nhiêu trường, dữ liệu trong mỗi trường phải là cố định.Embedded Documents: Nếu trong RDBMS, chúng ta có kiểu join các bảng, ví dụ bảng person join với bảng address để biết một person có những address nào thì trong MongoDB, document của person sẽ chứa 1 array các document address.
Xem thêm: Cung Tài Lộc Là Gì? Cách Tự Mở Cung Tài Khai Cung Lộc Là Gì ?
Primary Key: Mặc định primary key trong MongoDB là field _id, lúc insert nếu bạn không chỉ rõ trường _id thì nó sẽ tự động generate giá trị cho _id.
Bạn thấy đấy, dữ liệu trong Collection, Document khác hẳn với Table, Row.
Nó rất linh hoạt, bạn thích insert gì vào cũng được, không cứ phải một kiểu cố định, số lượng field cố định.
Dưới đây là một document trong MongoDB:
{ “_id” : ObjectId(“5b5ddca8e25fd6f9fb473087”), “name” : “kai”, “age” : 27, “address” : < "vietnam", "korean" >}Nếu là trong RDBMS thì ta sẽ có 2 table:
table person (id, name, age)table address: (id, descript, person) trong đó person link tới table person.
Nhưng khi cấu trúc của dữ liệu thay đổi thì bạn sẽ phải sửa cột, sửa bảng… còn MongoDB thì không.
Xem thêm: Nghĩa Của ' Compromise Là Gì ? Tìm Hiểu Chi Tiết Nghĩa Của Từ “Compromise”
Chẳng hạn như adress có thêm thông tin như province, street… column age chuyển sang kiểu text, hay thêm column mới là gender thì với MongoDB ta chỉ cần thêm dữ liệu rồi insert bình thường:
{ “_id” : ObjectId(“5b5ddeb7e25fd6f9fb4730c6”), “name” : “kai”, “age” : “27”, “address” : < { "country" : "viet nam", "province" : "ha noi", "street" : "nguyen trai" }, { "country" : "korea", "province" : "seoul" } >, “gender” : “male”}
Phần ưu nhược điểm của MongoDB mình tách ra một bài riêng, vì mình muốn giải thích chi tiết hơn.