STACKJAVA

MongoDB là gì? Các khái niệm trong MongoDB

This entry is part 1 of 24 in the series MongoDB

MongoDB là gì? Các khái niệm trong MongoDB

MongoDB là gì?

MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở.

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.

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.

Một số khái niệm trong MongoDB

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é.

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.

Ví dụ:

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:

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.

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"
}

Ưu nhược điểm của MongoDB

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.

Ưu nhược điểm của MongoDB, khi nào nên dùng MongoDB

MongoDB là gì? Các khái niệm trong MongoDB stackjava.com

Okay, Done!

References:

https://docs.mongodb.com/manual/introduction/

Series NavigationHướng dẫn cài đặt, cấu hình MongoDB trên Windows 10 >>