A. Beginner-Level MongoDB Questions:
-
MongoDB là gì?
- MongoDB là một cơ sở dữ liệu NoSQL, mã nguồn mở, hướng tài liệu, lưu trữ dữ liệu trong các tài liệu có cấu trúc JSON linh hoạt. Nó được thiết kế cho hiệu suất cao, tính sẵn sàng cao, và khả năng mở rộng dễ dàng.
-
Những tính năng chính của MongoDB là gì?
- Các tính năng chính bao gồm sự linh hoạt của schema, tính sẵn sàng cao với replication, sharding tự động cho việc mở rộng ngang, hỗ trợ các truy vấn địa lý, framework tổng hợp (aggregation framework), và hỗ trợ tích hợp cho MapReduce.
-
Cơ sở dữ liệu NoSQL là gì?
- NoSQL databases là các cơ sở dữ liệu không quan hệ được thiết kế để xử lý khối lượng lớn dữ liệu không có cấu trúc hoặc bán cấu trúc. Chúng cung cấp khả năng mở rộng và linh hoạt cao hơn so với các cơ sở dữ liệu SQL truyền thống.
-
Tài liệu (document) trong MongoDB là gì?
- Một document là đơn vị cơ bản của dữ liệu trong MongoDB, tương tự như một hàng (row) trong cơ sở dữ liệu quan hệ. Nó là một cấu trúc giống JSON, bao gồm các cặp key-value, cho phép lồng ghép các mảng và đối tượng.
-
Collection trong MongoDB là gì?
- Collection là một nhóm các document trong MongoDB, tương tự như một bảng (table) trong cơ sở dữ liệu quan hệ. Collections không áp đặt schema, cho phép các document có cấu trúc khác nhau.
-
Database trong MongoDB là gì?
- Một MongoDB database là một container chứa các collection. Một server MongoDB có thể lưu trữ nhiều database, và mỗi database chứa các collection lưu trữ document.
-
mongod
là gì?mongod
là tiến trình daemon chính trong MongoDB, chịu trách nhiệm xử lý các yêu cầu từ cơ sở dữ liệu, quản lý truy cập dữ liệu, và thực hiện các tác vụ quản lý nền.
-
mongo
là gì?mongo
là một shell dòng lệnh kết nối với một instance MongoDB và cho phép người dùng tương tác với cơ sở dữ liệu bằng cách chạy các truy vấn và lệnh.
-
BSON là gì?
- BSON (Binary JSON) là định dạng tuần tự hóa dạng nhị phân được MongoDB sử dụng để lưu trữ document. Nó mở rộng JSON bằng cách hỗ trợ thêm các loại dữ liệu như
Date
vàNumberLong
.
- BSON (Binary JSON) là định dạng tuần tự hóa dạng nhị phân được MongoDB sử dụng để lưu trữ document. Nó mở rộng JSON bằng cách hỗ trợ thêm các loại dữ liệu như
-
Replica set trong MongoDB là gì?
- Replica set là một nhóm các server MongoDB duy trì cùng một tập dữ liệu, cung cấp sự dư thừa và tính sẵn sàng cao. Nó bao gồm một node primary, các node secondary, và có thể có một arbiter.
-
Sharding trong MongoDB là gì?
- Sharding là quá trình phân phối dữ liệu trên nhiều server trong MongoDB. Nó được sử dụng để xử lý các tập dữ liệu lớn và các thao tác throughput cao bằng cách phân phối khối lượng công việc.
-
Index trong MongoDB là gì?
- Index là một cấu trúc dữ liệu đặc biệt lưu trữ một phần của tập dữ liệu của collection theo cách giúp việc tìm kiếm nhanh hơn. Index hỗ trợ thực thi truy vấn hiệu quả.
-
Các loại index khác nhau trong MongoDB là gì?
- Các loại index phổ biến bao gồm:
- Single field index: Index trên một trường.
- Compound index: Index trên nhiều trường.
- Multikey index: Index trên các trường chứa mảng.
- Text index: Index cho việc tìm kiếm văn bản.
- Geospatial index: Index cho các truy vấn dựa trên vị trí.
- Các loại index phổ biến bao gồm:
-
Aggregation trong MongoDB là gì?
- Aggregation trong MongoDB là một cách để xử lý dữ liệu và trả về các kết quả tính toán. Nó được sử dụng để lọc, nhóm, và biến đổi dữ liệu bằng các toán tử như
$match
,$group
,$sort
, và$project
.
- Aggregation trong MongoDB là một cách để xử lý dữ liệu và trả về các kết quả tính toán. Nó được sử dụng để lọc, nhóm, và biến đổi dữ liệu bằng các toán tử như
-
Sự khác biệt giữa
find()
vàfindOne()
trong MongoDB là gì?find()
trả về tất cả các document khớp với tiêu chí truy vấn, trả về một cursor để duyệt qua.findOne()
chỉ trả về document đầu tiên khớp với tiêu chí truy vấn.
B. Intermediate-Level MongoDB Questions:
-
Mục đích của
ObjectId
trong MongoDB là gì?ObjectId
là một định danh duy nhất 12-byte cho các document trong một MongoDB collection. Nó bao gồm một timestamp, định danh máy, ID tiến trình, và một bộ đếm, đảm bảo tính duy nhất toàn cầu.
-
Replication hoạt động như thế nào trong MongoDB?
- Replication trong MongoDB liên quan đến việc sao chép dữ liệu từ một node primary sang các node secondary trong một replica set. Nếu node primary gặp sự cố, một failover tự động sẽ nâng cấp một node secondary thành primary, đảm bảo tính sẵn sàng cao.
-
Aggregation pipeline là gì?
- Aggregation pipeline là một framework trong MongoDB để tổng hợp dữ liệu. Nó xử lý dữ liệu qua một chuỗi các giai đoạn, trong đó mỗi giai đoạn thực hiện một thao tác như lọc, nhóm, hoặc biến đổi document.
-
mapReduce
trong MongoDB là gì?mapReduce
là một mô hình xử lý dữ liệu trong MongoDB để thực hiện các tác vụ tổng hợp. Nó cho phép biến đổi và tính toán dữ liệu phức tạp bằng cách sử dụng các hàmmap
vàreduce
.
-
$lookup
trong MongoDB là gì?$lookup
là một giai đoạn trong aggregation cho phép thực hiện các left outer join với các collection khác trong cùng một cơ sở dữ liệu, cho phép tham chiếu dữ liệu từ một collection sang collection khác.
-
Capped collection là gì?
- Capped collection là một collection có kích thước cố định trong MongoDB, tự động ghi đè các document cũ nhất khi đạt đến giới hạn kích thước. Nó phù hợp cho việc lưu trữ log hoặc caching dữ liệu.
-
oplog
trong MongoDB là gì?oplog
(operations log) là một collection đặc biệt có kích thước cố định trong MongoDB, lưu lại các thao tác đã sửa đổi dữ liệu trong một replica set. Nó được sử dụng cho việc replication giữa các node primary và secondary.
-
db.stats()
trong MongoDB là gì?db.stats()
trả về các thống kê về cơ sở dữ liệu, bao gồm kích thước lưu trữ, số lượng collection, index, và các đối tượng.
-
shard key
là gì?shard key
là một trường hoặc các trường được sử dụng để phân phối document trên các shard trong một cluster MongoDB. Việc lựa chọn shard key rất quan trọng để đảm bảo phân phối dữ liệu đồng đều và hiệu suất truy vấn.
-
MongoDB xử lý concurrency như thế nào?
- MongoDB sử dụng cơ chế khóa đa hạt (multi-granularity locking), bao gồm các khóa ở cấp độ toàn cục, database, và collection. Nó cũng hỗ trợ concurrency lạc quan bằng cách sử dụng
$inc
vàfindAndModify
.
- MongoDB sử dụng cơ chế khóa đa hạt (multi-granularity locking), bao gồm các khóa ở cấp độ toàn cục, database, và collection. Nó cũng hỗ trợ concurrency lạc quan bằng cách sử dụng
C. Advanced-Level MongoDB Questions:
-
Sự khác biệt giữa mô hình dữ liệu
Embedded
vàReferenced
trong MongoDB là gì?- Embedded: Lưu trữ dữ liệu liên quan trong một document duy nhất, cải thiện hiệu suất đọc.
- Referenced: Lưu trữ các quan hệ giữa các document trong các collection khác nhau, giảm thiểu việc trùng lặp dữ liệu và hỗ trợ các truy vấn phức tạp.
-
Write concern trong MongoDB là gì?
- Write concern xác định mức độ xác nhận được yêu cầu từ MongoDB khi ghi dữ liệu. Nó quyết định bao nhiêu bản sao phải xác nhận một thao tác ghi trước khi nó được coi là thành công.
-
Schema design
trong MongoDB là gì?- Schema design trong MongoDB liên quan đến việc tổ chức dữ liệu thành các collection và document để đảm bảo hiệu quả của các truy vấn và cập nhật. Nó phụ thuộc vào các mẫu truy cập của ứng dụng và có thể bao gồm việc nhúng (embedding) hoặc tham chiếu (referencing).
-
Làm thế nào để tạo backup trong MongoDB?
- Backup trong MongoDB có thể được tạo bằng cách sử dụng các lệnh
mongodump
vàmongorestore
. Ngoài ra, bạn có thể sử dụng các snapshot hệ thống tập tin, backup MongoDB Atlas, hoặc lệnhmongoexport
để xuất các collection.
- Backup trong MongoDB có thể được tạo bằng cách sử dụng các lệnh
-
Làm thế nào để tối ưu hóa các truy vấn trong MongoDB?
- Các kỹ thuật tối ưu hóa truy vấn trong MongoDB bao gồm tạo index đúng cách, sử dụng projection để giới hạn các trường được trả về, phân tích kế hoạch truy vấn với
explain()
, tránh sử dụng$where
, và tối ưu hóa schema cho các truy vấn phổ biến.
- Các kỹ thuật tối ưu hóa truy vấn trong MongoDB bao gồm tạo index đúng cách, sử dụng projection để giới hạn các trường được trả về, phân tích kế hoạch truy vấn với