Desmitiem gadu garumā attiecību datu bāzes bija vi­s­iz­pla­tī­tā­kais ri­si­nā­jums datu pār­val­dī­bai. Tomēr mūsdienu tīmekļa lie­to­jum­prog­ram­mām rak­stu­rī­gais datu apjoma pieaugums un daudz­vei­dī­ba ir padarījis dokumentu orien­tē­tas datu bāzes, piemēram, Mongo DB, par nopietnu kon­ku­ren­tu. Mēs iz­skaid­ro­sim, kas ir dokumentu orientēta pieeja un kādas priekš­ro­cī­bas piedāvā šis datu pār­val­dī­bas modelis.

Kā MongoDB atšķiras no citām datu bāzēm?

Tra­di­cio­nā­lās re­la­tī­va­jās datu bāzēs dati tiek glabāti struk­tu­rē­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 ne­struk­tu­rē­tā veidā, ko datu bāzes programma dēvē par ko­lek­ci­jā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 Ja­vaScript 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 at­bal­stī­ti visi Ja­vaScript datu tipi, tāpēc MongoDB ir kļuvusi par ideālu izvēli daudzām Ja­vaScript balstītām plat­for­mām.

Vēl viena MongoDB datu bāzu rak­stu­rī­ga iezīme ir to spēja ho­ri­zon­tā­li mē­ro­go­ties. Tas nozīmē, ka datu bāzes dati var tikt iz­klie­dē­ti pa vairākiem serveriem, nevis glabāti vienā cen­trā­la­jā vietā. Šāda pieeja nodrošina lielāku datu pie­eja­mī­bu un uzlabo datu bāzes kopējo veikt­spē­ju. Ho­ri­zon­tā­lā mē­ro­go­ša­na bieži vien ir ren­tab­lā­ka nekā viena servera mo­der­ni­zē­ša­na ar jaudīgāku aparatūru (vertikālā mē­ro­go­ša­na).

Kā darbojas MongoDB?

Atšķirībā no MySQL, MongoDB izmanto pilnīgi atšķirīgu pieeju datu uz­gla­bā­ša­nai un darbojas dokumentu orientētā veidā. Tā vietā, lai datus uzglabātu tabulu veidā, kur katrā rindā ir vienāds skaits lauku, kas jā­aiz­pil­da ar vērtībām, MongoDB datu bāzes datus uzglabā BSON do­ku­men­tos, kuriem nav iepriekš definētas struk­tū­ras. Lauku skaits var at­šķir­ties starp do­ku­men­tiem, un laukiem nav jābūt sav­star­pē­ji sa­ska­ņo­tiem. Dokumenti pilda līdzīgu lomu kā rindas SQL tabulā, bet šajos do­ku­men­tos definētie lauki kalpo kā kolonnas.

Strādājot ar MongoDB datu bāzēm, var izmantot daudzus rīkus. Papildus uz­ti­ca­ma­jam MongoDB Shell, MongoDB datu bāzes var pārvaldīt arī ar GUI MongoDB Compass. Tomēr šajā rakstā mēs pie­vēr­sī­si­mies Shell komandām.

Tā kā MQL ir balstīts uz Ja­vaScript, jau ir pieejamas dažādas iepriekš definētas funkcijas, kuras var izmantot sa­rež­ģī­tiem vai­cā­ju­miem un komandām. Lielākā daļa rak­stī­ša­nas 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ār­val­dī­ša­nai. Tās ir plaši do­ku­men­tē­tas un sīki iz­skaid­ro­tas MongoDB do­ku­men­tā­ci­jā.

