Unikālie ierobežojumi MongoDB tiek ieviesti, izmantojot unikālus indeksus, kas nodrošina, ka kolekcijas diviem dokumentiem nav vienādas vērtības indeksētajam laukam vai laukiem. Tas ir ļoti svarīgi, lai saglabātu datu integritāti, it īpaši, ja tādiem laukiem kā e -pasta adreses, produktu SKU vai darījumu ID ir jābūt unikālām. Unikālais ierobežojums darbojas kā vārtsargs, neļaujot ierakstu dublikātam ievadīt datu bāzē.
No veiktspējas viedokļa unikāliem ierobežojumiem ir vairākas sekas. Pozitīvā pusē tie var ievērojami uzlabot vaicājuma veiktspēju, izmantojot indeksus ātrai meklēšanai. Indeksētie lauki, ieskaitot tos unikālos ierobežojumus, ļauj MongoDB izvairīties no pilnīgas kolekcijas skenēšanas, efektīvi meklējot dokumentus, izmantojot B-koku datu struktūru. Šis indeksēšana palielina veiktspēju, jo īpaši vaicājumiem, kas saistīti ar unikālo indeksēto lauku, piemēram, lietotāja atrašanu pa e -pastu vai SKU produktu.
Tomēr unikālie ierobežojumi ievieš pieskaitāmās izmaksas par rakstīšanas operācijām. Ievietošanas, atjauninājumu vai dzēšanas laikā MongoDB pirms operācijas pabeigšanas jāpārbauda indeksētās vērtības unikalitāte. Tas palielina apstrādes laiku, jo datu bāzes motoram ir jāuztur indeksa struktūras un jānodrošina, ka neviens dublikāts nepārkāpj ierobežojumu. Līdz ar to rakstīšanas veiktspēja, īpaši ievietot un atjaunināt ātrumu, var samazināties, salīdzinot ar darbībām, kas nav indeksēti laukos vai laukos bez unikalitātes ierobežojumiem. Pieskaitāmās izmaksas var vairāk izrunāt kolekcijās ar augstu rakstīšanas caurlaidspēju vai biežiem unikālu indeksēto lauku atjauninājumiem.
Papildus tiešajai veiktspējas ietekmei ir plašāki uzglabāšanas un pārvaldības apsvērumi. Indeksi patērē papildu vietu un atmiņu, tāpēc unikālie indeksi palielina datu bāzes glabāšanas prasības. Turklāt lieliem vai sarežģītiem unikāliem indeksiem, piemēram, tiem, kas aptver vairākus laukus (saliktos unikālos indeksus), var būt nepieciešams vairāk atmiņas un CPU resursu uzturēšanai un vaicājumu apstrādei. Tas var izraisīt iespējamu latentumu lasīšanas operācijās, ja indeksi ir lieli un tos nevar pilnībā ielādēt atmiņā.
Veidojot vai pievienojot unikālus ierobežojumus esošajām kolekcijām, īpaši lielām, MongoDB izturēšanās indeksa izveidošanas laikā ir ievērības cienīga. Raksta kolekcijai var bloķēt vai arī jāgaida, līdz unikālā indeksa veidošana tiks pabeigta, lai izvairītos no datu neatbilstības. Visi dokumenti, kas pārkāpj unikalitātes noteikumu, ir jāatrisina, pirms indeksa veidošana izdodas. Ja indeksa izveidošanas laikā pastāv dublikāti, indeksa veidošanas darbība neizdosies. Šis bloķēšanas raksturlielums nozīmē, ka indeksa izveidošanai var būt operatīva ietekme uz rakstīšanas pieejamību apkopes logos.
Vaicājumu ziņā nav būtiskas atšķirības vaicājumu ātrumā, kas izmanto unikālus indeksus, salīdzinot ar ne unikāliem indeksiem, ja datu sadalījums un indeksu struktūras ir līdzīgas. Unikālie indeksi pēc būtības nepaātrina lasīšanas vaicājumus, kas pārsniedz jebkura indeksa sniegto paātrinājumu, jo gan unikālie, gan ne unikālie indeksi Mongodb izmanto B-koku struktūras. Galvenais faktors joprojām ir indeksa klātbūtne, kas samazina vaicājumu latentumu, izvairoties no pilnīgas kolekcijas skenēšanas.
Papildu apsvērumi ir izvairīšanās no pārmērīgas indeksēšanas un nevajadzīgiem unikāliem ierobežojumiem. Unikālu ierobežojumu piemērošana laukiem, kuriem nav nepieciešama unikalitāte, var samazināt elastību un uzspiest pieskaitāmās izmaksas bez jēgpilnas priekšrocības. Pareizam shēmas dizainam jāietver unikālu ierobežojumu pievienošana tikai tad, ja ir nepieciešama semantiski unikalitāte, piemēram, taustiņi, kas attēlo atšķirīgas identitātes vai darījumu identifikatorus. Pārmērīga izmantošana var pasliktināt vispārējo sistēmas veiktspēju un sarežģīt datu pārvaldību.
Lietojumprogrammas līmenī unikālie ierobežojumi, ko MongoDB izpilda, nodrošina noturību, pirms ievietošanas vai atjauninājumiem samazinot nepieciešamību pēc manuālas dublēšanās pārbaudes, kas var vienkāršot lietojumprogrammu loģiku un samazināt apstākļus, kas pakļauti kļūdām. Tomēr kompromiss ir nedaudz palielināts rakstīšanas operāciju latentums unikalitātes pārbaudes dēļ.
Rezumējot, MongoDB unikālo ierobežojumu izmantošanas ietekmi uz veiktspēju var apkopot šādi:
- Unikālie ierobežojumi uzlabo lasīšanas vaicājuma veiktspēju, piesaistot indeksus, lai ātri atrastu dokumentus, izvairoties no kolekcijas skenēšanas.
- Viņi pievieno rakstīšanas pieskaitāmās izmaksas ieliktņiem un atjauninājumiem, jo pirms operāciju pabeigšanas datu bāzei ir jānodrošina unikalitāte.
- Unikālie indeksi palielina krātuves un atmiņas izmantošanu, ar saliktu vai lieliem unikāliem indeksiem, kas potenciāli ietekmē sistēmas resursus.
- Indeksa radīšana unikalitātes izpildei var bloķēt rakstus līdz pabeigšanai, ietekmējot pieejamību apkopes laikā.
- Gan, salīdzinot ar indeksu, nav ievērojamas atšķirības lasīšanas ātrumā starp unikālajiem un ne unikāliem indeksiem.
- Pareiza unikālu ierobežojumu izmantošana veicina datu integritāti un samazina lietojumprogrammu sarežģītību, apstrādājot dublēšanās pārbaudi datu bāzes līmenī.
- Pārmērīga vai neatbilstoša unikālu ierobežojumu izmantošana var negatīvi ietekmēt veiktspēju un elastību, tāpēc tie būtu jāuzklāj uzmanīgi.