MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Изграждане на индекс на MongoDB – предотвратяване на потребителите да задействат нови компилации

Индексните надстройки върху производствени клъстери на MongoDB трябва да се обработват с най-голямо внимание. Документирахме проблемите подробно в една от  предишните ни публикации в блога – Опасностите от изграждането на индекси в MongoDB.

В зависимост от размера на вашите данни, както на преден план, така и на заден план, може да намали вашия клъстер. И така, как да предпазите потребителите си от случайно задействане на изграждане на индекси от MongoDB CLI? Краткият отговор е, че не можете. Въпреки това, това, което можете да направите, е да премахнете привилегията „CreateIndex“ от повечето си потребители, така че да не могат случайно да задействат изграждане на индекс от CLI. Трябва да има много малко потребители във вашата система, които имат достъп да записват данни в базата данни. Сред тези потребители още по-малко трябва да имат разрешение за изграждане на индекси. За пример как да използвате ролите на MongoDB, моля, вижте документацията – Управление на потребители и роли.

Най-добрият вариант за прилагане на това е да създадете своя собствена персонализирана роля и да премахнете привилегията „CreateIndex“ за вашите потребители. Въпреки това, ние не искахме да изграждаме списъка с разрешения на ръка, тъй като това ще бъде различно за всеки контекст и евентуално версия на MongoDB. Събрахме този малък скрипт, за да използваме една от съществуващите вградени роли, и премахнахме привилегията „CreateIndex“ от тази роля. В този пример използваме вградената роля „readWrite“ и премахваме привилегията „CreateIndex“ от тази роля:

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. Запазете съдържанието на кодовия фрагмент като createRole.js.
  2. Изпълнете скрипта, като използвате синтаксиса по-долу:
mongo -u <user> -p <password> <host>:27017/<db name> --authenticationDatabase admin createRole.js

След като ролята бъде създадена, можете да използвате тази роля, за да създавате потребители занапред.

Още съвети за вас

Как да създавам индекси, нечувствителни към главни букви в MongoDB

Индексите, нечувствителни към малки и малки букви, поддържат заявки, които извършват сравнения на низове, без да се съобразява с главния и главния букви. Съпоставянето ви дава възможност да зададете специфични за езика правила за сравнение на низове. Научете повече

Как да спрем изграждането на Runaway Index в MongoDB

Изграждането на индекси в MongoDB може да има неблагоприятно въздействие върху наличността на вашия клъстер. Ако задействате изграждане на индекс на преден план върху голяма колекция, вашият клъстер може да не реагира, докато изграждането на индекс не завърши. Научете повече

Регулярен израз, индекс и производителност MongoDB

MongoDB поддържа регулярни изрази с помощта на оператора $regex. Въпреки това тези заявки за регулярни изрази в MongoDB имат недостатък, всички освен един тип регулярни изрази използват лошо индекси и водят до проблеми с производителността. Научете повече


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Задайте програмно преобразувател на MongoDb

  2. Как мога да преоразмеря колекция, ограничена от mongodb, без да загубя данни?

  3. sql заявка към mongodb?

  4. Конкатениране на низови стойности в масив в едно поле в MongoDB

  5. Как да намерите името на полето в MongoDB на произволна дълбочина