MONGODB CĂN BẢN
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Chỉ mục (Index) trong MongoDB

Trong cơ sở dữ liệu MongoDB, việc sử dụng chỉ mục (index) là một phần quan trọng để cải thiện hiệu suất và tối ưu hóa truy vấn dữ liệu. Chỉ mục không chỉ giúp tăng tốc độ truy vấn mà còn giảm thiểu tài nguyên được sử dụng. Trong bài viết này, mình sẽ tìm hiểu về cách tạo và sử dụng chỉ mục trong MongoDB.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Tại sao chúng ta cần chỉ mục?

Trước khi mình khám phá cách tạo chỉ mục, hãy hiểu tại sao mình cần chúng:

  • Tăng tốc độ truy vấn: Khi bạn truy vấn dữ liệu từ một collection trong MongoDB, chỉ mục giúp MongoDB dễ dàng tìm kiếm và trả về kết quả một cách nhanh chóng. Nếu không có chỉ mục, MongoDB phải quét qua toàn bộ document để tìm kiếm, điều này có thể rất chậm khi bạn có một lượng lớn dữ liệu.

  • Giảm tài nguyên tốn kém: Sử dụng chỉ mục giúp giảm thiểu tài nguyên được sử dụng cho truy vấn. Thay vì quét toàn bộ collection, chỉ mục cho phép MongoDB tập trung vào các document cần thiết, tiết kiệm CPU và băng thông.

    Bài viết này được đăng tại [free tuts .net]

  • Hỗ trợ cho sắp xếp: Chỉ mục cũng hỗ trợ sắp xếp dữ liệu theo yêu cầu. Bạn có thể sắp xếp các kết quả truy vấn dựa trên các trường đã được lập chỉ mục.

Sử dụng phương thức ensureIndex() trong MongoDB

Cú pháp

Để tạo một chỉ mục, bạn cần sử dụng phương thức ensureIndex() của MongoDB. Cú pháp cơ bản của phương thức này là:

db.COLLECTION_NAME.ensureIndex({ KEY: 1 })

Ở đây:

  • COLLECTION_NAME là tên của collection bạn muốn tạo chỉ mục cho.
  • KEY là tên của trường mà bạn muốn lập chỉ mục.
  • 1 cho biết bạn muốn sắp xếp theo thứ tự tăng dần. Để sắp xếp giảm dần, bạn sử dụng -1.

Ví dụ

Hãy xem xét một collection "bài_viết" với các document sau:

{
  "_id": ObjectId("5983548781331adf45ec5"),
  "title": "MongoDB Overview"
}
{
  "_id": ObjectId("5983548781331adf45ec6"),
  "title": "NoSQL Overview"
}
{
  "_id": ObjectId("5983548781331adf45ec7"),
  "title": "Tutorials Point Overview"
}

Nếu bạn muốn tạo chỉ mục cho trường "title" để tăng tốc độ truy vấn, bạn có thể sử dụng phương thức ensureIndex() như sau:

db.bài_viết.ensureIndex({ "title": 1 })

Chỉ mục này giúp MongoDB tìm kiếm nhanh chóng các document dựa trên trường "title".

Tùy chọn thêm pho phương thức ensureIndex()

Phương thức ensureIndex() cũng cho phép bạn sử dụng nhiều tùy chọn khác nhau như sau:

Tham số Kiểu Miêu tả
background Boolean Xây dựng chỉ mục trong Background để không gây trở ngại các hoạt động cơ sở dữ liệu khác. Xác định true để xây dựng trong Background. Giá trị mặc định là false.
unique Boolean Tạo một unique index để mà Collection đó sẽ không chấp nhận việc chèn các Document có key kết nối với một giá trị đang tồn tại trong chỉ mục. Xác định là true để tạo unique index. Giá trị mặc định là false.
name Chuỗi Tên của chỉ mục. Nếu không được xác định, MongoDB tạo một tên chỉ mục bằng cách nối chuỗi các tên của các trường đã được lập chỉ mục và sắp xếp thứ tự.
dropDups Boolean Tạo một dropDups index trên một trường mà có thể có các bản sao. MongoDB chỉ lập chỉ mục cho lần xuất hiện đầu tiên của key và xóa tất cả Document từ Collection mà chứa lần xuất hiện tiếp theo của key đó. Xác định true để tạo dropDups index. Giá trị mặc định là false.
sparse Boolean Nếu true, chỉ mục chỉ tham chiếu tới các Document với trường đã xác định. Các chỉ mục này sử dụng ít không gian hơn, nhưng vận hành theo cách khác nhau trong một số tình huống (cụ thể với sắp xếp). Giá trị mặc định là false.
expireAfterSeconds Số nguyên Xác định một giá trị (bằng giây), dưới dạng một TTL để điều khiển thời gian bao lâu MongoDB duy trì các Document trong Collection này.
v Phiên bản Số phiên bản của chỉ mục. Phiên bản mặc định phụ thuộc vào phiên bản của MongoDB đang chạy khi tạo chỉ mục.
weights Document Là một số trong dãy từ 1 tới 99999 và biểu thị ý nghĩa của trường quan hệ tới các trường được lập chỉ mục khác về mặt score.
default_language Chuỗi Với một text index, đây là ngôn ngữ xác định các qui tắc của chỉ mục. Giá trị mặc định là english.
language_override Chuỗi Với một text index, xác định tên của trường được chứa trong Document, ngôn ngữ để nạp chồng ngôn ngữ mặc định. Giá trị mặc định là language.