> 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 struk­tu­rē­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 at­bil­sto­šās darbības. Pēc ko­lek­ci­jas seko metode (atrast, at­jau­ni­nā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 iz­vē­lē­ta­jā kolekcijā. Iepriekš minētajā piemērā MongoDB meklē visus do­ku­men­tus, kuru laukā „Name” ir vērtība „Charlie”.

Metodi updateOne() var izmantot, lai pār­rak­stī­tu vērtības dokumentā. Metodei update() ir divi argumenti. Pirmais arguments ir atlases kritēriji, bet otrais — pār­rak­stā­mā atslēgas-vērtības pāra. Šajā piemērā ir atlasīti visi studenti ar vārdu „Charlie”. Tad stu­den­tiem, 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. Ie­vie­to­jot do­ku­men­tus, ir ļoti svarīgi no­dro­ši­nāt, ka katram do­ku­men­tam MongoDB kolekcijā ir unikāls 12 bitu hek­sa­de­ci­mā­lais numurs. Šis numurs kalpo kā dokumenta objekta ID. Ja tas nav norādīts, ie­vie­to­jot dokumentu, MongoDB au­to­mā­tis­ki ģenerēs ID do­ku­men­tam.

Kādas ir MongoDB priekš­ro­cī­bas?

MongoDB struktūra piedāvā vairākas priekš­ro­cī­bas lie­to­tā­jiem, jo īpaši elas­tī­gu­ma un mē­ro­go­ja­mī­bas ziņā. Viena no gal­ve­na­jām dokumentu bāzes datu uz­gla­bā­ša­nas priekš­ro­cī­bām ir tā, ka, atšķirībā no re­la­tī­va­jām datu bāzēm, ne visiem ie­rak­stiem ir jābūt ar vienādiem at­ri­bū­tiem. Tas ļauj uzglabāt ne­struk­tu­rē­tus un daļēji struk­tu­rē­tus datus. Turklāt at­se­viš­ķus do­ku­men­tus var pār­struk­tu­rēt (piemēram, pie­vie­no­jot vai dzēšot atribūtu/lauku), bez ne­pie­cie­ša­mī­bas pār­struk­tu­rēt citus do­ku­men­tus 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 iz­man­to­tām Ja­vaScript plat­for­mām.

Papildus ne­struk­tu­rē­tu datu uz­gla­bā­ša­nai MongoDB piedāvā arī augstu ho­ri­zon­tā­lo mē­ro­go­ja­mī­bu, ne­pret­ru­nā ACID (at­oma­ri­tā­te, kon­sek­ven­ce, izolācija, izturība) prin­ci­piem. Iz­pla­tī­tās datu bāzēs kon­sek­ven­ces no­dro­ši­nā­ša­na bieži vien var būt iz­ai­ci­nā­jums, jo dati tiek uzglabāti dažādos serveros. Ja izmaiņas tiek veiktas vairākos do­ku­men­tos vien­lai­kus, šīs izmaiņas var netikt ne­ka­vē­jo­ties iz­pla­tī­tas visiem serveriem, kurus izmanto datu bāzes sistēma. Ja ir liels pie­pra­sī­ju­mu apjoms, tas dažkārt var izraisīt datu ne­kon­sek­ven­ci. Tomēr, kopš 2019. gadā tika izlaista MongoDB 4.2 versija, tagad ir iespējams veikt izmaiņas vairākos do­ku­men­tos dažādos serveros, ne­zau­dē­jot kon­sek­ven­ci vai pie­eja­mī­bu.

Tip

Vajag dokumentu orientētu datu bāzi, kas pie­lā­go­jas jūsu tīmekļa lie­to­jum­prog­ram­mas prasībām? MongoDB ir ideāls ri­si­nā­jums!

Kādiem mērķiem var izmantot MongoDB?

MongoDB ir lieliska izvēle tīmekļa pro­jek­tiem, kas balstās uz ļoti lieliem ne­struk­tu­rē­tiem datu kopumiem. Darbs ar dokumentu sistēmu, kurai nav fiksētas shēmas, ir ideāls, lai ap­strā­dā­tu plašu datu tipu klāstu, kam ne­pie­cie­ša­ma ātra uz­gla­bā­ša­na un apstrāde.

Datubāzes sistēma nodrošina arī ho­ri­zon­tā­lu, gandrīz ne­ie­ro­be­žo­tu mē­ro­go­ja­mī­bu, jo datubāzes var viegli izplatīt vairākos serveros, ne­ie­tek­mē­jot to fun­kcio­na­li­tā­ti. Turklāt, iz­man­to­jot MongoDB, varat viegli izveidot datubāzes kopijas un padarīt tās pieejamas dažādiem serveriem, no­dro­ši­not savu datu ilgter­mi­ņa drošību un pie­eja­mī­bu. Do­ku­men­to­rien­tē­tā datubāzes programma demonstrē ie­spai­dī­gas iespējas arī datu ap­ko­po­ša­nā, ne­at­ka­rī­gi no tā, vai tie ir no viena avota vai vairākiem avotiem.

MongoDB ir ideāli piemērots tīmekļa pro­jek­tiem, kam piemīt šādas īpašības:

  • Mē­ro­go­ja­mī­ba: kad jūsu tīmekļa projekts aug, pie­pra­sī­ju­mu skaits parasti pa­lie­li­nās, kas rada lielākas prasības datu bāzei.
  • Pie­eja­mī­ba: jums ir ne­pie­cie­ša­ma ne­pār­trauk­ta piekļuve jūsu tīmekļa lie­to­jum­prog­ram­mai, pat servera kļūmes gadījumā.
  • Elastība: jūsu projektam jābūt dinamiski pie­lā­go­ja­mam jebkurā brīdī.

Neesat pār­lie­ci­nā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 vis­pie­mē­ro­tā­kā izvēle jūsu projekta prasībām.

Go to Main Menu