Kā rīkoties ar uzlabotu datu apstrādi, izmantojot MongoDB apkopošanas sistēmu

MongoDB ir gājis tālu. Lai arī tur ir daudz NoSQL datu bāzu, MongoDB ir pirmā datu bāze, kas nāk prātā, runājot par NoSQL datu bāzēm.

Lai gan starp cilvēkiem, kuriem patīk SQL, un cilvēkiem, kuri dod priekšroku NoSQL, vienmēr ir bijis nedaudz karstuma, patiesība ir tāda, ka tādas datu bāzes kā MongoDB atrisina citu problēmu.

Un tie var būt ļoti ērti, nododot nestrukturētus datus, kur ātri un efektīvi manipulēt ar datu formu (un pārvērst to attiecīgajās zināšanās) ir daudz noderīgāk, nekā pārliecinošu sniegumu, ko nodrošina vecās skolas SQL datu bāzes.

MongoDB nāk ar spēcīgu sistēmu, lai to izdarītu - tas ir, manipulējot ar datiem tieši uz serveri: Aggregation Framework. Ieskatīsimies tajā un apskatīsim dažus īsus jautājumus par to, kas tas ir un kāpēc tas ir svarīgi.

Kas ir apkopošanas sistēma?

Apkopošanas ietvars ir tikai veids, kā vaicāt dokumentus MongoDB kolekcijā. Šis ietvars pastāv tāpēc, ka, sākot darbu ar datiem un ar tiem manipulēt, jums bieži ir jāsavāc kolekcijas, tās jāpārveido, lauki jāizplēš, lauki jāpārdēvē, jāsadala kopā, grupēt dokumentus pēc laukiem, eksplodēt dažādu dokumentu laukus utt. .

To nevar izdarīt tradicionālā vaicājumu sistēma, kas nāk ar MongoDB (tas ir, meklēšanas vaicājums vai atjaunināšanas vaicājums, vai jebkurš cits vaicājums, kuru, iespējams, esat izmantojis).

Vienkāršais vaicājums, kas iestatīts MongoDB, ļauj izgūt tikai atsevišķu dokumentu pilnus vai daļu. Tie tiešām neļauj jums manipulēt ar serverī esošajiem dokumentiem un pēc tam tos atgriezt savā lietojumprogrammā.

Šeit parādās MongoDB apkopošanas ietvars. Tas nav nekas ārējs, jo apkopošana tiek ievietota MongoDB. Jūs varat iemācīties strādāt ar MongoDB apkopošanas sistēmu, izmantojot šo manu izveidoto bezmaksas YouTube atskaņošanas sarakstu.

Cauruļvads

Apkopošanas sistēma balstās uz cauruļvada koncepciju. Apskatīsim attēlu, kas to labāk izskaidro:

Šeit, kā redzat, mēs paņemam kolekciju un nododam to cauruļvadam. Šis cauruļvads sastāv no noteiktiem posmiem, kad daži operatori modificē kolekcijas dokumentus, izmantojot dažādas metodes. Visbeidzot, izeja tiek atgriezta lietojumprogrammai, kas izsauc vaicājumu.

Salīdziniet to ar vienkāršu vaicājumu, piemēram, atrast. Protams, tas darbojas lielākajā daļā veidu, taču tas nav īsti noderīgs, ja vēlaties modificēt datus, vienlaikus arī tos izgūstot.

Vai nu jums būs jāielādē dokumenti un attiecīgi jāmaina tie servera lietojumprogrammā, vai vēl sliktāk, jūs tos nosūtīsit klientam un ļausiet frontend kodam to modificēt jums.

Abos gadījumos jūs tērējat resursus un joslas platumu. Tādējādi apkopošanas sistēma glīti risina šo problēmu. Apskatīsim, kā tas notiek ar operatoriem.

Cauruļvadu operatori

MongoDB cauruļvads ir masīvs, kas sastāv no dažādiem operatoriem, kuri uzņem dokumentu kopu un izspļauj modificētus dokumentus saskaņā ar programmētāja norādītajiem noteikumiem. Nākamais operators uzņem iepriekšējā operatora izspļautos dokumentus, tāpēc to sauc par cauruļvadu.