Bảng trên cung cấp một cái nhìn tổng quan về các tùy chọn có sẵn khi tạo chỉ mục trong MongoDB, giúp bạn điều chỉnh chỉ mục để phù hợp với nhu cầu cụ thể của dự án của bạn.

Kết bài

Trong bài viết này, mình đã khám phá tầm quan trọng của chỉ mục (index) trong MongoDB và cách sử dụng phương thức ensureIndex() để tối ưu hóa hiệu suất và tăng tốc độ truy vấn dữ liệu. Ta đã thấy rằng chỉ mục không chỉ giúp tăng hiệu suất truy vấn mà còn giúp giảm thiểu tài nguyên được sử dụng và hỗ trợ cho sắp xếp dữ liệu.

Bằng cách sử dụng các tùy chọn và tham số của phương thức ensureIndex(), bạn có thể điều chỉnh chỉ mục để phù hợp với yêu cầu cụ thể của dự án của bạn. Các tùy chọn như unique, sparse, và expireAfterSeconds cung cấp khả năng linh hoạt cho việc quản lý chỉ mục.

Hãy nhớ rằng việc lập chỉ mục đòi hỏi sự cân nhắc cẩn thận và nên được thực hiện dựa trên quyết định thiết kế và yêu cầu của dự án. Chỉ mục có thể là một công cụ mạnh mẽ để tối ưu hóa hệ thống của bạn, nhưng cũng cần được sử dụng một cách thông minh để tránh lãng phí tài nguyên.

Hy vọng rằng bài viết này đã giúp bạn hiểu rõ hơn về tầm quan trọng của chỉ mục trong MongoDB và cách tạo, tùy chỉnh chúng để cải thiện hiệu suất và hiệu quả của hệ thống của bạn. Chúc bạn thành công trong việc làm quen với việc sử dụng chỉ mục trong MongoDB!

Cùng chuyên mục:

Sử dụng Text Search trong MongoDB

Sử dụng Text Search trong MongoDB

Map Reduce trong MongoDB

Map Reduce trong MongoDB

ObjectId trong MongoDB

ObjectId trong MongoDB

Hoạt động nguyên tử (Atomic Operation) trong MongoDB

Hoạt động nguyên tử (Atomic Operation) trong MongoDB

Phân tích truy vấn trong MongoDB

Phân tích truy vấn trong MongoDB

Covered Query trong MongoDB

Covered Query trong MongoDB

Tham chiếu Database trong MongoDB

Tham chiếu Database trong MongoDB

Relationship trong MongoDB

Relationship trong MongoDB

Tạo backup và restore trong mongodb

Tạo backup và restore trong mongodb

Shard trong MongoDB

Shard trong MongoDB

Replica Set trong MongoDB

Replica Set trong MongoDB

Aggregation trong MongoDB

Aggregation trong MongoDB

Sắp xếp bản ghi trong MongoDB

Sắp xếp bản ghi trong MongoDB

Giới hạn bản ghi trong MongoDB

Giới hạn bản ghi trong MongoDB

Projection trong MongoDB

Projection trong MongoDB

Xóa Document trong MongoDB

Xóa Document trong MongoDB

Cập nhật Document trong MongoDB

Cập nhật Document trong MongoDB

Truy vấn Document trong MongoDB

Truy vấn Document trong MongoDB

Chèn Document trong MongoDB

Chèn Document trong MongoDB

Kiểu dữ liệu trong MongoDB

Kiểu dữ liệu trong MongoDB

Top