Čo je MongoDB?
Relacionálne databázy boli po desaťročia najvyhľadávanejším riešením pre správu dát. Rastúci objem a rozmanitosť dát, ktoré sú charakteristické pre moderné webové aplikácie, však spôsobili, že dokumentovo orientované databázy, ako je Mongo DB, sa stali vážnymi konkurentmi. Vysvetlíme, čo je dokumentovo orientovaný prístup a aké výhody ponúka tento model správy dát.
Čím sa MongoDB líši od iných databáz?
V tradičných relačných databázach sú údaje uložené v štruktúrovanej tabuľke. MongoDB, ktorého názov je odvodený od slova humongous (obrovský), je dokumentovo orientovaný databázový systém. V MongoDB sú údaje zoskupené nestruktúrovaným spôsobom do takzvaných zbierok.
Ďalším kľúčovým rozdielom je, že MongoDB nepoužíva SQL ako dotazovací jazyk, a preto je zaradený do kategórie databázových systémov NoSQL. Namiesto toho MongoDB používa ako dotazovací jazyk MongoDB Query Language (MQL) založený na JavaScript. V dôsledku toho sú záznamy MongoDB uložené vo formáte BSON, ktorý je modelovaný podľa JSON. To znamená, že sú podporované všetky datové typy JavaScript, čo je dôvodom, prečo sa MongoDB stal ideálnou voľbou pre mnoho platforiem založených na JavaScript.
Ďalšou charakteristikou databáz MongoDB je ich schopnosť horizontálneho škálovania. To znamená, že údaje v databáze môžu byť rozložené na viacerých serveroch namiesto toho, aby boli uložené na jednom centrálnom mieste. Takýto prístup umožňuje zvýšiť dostupnosť údajov a zlepšuje celkový výkon databázy. Horizontálne škálovanie je často nákladovo efektívnejšie ako modernizácia jedného servera výkonnejším hardvérom (vertikálne škálovanie).
Ako funguje MongoDB?
Na rozdiel od MySQL, MongoDB používa úplne odlišný prístup k ukladaniu údajov a funguje spôsobom orientovaným na dokumenty. Namiesto ukladania údajov v tabuľkovej forme, kde každý riadok má rovnaký počet polí, ktoré je potrebné vyplniť hodnotami, databázy MongoDB ukladajú údaje v dokumentoch BSON, ktoré nemajú žiadnu vopred definovanú štruktúru. Počet polí sa môže v jednotlivých dokumentoch líšiť a polia nemusia byť navzájom konzistentné. Dokumenty plnia podobnú úlohu ako riadky v tabuľke SQL, zatiaľ čo polia, ktoré boli definované v týchto dokumentoch, slúžia ako stĺpce.
Pri práci s databázami MongoDB môžete využiť mnoho nástrojov. Okrem osvedčeného MongoDB Shell môžete na správu databáz MongoDB použiť aj grafické rozhranie MongoDB Compass. V tomto článku sa však zameriame na príkazy Shell.
Keďže MQL je založený na JavaScript, existuje už celý rad preddefinovaných funkcií, ktoré môžete použiť pre komplexné dotazy a príkazy. Vo väčšine prípadov majú všetky príkazy na zápis a čítanie rovnakú štruktúru ako príkazy uvedené v nižšie uvedenom príklade. Okrem týchto príkazov existuje celý rad ďalších príkazov, ktoré môžete použiť na správu vašej databázy MongoDB. Tieto sú podrobne zdokumentované a vysvetlené v dokumentácii k MongoDB.
> 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
})V uvedenom príklade je séria príkazov databázy MongoDB, ktoré sú všetky štruktúrované rovnakým spôsobom. Najskôr je tu „db“, čo odkazuje na databázu ako celok, potom „students“, čo odkazuje na konkrétnu zbierku, kde by sa mali vykonávať príslušné operácie. Po zbierke nasleduje metóda (nájsť, aktualizovať, odstrániť, vložiť), ktorá by sa mala použiť.
Na vyhľadanie konkrétneho dokumentu môžete použiť metódu find(). Ak pole parametra ponecháte prázdne, vrátia sa všetky dokumenty vo vybranej kolekcii. V uvedenom príklade MongoDB vyhľadáva všetky dokumenty, v ktorých pole „Name“ má hodnotu „Charlie“.
Metóda updateOne() sa môže použiť na prepísanie hodnôt v dokumente. Metóda update() má dva argumenty. Prvý argument je výberové kritérium a druhý je pár kľúč-hodnota, ktorý sa má prepísať. V príklade sú vybraní všetci študenti s menom „Charlie“. Hodnota „2“ sa potom zadá do poľa „Semester“ pre študentov, ktorých meno je Charlie.
Metóda deleteOne() prijíma len jeden argument. Ide o výberové kritérium, ktoré určuje, ktoré dokumenty majú byť odstránené z databázy. V tomto prípade sú z databázy odstránení všetci študenti s menom Peter.
Metóda insertOne() tiež prijíma argument. V prípade tejto metódy je argumentom obsah JSON dokumentu, ktorý chcete pridať. Pri vkladaní dokumentov je dôležité zabezpečiť, aby každý dokument v kolekcii MongoDB mal jedinečné 12-bajtové hexadecimálne číslo. Toto číslo slúži ako ID objektu dokumentu. Ak nie je pri vkladaní dokumentu špecifikované, MongoDB automaticky vygeneruje ID pre dokument.
Aké sú výhody MongoDB?
Štruktúra MongoDB ponúka používateľom niekoľko výhod, najmä pokiaľ ide o flexibilitu a škálovateľnosť. Jednou z kľúčových výhod ukladania údajov na základe dokumentov je to, že na rozdiel od relačných databáz nemusia mať všetky záznamy rovnaké atribúty. To umožňuje ukladanie nestruktúrovaných a čiastočne štruktúrovaných údajov. Okrem toho je možné jednotlivé dokumenty reštrukturalizovať (napríklad pridaním alebo odstránením atribútu/poľa) bez nutnosti reštrukturalizovať ostatné dokumenty v tej istej kolekcii. Keďže dokumenty v MongoDB sú uložené vo formáte BSON, databázy MongoDB poskytujú aj vysokú mieru kompatibility s mnohými bežne používanými platformami JavaScript.
Okrem ukladania nestruktúrovaných údajov ponúka MongoDB aj vysokú mieru horizontálnej škálovateľnosti bez porušenia princípov ACID (atomicity, consistency, isolation, durability – atomickosť, konzistentnosť, izolácia, trvácnosť). V distribuovaných databázach môže byť zabezpečenie konzistentnosti často výzvou, pretože údaje sú uložené na rôznych serveroch. Keď sa vykonajú zmeny vo viacerých dokumentoch súčasne, tieto zmeny sa nemusia okamžite distribuovať na všetky servery, ktoré databázový systém používa. Ak je objem dotazov veľký, môže to niekedy viesť k nekonzistentným dátam. S vydaním MongoDB 4.2 v roku 2019 je však teraz možné vykonávať zmeny vo viacerých dokumentoch na rôznych serveroch bez obetovania konzistencie alebo dostupnosti.
Potrebujete dokumentovo orientovanú databázu, ktorá sa prispôsobí požiadavkám vašej webovej aplikácie? MongoDB je ideálnym riešením!
Na čo sa dá MongoDB použiť?
MongoDB je vynikajúcou voľbou pre webové projekty, ktoré sa spoliehajú na extrémne veľké nestruktúrované dátové súbory. Práca s dokumentovým systémom, ktorý nemá pevnú schému, je ideálna na spracovanie širokej škály dátových typov, ktoré vyžadujú rýchle ukladanie a spracovanie.
Databázový systém tiež umožňuje horizontálnu, takmer neobmedzenú škálovateľnosť, pretože databázy môžu byť bez problémov distribuované na viacerých serveroch bez ohrozenia funkčnosti. Navyše s MongoDB môžete ľahko vytvárať kópie svojej databázy a sprístupňovať ju rôznym serverom, čím zabezpečíte dlhodobú bezpečnosť a dostupnosť svojich údajov. Dokumentovo orientovaný databázový program tiež vykazuje pôsobivé schopnosti, pokiaľ ide o agregáciu údajov, či už z jedného zdroja alebo z viacerých zdrojov.
MongoDB je ideálny pre webové projekty, ktoré vykazujú nasledujúce charakteristiky:
- Škálovateľnosť: s rastom vášho webového projektu sa zvyčajne zvyšuje počet požiadaviek, čo vedie k vyšším nárokom na databázu.
- Dostupnosť: potrebujete nepretržitú dostupnosť vašej webovej aplikácie, aj v prípade výpadku servera.
- Flexibilita: váš projekt by mal umožňovať dynamické prispôsobovanie sa za každých okolností.
Nie ste si istí, ktorý model databázy je pre váš webový projekt ten správny? To nevadí, pretože nemusíte vyberať len jeden. Je možné kombinovať rôzne typy modelov databáz a výber viacerých modelov môže byť pre požiadavky vášho projektu najvhodnejšou voľbou.