Jums var būt daudz operatoru, kurus var atkārtot, atšķirībā no parastajiem MongoDB vaicājumiem.

Apskatīsim dažus izplatītākos cauruļvadu operatorus MongoDB.

$ grupa

Šis operators ļauj grupēt dokumentu kopu, pamatojoties uz noteiktu dokumentu lauku. To var arī izmantot, lai sagrupētu dažādos laukus dokumentos.

Es ļoti ticu teicienam, ka attēls ir 1000 vārdu vērts. Video ir vērts 1000 attēlu (labi, tehniski daudz vairāk attēlu, bet labi), tāpēc apskatīsim ātru video par to:

$ spēles

Sērkociņu cauruļvada operators darbojas ļoti līdzīgi kā parastās meklēšanas operators. Tomēr laba lieta ir tā, ka to var izmantot vairākas reizes, jo atrodaties cauruļvada vidē! Tas padara to spēcīgu.

Apskatīsim, kā to izmanto kolekcijā:

$ ierobežojums

Caur cauruļvada operētājsistēmu $ izlaist izlaiž pirmos N dokumentus un pārējos dokumentus nodod nākamajam operatoram. Apskatīsim ātru piemēru:

$ izlaist

$ Izlaist cauruļvada operators izlaiž pirmos N dokumentus un pārējos dokumentus nodod nākamajam operatoram. Apskatīsim ātru piemēru:

$ atpūsties

Šis operators personīgi ir mans mīļākais. $ wrind uzņem masīva lauku un eksplodē to vairākos N apakšdokumentos ar i-to dokumentu, kas kā lauka nosaukuma vērtību satur i-to konkrēto masīva vērtību.

Kopā ar citiem operatoriem, piemēram, $ group un $ match, tas kļūst ļoti spēcīgs datu apstrādei. Izklausās mulsinoši? Apskatīsim vienkāršu piemēru:

$ projekts

Projekta operators ļauj jums no katra dokumenta noplūkt virkni lauku un pārējos izmest. Ne tikai to, bet jūs varat arī pārdēvēt noplūktos laukus, salīmēt virknes, izņemt apakšstruktūras un daudz ko citu!

Apskatīsim, kā tas darbojas īsumā:

Labākā prakse agregācijas ietvara izmantošanai

Ar lielu spēku nāk liela atbildība. Apkopošanas sistēmu var viegli izmantot arī vienkāršu vaicājumu veikšanai, tāpēc ir svarīgi pārliecināties, ka nerakstāt sliktus datu bāzes vaicājumus.

Vispirms paturiet prātā šādus punktus:

  1. MongoDB noraidīs jebkuru operatoru, kas aizņem vairāk nekā 100 MB RAM, un radīs kļūdu. Tāpēc pārliecinieties, ka pēc iespējas ātrāk samaziniet savus datus, jo vienam operatoram nevajadzētu aizņemt vairāk par 100 MB.
  2. Kārtībai ir nozīme! Ja vispirms iestatīsit $ match, samazināsies to dokumentu skaits, kuri tiek nodoti pārējam cauruļvadam. Liekot nākamo $ projektu, tas vēl vairāk samazinās atsevišķa dokumenta lielumu, atbrīvojoties no laukiem.
  3. Visbeidzot, pirms izmantojat operatorus, piemēram, $ project vai $ relax, pārliecinieties, ka esat veicis visu darbu, kas prasa indeksēto lauku izmantošanu (šķirošana, saskaņošana utt.). Tas ir tāpēc, ka šie operatori izveido jaunus dokumentus, kuriem nav sākotnējā dokumenta indeksu.

Secinājums

MongoDB ir lielisks datu bāzes rīks, un tas var būt patiešām noderīgs maziem iesācējiem un uzņēmumiem, kuri vēlas ātri atkārtoties. Daļēji tas ir saistīts ar tā vaļīgajiem ierobežojumiem un piedodošo raksturu.

Pats izmantoju MongoDB vietnē codedamn - platforma tādiem izstrādātājiem kā jūs, kur visi mācās un savienojas!

Miers!