sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB Index Builds – Forhindrer brugere i at udløse nye Builds

Indeks bygger på MongoDB produktionsklynger skal håndteres med den største omhu. Vi har dokumenteret problemerne i detaljer i et af  vores tidligere blogindlæg – The Perils of Building Indexes på MongoDB.

Afhængigt af størrelsen på dine data kan både forgrunds- og baggrundsbygninger bringe din klynge ned. Så hvordan forhindrer du, at dine brugere ved et uheld udløser indeksopbygninger fra MongoDB CLI? Det korte svar er, at du ikke kan. Men hvad du kan gøre er at fjerne "CreateIndex"-privilegiet fra de fleste af dine brugere, så de ikke ved et uheld kan udløse en indeksbuild fra CLI. Der burde være meget få brugere i dit system, der har adgang til at skrive data til databasen. Blandt disse brugere burde endnu færre have tilladelse til at bygge indekser. For en primer om, hvordan man bruger MongoDB-roller, se venligst dokumentationen – Administrer brugere og roller.

Den bedste mulighed for at implementere dette er at oprette din egen tilpassede rolle og fjerne 'CreateIndex'-privilegiet for dine brugere. Vi ønskede dog ikke at bygge listen over tilladelser i hånden, da denne vil være forskellig for hver kontekst og muligvis MongoDB-version. Vi sammensatte dette lille script for at bruge en af ​​de eksisterende indbyggede roller og fjernede 'CreateIndex'-privilegiet fra denne rolle. I dette eksempel bruger vi den indbyggede "readWrite"-rolle og fjerner "CreateIndex"-privilegiet fra denne rolle:

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. Gem indholdet af kodestykket som createRole.js.
  2. Kør scriptet ved hjælp af syntaksen nedenfor:
mongo -u <user> -p <password> <host>:27017/<db name> --authenticationDatabase admin createRole.js

Når rollen er oprettet, kan du bruge denne rolle til at oprette brugere fremover.

Flere tips til dig

Sådan opretter du indekser uden store og små bogstaver i MongoDB

Indekser, der ikke skelner mellem store og små bogstaver, understøtter forespørgsler, der udfører strengsammenligninger uden hensyn til store og små bogstaver. Sortering giver dig mulighed for at angive sprogspecifikke regler for strengsammenligning. Lær mere

Sådan stopper du en Runaway Index Build i MongoDB

Indeksbuilds i MongoDB kan have en negativ indvirkning på tilgængeligheden af ​​din klynge. Hvis du udløser et forgrundsindeksbyggeri på en stor samling, reagerer din klynge muligvis ikke, indtil indeksopbygningen er fuldført. Lær mere

MongoDB Regex, Index &Performance

MongoDB understøtter regulære udtryk ved hjælp af $regex-operatoren. Men disse MongoDB regex-forespørgsler har en ulempe, alle undtagen én type regex gør dårlig brug af indekser og resulterer i ydeevneproblemer. Lær mere


  1. Optimering af dit Linux-miljø til MongoDB

  2. 2 måder at tilføje en værdi til et array i MongoDB

  3. Single cache frontend og backend

  4. Hvordan gemmer jeg en fil i MongoDB?