Kas yra MongoDB?
„MongoDB“ yra į dokumentus orientuota „NoSQL“ duomenų bazė, naudojama didelės apimties duomenims saugoti. Užuot naudojęs lenteles ir eilutes, kaip tradicinėse reliacinėse duomenų bazėse, „MongoDB“ naudoja kolekcijas ir dokumentus. Dokumentus sudaro raktų ir verčių poros, kurios yra pagrindinis duomenų vienetas MongoDB. Kolekcijose yra dokumentų rinkinių ir funkcijų, kurios yra lygiavertės reliacinių duomenų bazių lentelėms. „MongoDB“ yra duomenų bazė, kuri pasirodė maždaug 2000-ųjų viduryje.
Šioje pamokoje sužinosite
- „MongoDB“ funkcijos
- „MongoDB“ pavyzdys
- Pagrindiniai „MongoDB Architecture“ komponentai
- Kodėl verta naudoti MongoDB
- Duomenų modeliavimas „MongoDB“
- Skirtumas tarp MongoDB ir RDBMS
„MongoDB“ funkcijos
- Kiekvienoje duomenų bazėje yra kolekcijos, kuriose savo ruožtu yra dokumentai. Kiekvienas dokumentas gali būti skirtingas su skirtingu laukų skaičiumi. Kiekvieno dokumento dydis ir turinys gali skirtis.
- Dokumento struktūra labiau atitinka tai, kaip kūrėjai konstruoja savo klases ir objektus atitinkamomis programavimo kalbomis. Kūrėjai dažnai sako, kad jų klasės nėra eilutės ir stulpeliai, bet turi aiškią struktūrą su raktų ir verčių poromis.
- Eilutėse (arba dokumentuose, vadinamuose „MongoDB“) nereikia iš anksto apibrėžti schemos. Vietoj to laukus galima sukurti skrendant.
- „MongoDB“ turimas duomenų modelis leidžia lengviau pavaizduoti hierarchinius santykius, saugoti masyvus ir kitas sudėtingesnes struktūras.
- Mastelio mastelis - „MongoDB“ aplinka yra labai keičiama. Įmonės visame pasaulyje apibrėžė grupes, kai kurios iš jų valdo daugiau kaip 100 mazgų su maždaug milijonais dokumentų duomenų bazėje
„MongoDB“ pavyzdys
Žemiau pateiktame pavyzdyje parodyta, kaip dokumentą galima modeliuoti „MongoDB“.
- Lauką _id prideda MongoDB, kad unikaliai identifikuotų kolekcijos dokumentą.
- Galite atkreipti dėmesį į tai, kad užsakymo duomenys (užsakymo ID, produktas ir kiekis), kurie RDBMS sistemoje paprastai bus saugomi atskiroje lentelėje, o „MongoDB“ jie iš tikrųjų saugomi kaip įterptas dokumentas pačiame rinkinyje. Tai yra vienas iš pagrindinių duomenų modeliavimo MongoDB skirtumų.
Pagrindiniai „MongoDB Architecture“ komponentai
Žemiau yra keletas bendrų terminų, naudojamų „MongoDB“
- _id - tai laukas, kurio reikia kiekviename „MongoDB“ dokumente. Laukas „_id“ nurodo unikalią reikšmę „MongoDB“ dokumente. Laukas _id yra kaip pagrindinis dokumento raktas. Jei sukursite naują dokumentą be lauko „_id“, „MongoDB“ automatiškai sukurs lauką. Pavyzdžiui, jei pamatysime pirmiau pateiktos klientų lentelės pavyzdį, „Mongo DB“ prie kiekvieno kolekcijos dokumento pridės 24 skaitmenų unikalų identifikatorių.
_Id | Kliento ID | Kliento vardas | OrderID |
---|---|---|---|
563479cc8a8a4246bd27d784 | 11 | Guru99 | 111 |
563479cc7a8a4246bd47d784 | 22 | Trevoras Smithas | 222 |
563479cc9a8a4246bd57d784 | 33 | Nicole | 333 |
- Kolekcija - tai „MongoDB“ dokumentų grupė. Kolekcija yra lentelės atitikmuo, sukurtas bet kuriame kitame RDMS, pvz., „Oracle“ ar „MS SQL“. Kolekcija egzistuoja vienoje duomenų bazėje. Kaip matyti iš įvado, kolekcijos neįtvirtina jokios struktūros.
- Žymeklis - tai užklausos rezultatų rinkinio rodyklė. Norėdami gauti rezultatus, klientai gali kartoti žymeklį.
- Duomenų bazė - tai kolekcijų, pvz., RDMS, talpykla, kurioje yra lentelių talpykla. Kiekviena duomenų bazė failų sistemoje gauna savo rinkinį. „MongoDB“ serveris gali saugoti kelias duomenų bazes.
- Dokumentas - įrašas MongoDB kolekcijoje iš esmės vadinamas dokumentu. Savo ruožtu dokumentą sudarys lauko pavadinimas ir reikšmės.
- Laukas - vardo ir vertės pora dokumente. Dokumente yra nulis ar daugiau laukų. Laukai yra analogiški reliacinių duomenų bazių stulpeliams.
Šioje diagramoje pateiktas laukų su raktų reikšmių poromis pavyzdys. Taigi toliau pateiktame pavyzdyje „CustomerID“ ir „11“ yra viena iš dokumente apibrėžtų pagrindinių verčių porų.
- JSON - tai vadinama „JavaScript Object Notation“. Tai yra žmonėms skaitomas, paprasto teksto formatas, skirtas struktūrizuotiems duomenims išreikšti. JSON šiuo metu palaikomas daugeliu programavimo kalbų.
Tiesiog greita pastaba apie pagrindinį skirtumą tarp lauko _id ir įprasto rinkimo lauko. Laukas _id naudojamas unikaliam kolekcijos dokumentų identifikavimui ir, kai sukuriama kolekcija, „MongoDB“ jį automatiškai prideda.
Kodėl naudoti MongoDB?
Toliau pateikiamos kelios priežastys, kodėl reikėtų pradėti naudoti „MongoDB“
- Orientuotas į dokumentą - kadangi „MongoDB“ yra „NoSQL“ tipo duomenų bazė, užuot turėjęs duomenis reliacinio tipo formatu, jis duomenis saugo dokumentuose. Tai daro „MongoDB“ labai lankstų ir pritaikomą realiai verslo pasaulio situacijai ir reikalavimams.
- Ad hoc užklausos - „MongoDB“ palaiko paiešką pagal lauką, diapazono užklausas ir reguliarios išraiškos paieškas. Galima pateikti užklausas grąžinti konkrečius dokumentų laukus.
- Indeksavimas - norint pagerinti paieškų MongoDB rezultatus, galima sukurti indeksus. Bet kurį „MongoDB“ dokumento lauką galima indeksuoti.
- Replikacija - „MongoDB“ gali užtikrinti didelį prieinamumą su kopijų rinkiniais. Replikos rinkinį sudaro du ar daugiau mongo DB egzempliorių. Kiekvienas replikos rinkinio narys gali bet kada atlikti pirminės ar antrinės kopijos vaidmenį. Pagrindinė kopija yra pagrindinis serveris, kuris sąveikauja su klientu ir atlieka visas skaitymo / rašymo operacijas. Antrinėse kopijose saugoma pirminio duomenų kopija naudojant įmontuotą replikaciją. Kai pirminė replika nepavyksta, rinkinio kopija automatiškai persijungia į antrinę ir tada ji tampa pagrindiniu serveriu.
- Apkrovos balansavimas - „MongoDB“ naudoja skaldymo koncepciją, kad mastelis būtų horizontaliai padalijant duomenis keliems „MongoDB“ egzemplioriams. „MongoDB“ gali paleisti kelis serverius, subalansuodamas apkrovą ir (arba) dubliuodamas duomenis, kad sistema veiktų ir veiktų aparatinės įrangos gedimo atveju.
Duomenų modeliavimas „MongoDB“
Kaip matėme iš įvado skyriaus, „MongoDB“ duomenys turi lanksčią schemą. Skirtingai nei SQL duomenų bazėse, kur prieš įterpiant duomenis reikia deklaruoti lentelės schemą, „MongoDB“ rinkiniai nevykdo dokumentų struktūros. Toks lankstumas daro „MongoDB“ tokią galingą.
Modeliuodami duomenis „Mongo“ kalba, nepamirškite šių dalykų
- Kokie yra programos poreikiai - Pažvelkite į programos verslo poreikius ir sužinokite, kokie duomenys ir kokių duomenų reikia programai. Remdamiesi tuo, įsitikinkite, kad dokumento struktūra yra atitinkamai nuspręsta.
- Kas yra duomenų paieškos modeliai - jei numatote didelį užklausų naudojimą, apsvarstykite galimybę naudoti indeksus savo duomenų modelyje, kad pagerintumėte užklausų efektyvumą.
- Ar dažnai duomenų bazėje vyksta įterpimai, atnaujinimai ir pašalinimai? Jei norite pagerinti visos „MongoDB“ aplinkos efektyvumą, persvarstykite indeksų naudojimą arba įtraukite dalijimą, jei to reikia į duomenų modeliavimo projektą.
Skirtumas tarp MongoDB ir RDBMS
Žemiau yra keletas pagrindinių terminų skirtumų tarp MongoDB ir RDBMS
RDBMS | MongoDB | Skirtumas |
---|---|---|
Lentelė | Kolekcija | RDBMS lentelėje yra stulpeliai ir eilutės, kurie naudojami duomenims saugoti, o „MongoDB“ ta pati struktūra yra žinoma kaip kolekcija. Kolekcijoje yra dokumentų, kuriuose savo ruožtu yra laukai, kurie savo ruožtu yra raktų ir verčių poros. |
Eilutė | Dokumentas | RDBMS eilutėje lentelėje nurodomas vienas netiesiogiai struktūrizuotas duomenų elementas. „MongoDB“ duomenys saugomi dokumentuose. |
Stulpelis | Laukas | RDBMS stulpelis žymi duomenų reikšmių rinkinį. Tai MongoDB žinomi kaip laukai. |
Prisijungia | Įterpti dokumentai | RDBMS duomenys kartais yra paskirstomi įvairiose lentelėse ir norint parodyti išsamų visų duomenų vaizdą, kartais sudaroma jungtis tarp lentelių, norint gauti duomenis. „MongoDB“ duomenys paprastai saugomi vienoje kolekcijoje, tačiau atskiriami naudojant įdėtus dokumentus. Taigi nėra „MongoDB“ prisijungimo koncepcijos. |
Be terminų skirtumų, žemiau pateikiami keli kiti skirtumai
- Reliacinės duomenų bazės yra žinomos dėl duomenų vientisumo užtikrinimo. Tai nėra aiškus reikalavimas MongoDB.
- RDBMS reikalauja, kad pirmiausia duomenys būtų normalizuoti, kad būtų išvengta našlaičių įrašų ir dublikatų. Tuomet norint normalizuoti duomenis, reikia daugiau lentelių, o tai sukels daugiau lentelių sujungimų, todėl reikės daugiau raktų ir rodyklių.
Pradėjus augti duomenų bazėms, našumas gali tapti problema. Vėlgi, tai nėra aiškus reikalavimas MongoDB. „MongoDB“ yra lankstus ir nereikia, kad duomenys būtų pirmiausia normalizuoti.