MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Xây dựng chỉ mục MongoDB - Ngăn người dùng kích hoạt các bản dựng mới

Chỉ mục xây dựng trên các cụm sản xuất MongoDB cần được xử lý hết sức cẩn thận. Chúng tôi đã ghi lại các vấn đề một cách chi tiết trong một trong các bài đăng trên blog trước đây của chúng tôi - Mối nguy hiểm của việc xây dựng chỉ mục trên MongoDB.

Tùy thuộc vào kích thước dữ liệu của bạn, cả bản dựng nền trước và nền đều có thể hạ thấp cụm của bạn. Vì vậy, làm cách nào để ngăn người dùng của bạn vô tình kích hoạt các bản dựng chỉ mục từ MongoDB CLI? Câu trả lời ngắn gọn là bạn không thể. Tuy nhiên, những gì bạn có thể làm là xóa đặc quyền “CreateIndex” khỏi hầu hết người dùng của bạn để họ không thể vô tình kích hoạt xây dựng chỉ mục từ CLI. Sẽ có rất ít người dùng trong hệ thống của bạn có quyền truy cập để ghi dữ liệu vào cơ sở dữ liệu. Trong số những người dùng này, thậm chí ít hơn sẽ có quyền xây dựng chỉ mục. Để biết sơ bộ về cách sử dụng vai trò MongoDB, vui lòng tham khảo tài liệu - Quản lý người dùng và vai trò.

Tùy chọn tốt nhất để triển khai điều này là tạo vai trò tùy chỉnh của riêng bạn và xóa đặc quyền ‘CreateIndex’ cho người dùng của bạn. Tuy nhiên, chúng tôi không muốn tạo danh sách các quyền theo cách thủ công vì điều này sẽ khác nhau đối với từng ngữ cảnh và có thể là phiên bản MongoDB. Chúng tôi kết hợp tập lệnh nhỏ này để sử dụng một trong các vai trò tích hợp sẵn hiện có và xóa đặc quyền ‘CreateIndex’ khỏi vai trò này. Trong ví dụ này, chúng tôi đang sử dụng vai trò “readWrite” trong nội dung và xóa đặc quyền “CreateIndex’ khỏi vai trò này:

var privs = db.getRole('readWrite',{ showPrivileges: true });
privs.privileges.forEach(function (item, index) {
  var index = item.actions.indexOf("createIndex");
  if (index !== -1) item.actions.splice(index, 1);
});
db.createRole({role:"readWriteNoIndex",privileges:privs.privileges,roles:[]});
  1. Lưu nội dung của đoạn mã dưới dạng createRole.js.
  2. Chạy tập lệnh theo cú pháp bên dưới:
mongo -u <user> -p <password> <host>:27017/<db name> --authenticationDatabase admin createRole.js

Khi vai trò được tạo, bạn có thể sử dụng vai trò này để tạo người dùng về sau.

Các mẹo khác dành cho bạn

Cách tạo chỉ mục phân biệt chữ hoa chữ thường trong MongoDB

Chỉ mục không phân biệt chữ hoa chữ thường hỗ trợ các truy vấn thực hiện so sánh chuỗi mà không liên quan đến chữ cái. Đối chiếu cung cấp cho bạn khả năng chỉ định các quy tắc dành riêng cho ngôn ngữ để so sánh chuỗi. Tìm hiểu thêm

Cách Dừng Xây dựng Chỉ mục Chạy trốn trong MongoDB

Các bản dựng chỉ mục trong MongoDB có thể có tác động tiêu cực đến tính khả dụng của cụm của bạn. Nếu bạn kích hoạt xây dựng chỉ mục nền trước trên một bộ sưu tập lớn, cụm của bạn có thể không phản hồi cho đến khi xây dựng chỉ mục hoàn tất. Tìm hiểu thêm

MongoDB Regex, Chỉ mục &Hiệu suất

MongoDB hỗ trợ các biểu thức chính quy sử dụng toán tử $ regex. Tuy nhiên, các truy vấn MongoDB regex này có một nhược điểm, tất cả trừ một loại regex sử dụng kém các chỉ mục và dẫn đến các vấn đề về hiệu suất. Tìm hiểu thêm


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb và MAMP

  2. tạo giản đồ mongoose

  3. Làm cách nào để chia sẻ bộ sưu tập MongoDB giữa các ứng dụng Meteor?

  4. Tại sao hướng của chỉ mục lại quan trọng trong MongoDB?

  5. Lược đồ đúng MongoDB cho dữ liệu tổng hợp