Chào mọi người.

Bài viết này mình chia sẽ cách thức hoạt động của MongoDB chi tiết cho người đang tìm hiểu.

→ MongoDB là cơ sở dữ liệu NoSQL, theo mô hình tài liệu (document-oriented database). MongoDB lưu trữ dữ liệu dưới dạng các tài liệu tương tự JSON (BSON) thay vì lưu trữ theo các hàng và cột như trong cơ sở dữ liệu quan hệ (SQL).

🔹 Cấu Trúc Dữ Liệu

  • Dữ liệu được tổ chức trong các cơ sở dữ liệu.
  • Mỗi cơ sở dữ liệu chứa các collection (tương tự như các bảng trong SQL).
  • Mỗi collection chứa các tài liệu (documents) tương tự như các hàng trong SQL.
  • Mỗi tài liệu là một cấu trúc cặp khóa-giá trị (tương tự như JSON).

Ví dụ về tài liệu:


{
  "name": "Alice",
  "age": 25,
  "skills": ["Node.js", "MongoDB"]
}

Định Dạng BSON


Cách Hoạt Động MongoDB (Database)


MongoDB sử dụng BSON (Binary JSON) nội bộ cho:

  • Mã hóa và giải mã nhanh chóng.
  • Lưu trữ các kiểu dữ liệu không hỗ trợ trong JSON (ví dụ: Date, Dữ liệu nhị phân).

🔹 Tính Không Cố Định Cấu Trúc (Schema-less)

→ Các collection trong MongoDB không có schema, có nghĩa là:
  • Các tài liệu trong cùng một collection có thể có cấu trúc khác nhau.
  • Bạn có thể thêm trường vào một số tài liệu mà không ảnh hưởng đến các tài liệu khác.
  • Tính linh hoạt này giúp MongoDB trở thành lựa chọn lý tưởng cho các ứng dụng phát triển và thay đổi theo thời gian.
Các Thao Tác CRUD

MongoDB hỗ trợ các thao tác CRUD sau:

  • Create → insertOne, insertMany
  • Read → find, findOne
  • Update → updateOne, updateMany
  • Delete → deleteOne, deleteManyv Những thao tác này được thực hiện trực tiếp trên các collection thông qua các truy vấn và bộ lọc.

🔹 Lập Chỉ Mục (Indexing)

MongoDB sử dụng chỉ mục để tối ưu hiệu suất truy vấn:
  • Mặc định, MongoDB tạo chỉ mục trên trường _id.
  • Bạn có thể tạo chỉ mục tùy chỉnh trên các trường để tăng tốc các truy vấn tìm kiếm và sắp xếp.

🔹 Tổng Hợp (Aggregation)

MongoDB cung cấp một Framework Tổng Hợp mạnh mẽ để:
  • Lọc dữ liệu.
  • Nhóm và chuyển đổi dữ liệu.
  • Thực hiện các phép tính trên dữ liệu (tương tự như GROUP BY và JOIN trong SQL nhưng dựa trên pipeline).

Ví dụ:


db.orders.aggregate([
  { $match: { status: "delivered" } },
  { $group: { _id: "$customerId", total: { $sum: "$amount" } } }
])

🔹 Nhân Đôi (Replication)

MongoDB hỗ trợ replication qua Replica Sets:
  • Nhiều máy chủ MongoDB duy trì các bản sao của dữ liệu nhằm đảm bảo tính khả dụng cao.
  • Nếu máy chủ chính gặp sự cố, một máy chủ phụ sẽ tự động được bầu làm máy chủ chính mới.

🔹 Sharding

MongoDB hỗ trợ sharding cho khả năng mở rộng theo chiều ngang:
  • Dữ liệu được phân phối qua nhiều máy chủ (shards).
  • Mỗi shard lưu trữ một phần dữ liệu, giúp các ứng dụng quy mô lớn có thể xử lý khối lượng dữ liệu và lưu lượng truy cập lớn.

🔹 Giao Dịch (Transactions)

MongoDB hỗ trợ giao dịch ACID đa tài liệu (từ phiên bản 4.0), cho phép thực hiện các thao tác yêu cầu tính nguyên tử (atomicity) qua nhiều tài liệu và collection.

Chúc mọi người thành công.