Kas ir MongoDB?
Desmitiem gadu garumā attiecību datu bāzes bija visizplatītākais risinājums datu pārvaldībai. Tomēr mūsdienu tīmekļa lietojumprogrammām raksturīgais datu apjoma pieaugums un daudzveidība ir padarījis dokumentu orientētas datu bāzes, piemēram, Mongo DB, par nopietnu konkurentu. Mēs izskaidrosim, kas ir dokumentu orientēta pieeja un kādas priekšrocības piedāvā šis datu pārvaldības modelis.
Kā MongoDB atšķiras no citām datu bāzēm?
Tradicionālās relatīvajās datu bāzēs dati tiek glabāti strukturētā tabulā. MongoDB, kuras nosaukums cēlies no vārda humongous (milzīgs), ir dokumentu orientēta datu bāzes sistēma. MongoDB dati tiek grupēti nestrukturētā veidā, ko datu bāzes programma dēvē par kolekcijām.
Vēl viena būtiska atšķirība ir tā, ka MongoDB neizmanto SQL kā vaicājumu valodu, tāpēc to klasificē kā NoSQL datu bāzes sistēmu. Tā vietā MongoDB izmanto JavaScript balstītu MongoDB vaicājumu valodu (MQL) kā savu vaicājumu valodu. Rezultātā MongoDB ieraksti tiek glabāti BSON formātā, kas ir veidots pēc JSON parauga. Tas nozīmē, ka tiek atbalstīti visi JavaScript datu tipi, tāpēc MongoDB ir kļuvusi par ideālu izvēli daudzām JavaScript balstītām platformām.
Vēl viena MongoDB datu bāzu raksturīga iezīme ir to spēja horizontāli mērogoties. Tas nozīmē, ka datu bāzes dati var tikt izkliedēti pa vairākiem serveriem, nevis glabāti vienā centrālajā vietā. Šāda pieeja nodrošina lielāku datu pieejamību un uzlabo datu bāzes kopējo veiktspēju. Horizontālā mērogošana bieži vien ir rentablāka nekā viena servera modernizēšana ar jaudīgāku aparatūru (vertikālā mērogošana).
Kā darbojas MongoDB?
Atšķirībā no MySQL, MongoDB izmanto pilnīgi atšķirīgu pieeju datu uzglabāšanai un darbojas dokumentu orientētā veidā. Tā vietā, lai datus uzglabātu tabulu veidā, kur katrā rindā ir vienāds skaits lauku, kas jāaizpilda ar vērtībām, MongoDB datu bāzes datus uzglabā BSON dokumentos, kuriem nav iepriekš definētas struktūras. Lauku skaits var atšķirties starp dokumentiem, un laukiem nav jābūt savstarpēji saskaņotiem. Dokumenti pilda līdzīgu lomu kā rindas SQL tabulā, bet šajos dokumentos definētie lauki kalpo kā kolonnas.
Strādājot ar MongoDB datu bāzēm, var izmantot daudzus rīkus. Papildus uzticamajam MongoDB Shell, MongoDB datu bāzes var pārvaldīt arī ar GUI MongoDB Compass. Tomēr šajā rakstā mēs pievērsīsimies Shell komandām.
Tā kā MQL ir balstīts uz JavaScript, jau ir pieejamas dažādas iepriekš definētas funkcijas, kuras var izmantot sarežģītiem vaicājumiem un komandām. Lielākā daļa rakstīšanas un lasīšanas komandu ir ar tādu pašu struktūru kā komandas, kas parādītas zemāk esošajā piemērā. Papildus šīm komandām ir arī daudzas citas komandas, kuras var izmantot MongoDB datu bāzes pārvaldīšanai. Tās ir plaši dokumentētas un sīki izskaidrotas MongoDB dokumentācijā.
> db.students.find(Name : "Charlie")
> db.students.updateOne(Name : "Charlie", Semester : 2)
> db.students.deleteOne(Name : "Peter")
> db.students.insertOne({
Name : "Elsie"
Age : 18
Semester : 1
})Iepriekš minētajā piemērā ir virkne MongoDB datu bāzes komandu, kuras visas ir strukturētas vienādi. Pirmkārt, ir “db”, kas attiecas uz datu bāzi kopumā, tad “students”, kas attiecas uz konkrētu kolekciju, kurā jāveic atbilstošās darbības. Pēc kolekcijas seko metode (atrast, atjaunināt, dzēst, ievietot), kas jāizmanto.
Lai meklētu konkrētu dokumentu, varat izmantot metodi find(). Ja parametru lauku atstājat tukšu, tiks atgriezti visi dokumenti izvēlētajā kolekcijā. Iepriekš minētajā piemērā MongoDB meklē visus dokumentus, kuru laukā „Name” ir vērtība „Charlie”.
Metodi updateOne() var izmantot, lai pārrakstītu vērtības dokumentā. Metodei update() ir divi argumenti. Pirmais arguments ir atlases kritēriji, bet otrais — pārrakstāmā atslēgas-vērtības pāra. Šajā piemērā ir atlasīti visi studenti ar vārdu „Charlie”. Tad studentiem, kuru vārds ir Charlie, laukā „Semester” tiek ievadīta vērtība „2”.
Metode deleteOne() pieņem tikai vienu argumentu. Tas ir atlases kritērijs, kas nosaka, kuri dokumenti ir jāizdzēš no datu bāzes. Šajā gadījumā visi studenti ar vārdu Peter tiek izdzēsti no datu bāzes.
Metode insertOne() arī pieņem argumentu. Šajā metodē arguments ir JSON saturs dokumentā, kuru vēlaties pievienot. Ievietojot dokumentus, ir ļoti svarīgi nodrošināt, ka katram dokumentam MongoDB kolekcijā ir unikāls 12 bitu heksadecimālais numurs. Šis numurs kalpo kā dokumenta objekta ID. Ja tas nav norādīts, ievietojot dokumentu, MongoDB automātiski ģenerēs ID dokumentam.
Kādas ir MongoDB priekšrocības?
MongoDB struktūra piedāvā vairākas priekšrocības lietotājiem, jo īpaši elastīguma un mērogojamības ziņā. Viena no galvenajām dokumentu bāzes datu uzglabāšanas priekšrocībām ir tā, ka, atšķirībā no relatīvajām datu bāzēm, ne visiem ierakstiem ir jābūt ar vienādiem atribūtiem. Tas ļauj uzglabāt nestrukturētus un daļēji strukturētus datus. Turklāt atsevišķus dokumentus var pārstrukturēt (piemēram, pievienojot vai dzēšot atribūtu/lauku), bez nepieciešamības pārstrukturēt citus dokumentus tajā pašā kolekcijā. Tā kā dokumenti MongoDB tiek uzglabāti BSON formātā, MongoDB datu bāzes nodrošina arī augstu saderību ar daudzām plaši izmantotām JavaScript platformām.
Papildus nestrukturētu datu uzglabāšanai MongoDB piedāvā arī augstu horizontālo mērogojamību, nepretrunā ACID (atomaritāte, konsekvence, izolācija, izturība) principiem. Izplatītās datu bāzēs konsekvences nodrošināšana bieži vien var būt izaicinājums, jo dati tiek uzglabāti dažādos serveros. Ja izmaiņas tiek veiktas vairākos dokumentos vienlaikus, šīs izmaiņas var netikt nekavējoties izplatītas visiem serveriem, kurus izmanto datu bāzes sistēma. Ja ir liels pieprasījumu apjoms, tas dažkārt var izraisīt datu nekonsekvenci. Tomēr, kopš 2019. gadā tika izlaista MongoDB 4.2 versija, tagad ir iespējams veikt izmaiņas vairākos dokumentos dažādos serveros, nezaudējot konsekvenci vai pieejamību.
Vajag dokumentu orientētu datu bāzi, kas pielāgojas jūsu tīmekļa lietojumprogrammas prasībām? MongoDB ir ideāls risinājums!
Kādiem mērķiem var izmantot MongoDB?
MongoDB ir lieliska izvēle tīmekļa projektiem, kas balstās uz ļoti lieliem nestrukturētiem datu kopumiem. Darbs ar dokumentu sistēmu, kurai nav fiksētas shēmas, ir ideāls, lai apstrādātu plašu datu tipu klāstu, kam nepieciešama ātra uzglabāšana un apstrāde.
Datubāzes sistēma nodrošina arī horizontālu, gandrīz neierobežotu mērogojamību, jo datubāzes var viegli izplatīt vairākos serveros, neietekmējot to funkcionalitāti. Turklāt, izmantojot MongoDB, varat viegli izveidot datubāzes kopijas un padarīt tās pieejamas dažādiem serveriem, nodrošinot savu datu ilgtermiņa drošību un pieejamību. Dokumentorientētā datubāzes programma demonstrē iespaidīgas iespējas arī datu apkopošanā, neatkarīgi no tā, vai tie ir no viena avota vai vairākiem avotiem.
MongoDB ir ideāli piemērots tīmekļa projektiem, kam piemīt šādas īpašības:
- Mērogojamība: kad jūsu tīmekļa projekts aug, pieprasījumu skaits parasti palielinās, kas rada lielākas prasības datu bāzei.
- Pieejamība: jums ir nepieciešama nepārtraukta piekļuve jūsu tīmekļa lietojumprogrammai, pat servera kļūmes gadījumā.
- Elastība: jūsu projektam jābūt dinamiski pielāgojamam jebkurā brīdī.
Neesat pārliecināts, kurš datu bāzes modelis ir piemērots jūsu tīmekļa projektam? Tas nav problēma, jo jums nav jāizvēlas tikai viens. Ir iespējams apvienot dažādus datu bāzes modeļus, un vairāku modeļu izvēle var būt vispiemērotākā izvēle jūsu projekta prasībām.