1. Câu hỏi cơ bản
MongoDB là gì?
MongoDB là một cơ sở dữ liệu NoSQL, hướng tài liệu (document-oriented), lưu trữ dữ liệu dưới dạng JSON (hoặc BSON) thay vì bảng hoặc hàng.
Sự khác biệt giữa MongoDB và RDBMS là gì?
- MongoDB là NoSQL không dựa trên bảng mà sử dụng tài liệu (documents) để lưu trữ dữ liệu.
- RDBMS sử dụng SQL và lưu dữ liệu trong bảng với hàng và cột.
- MongoDB hỗ trợ mô hình dữ liệu linh hoạt, trong khi RDBMS yêu cầu schema cố định.
Collection là gì trong MongoDB?
Một collection trong MongoDB tương tự như bảng trong cơ sở dữ liệu SQL, nhưng nó lưu trữ tài liệu thay vì hàng.
Document là gì trong MongoDB?
Document là đơn vị lưu trữ dữ liệu trong MongoDB, nó được lưu trữ dưới dạng BSON (Binary JSON), thường là một cấu trúc JSON.
Index trong MongoDB là gì? Tại sao lại cần sử dụng index?
Index giúp tăng tốc quá trình truy vấn dữ liệu. Trong MongoDB, bạn có thể tạo index trên một hoặc nhiều trường để cải thiện hiệu suất truy vấn.
2. Câu hỏi nâng cao
Shard trong MongoDB là gì?
Sharding là phương pháp chia dữ liệu lớn thành các mảnh nhỏ hơn và lưu trữ chúng trên nhiều máy chủ để phân phối tải và tăng cường hiệu suất.
Replica Set là gì trong MongoDB?
Replica Set là một nhóm các máy chủ MongoDB lưu trữ bản sao của cùng một dữ liệu giúp tăng cường khả năng chịu lỗi và đảm bảo tính khả dụng của dữ liệu.
Aggregation Framework trong MongoDB là gì?
Aggregation Framework là một công cụ mạnh mẽ trong MongoDB để xử lý và biến đổi dữ liệu. Nó cho phép thực hiện các tác vụ như nhóm, lọc và sắp xếp dữ liệu.
Sự khác biệt giữa $lookup và $unwind trong MongoDB Aggregation là gì?
$lookup
được sử dụng để thực hiện phép nối (join) giữa các collections khác nhau.$unwind
được sử dụng để bung nổ một mảng trong một tài liệu thành nhiều tài liệu riêng biệt.
TTL Index là gì?
TTL (Time To Live) Index là một loại index tự động xóa các tài liệu sau một khoảng thời gian xác định. Điều này thường hữu ích khi lưu trữ dữ liệu tạm thời.
MongoDB có hỗ trợ giao dịch (transactions) không?
Kể từ phiên bản 4.0, MongoDB đã hỗ trợ giao dịch đa tài liệu (multi-document transactions), cho phép các thao tác atomic trên nhiều tài liệu trong một phiên làm việc.
3. Câu hỏi tình huống
Bạn sẽ làm gì nếu MongoDB gặp sự cố quá tải do quá nhiều truy vấn?
- Xem xét việc tạo thêm index trên các trường được truy vấn nhiều.
- Tối ưu hóa các truy vấn bằng cách sử dụng Aggregation Pipeline hoặc các phương pháp truy vấn hiệu quả hơn.
- Cân nhắc sử dụng Sharding nếu cơ sở dữ liệu quá lớn.
Làm thế nào để backup và restore dữ liệu trong MongoDB?
- Backup: Bạn có thể sử dụng công cụ
mongodump
để sao lưu cơ sở dữ liệu. - Restore: Sử dụng công cụ
mongorestore
để khôi phục dữ liệu từ bản sao lưu.
Cách tối ưu hoá truy vấn trong MongoDB?
- Sử dụng Index hiệu quả.
- Sử dụng phương pháp truy vấn và projection để chỉ lấy những trường cần thiết.
- Giảm thiểu các phép nối phức tạp (joins) và thay vào đó sử dụng mô hình lồng nhau (embedding documents).