sql >> Database >  >> NoSQL >> MongoDB

MongoDB Index-builds - Voorkomen dat gebruikers nieuwe builds activeren

Index-builds op MongoDB-productieclusters moeten met de grootste zorg worden behandeld. We hebben de problemen in detail gedocumenteerd in een van onze vorige blogposts:The Perils of Building Indexes on MongoDB.

Afhankelijk van de grootte van uw gegevens, kunnen zowel voorgrond- als achtergrondbuilds uw cluster naar beneden halen. Dus, hoe voorkom je dat je gebruikers per ongeluk indexbuilds activeren vanuit de MongoDB CLI? Het korte antwoord is dat je dat niet kunt. Wat u echter wel kunt doen, is het privilege "CreateIndex" van de meeste van uw gebruikers verwijderen, zodat ze niet per ongeluk een indexopbouw vanuit de CLI kunnen activeren. Er zouden maar heel weinig gebruikers in uw systeem moeten zijn die toegang hebben om gegevens naar de database te schrijven. Onder deze gebruikers zouden nog minder gebruikers toestemming moeten hebben om indexen te bouwen. Raadpleeg de documentatie – Gebruikers en rollen beheren voor een inleiding over het gebruik van MongoDB-rollen.

De beste optie om dit te implementeren is door uw eigen aangepaste rol te maken en het 'CreateIndex'-recht voor uw gebruikers te verwijderen. We wilden de lijst met machtigingen echter niet met de hand samenstellen, omdat dit voor elke context en mogelijk voor MongoDB-versie anders zal zijn. We hebben dit kleine script samengesteld om een ​​van de bestaande ingebouwde rollen te gebruiken en hebben het 'CreateIndex'-privilege van deze rol verwijderd. In dit voorbeeld gebruiken we de ingebouwde "readWrite"-rol en verwijderen we het privilege "CreateIndex" van deze rol:

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. Sla de inhoud van het codefragment op als createRole.js.
  2. Voer het script uit met de onderstaande syntaxis:
mongo -u <user> -p <password> <host>:27017/<db name> --authenticationDatabase admin createRole.js

Zodra de rol is gemaakt, kunt u deze rol gebruiken om toekomstige gebruikers aan te maken.

Meer tips voor jou

Hoofdlettergevoelige indexen maken in MongoDB

Hoofdlettergevoelige indexen ondersteunen query's die tekenreeksvergelijkingen uitvoeren zonder rekening te houden met hoofdletters. Sorteren geeft u de mogelijkheid om taalspecifieke regels op te geven voor het vergelijken van tekenreeksen. Meer informatie

Hoe u een op hol geslagen index kunt stoppen die is ingebouwd in MongoDB

Index-builds in MongoDB kunnen een negatieve invloed hebben op de beschikbaarheid van uw cluster. Als u een opbouw van een voorgrondindex activeert voor een grote verzameling, reageert uw cluster mogelijk niet totdat de opbouw van de index is voltooid. Meer informatie

MongoDB Regex, Index &Prestaties

MongoDB ondersteunt reguliere expressies met de $regex-operator. Deze MongoDB regex-query's hebben echter een keerzijde, op één na maken alle typen regex slecht gebruik van indexen en resulteren in prestatieproblemen. Meer informatie


  1. runCommand-equivalent voor nodejs-native-mongodb

  2. Indexen maken in MongoDB via .NET

  3. opdrachtregelauthenticatie van mongo mislukt

  4. meerdere exemplaren van Mongo DB op dezelfde server