Čo je MongoDB?
MongoDB je dokumentovo orientovaná databáza NoSQL používaná na ukladanie dát s veľkým objemom. Namiesto použitia tabuliek a riadkov ako v tradičných relačných databázach MongoDB využíva zbierky a dokumenty. Dokumenty pozostávajú z párov kľúč - hodnota, ktoré sú základnou jednotkou údajov v MongoDB. Kolekcie obsahujú sady dokumentov a funkciu, ktorá je ekvivalentom tabuliek relačnej databázy. MongoDB je databáza, ktorá vyšla na svetlo sveta v polovici 2000. rokov.
V tomto návode sa naučíte
- Funkcie MongoDB
- Príklad MongoDB
- Kľúčové komponenty architektúry MongoDB
- Prečo používať MongoDB
- Dátové modelovanie v MongoDB
- Rozdiel medzi MongoDB a RDBMS
Funkcie MongoDB
- Každá databáza obsahuje zbierky, ktoré zase obsahujú dokumenty. Každý dokument môže byť odlišný s rôznym počtom polí. Veľkosť a obsah každého dokumentu sa môžu navzájom líšiť.
- Štruktúra dokumentu viac zodpovedá tomu, ako vývojári konštruujú svoje triedy a objekty v príslušných programovacích jazykoch. Vývojári často povedia, že ich triedy nie sú riadky a stĺpce, ale majú jasnú štruktúru s pármi kľúč - hodnota.
- Riadky (alebo dokumenty nazývané v MongoDB) nemusia mať vopred definovanú schému. Namiesto toho môžu byť polia vytvárané za behu.
- Dátový model dostupný v rámci MongoDB vám umožňuje jednoduchšie reprezentovať hierarchické vzťahy, ukladať polia a ďalšie zložitejšie štruktúry.
- Škálovateľnosť - prostredia MongoDB sú veľmi škálovateľné. Spoločnosti z celého sveta definovali klastre, pričom niektoré z nich prevádzkujú viac ako 100 uzlov a v databáze majú asi milióny dokumentov
Príklad MongoDB
Nasledujúci príklad ukazuje, ako je možné dokument modelovať v MongoDB.
- Pole _id pridáva MongoDB na jednoznačnú identifikáciu dokumentu v zbierke.
- Môžete si všimnúť, že údaje o objednávke (OrderID, Product a Quantity), ktoré sú v RDBMS zvyčajne uložené v samostatnej tabuľke, zatiaľ čo v MongoDB sú skutočne uložené ako vložený dokument v samotnej zbierke. Toto je jeden z hlavných rozdielov v modelovaní údajov v MongoDB.
Kľúčové komponenty architektúry MongoDB
Ďalej uvádzame niekoľko bežných výrazov používaných v MongoDB
- _id - Toto pole je povinné v každom dokumente MongoDB. Pole _id predstavuje jedinečnú hodnotu v dokumente MongoDB. Pole _id je ako primárny kľúč dokumentu. Ak vytvoríte nový dokument bez poľa _id, MongoDB pole automaticky vytvorí. Napríklad, ak vidíme príklad vyššie uvedenej tabuľky zákazníkov, Mongo DB pridá ku každému dokumentu v zbierke 24-ciferný jedinečný identifikátor.
_Id | CustomerID | Meno zákazníka | Číslo objednávky |
---|---|---|---|
563479cc8a8a4246bd27d784 | 11 | Guru99 | 111 |
563479cc7a8a4246bd47d784 | 22 | Trevor Smith | 222 |
563479cc9a8a4246bd57d784 | 33 | Nicole | 333 |
- Zbierka - toto je zoskupenie dokumentov MongoDB. Kolekcia je ekvivalentom tabuľky, ktorá je vytvorená v akomkoľvek inom RDMS, ako je Oracle alebo MS SQL. Kolekcia existuje v jednej databáze. Ako je zrejmé z úvodu, zbierky nevynucujú akúkoľvek štruktúru.
- Kurzor - Toto je ukazovateľ na množinu výsledkov dotazu. Klienti môžu na získanie výsledkov iterovať pomocou kurzora.
- Databáza - toto je kontajner pre zbierky ako v RDMS, kde je to kontajner pre tabuľky. Každá databáza dostane vlastnú skupinu súborov v súborovom systéme. Server MongoDB môže ukladať viac databáz.
- Dokument - Záznam v zbierke MongoDB sa v zásade nazýva dokument. Dokument zase bude pozostávať z názvu poľa a hodnôt.
- Pole - pár názvu a hodnoty v dokumente. Dokument má nula alebo viac polí. Polia sú analogické so stĺpcami v relačných databázach.
Nasledujúca schéma zobrazuje príklad párov polí s hodnotou kľúča. V príklade nižšie je teda CustomerID a 11 jedným z párov kľúčových hodnôt definovaných v dokumente.
- JSON - nazýva sa to JavaScriptová notácia objektu. Toto je ľudsky čitateľný formát obyčajného textu na vyjadrenie štruktúrovaných údajov. JSON je v súčasnosti podporovaný v mnohých programovacích jazykoch.
Len krátka poznámka o kľúčovom rozdiele medzi poľom _id a poľom bežnej zbierky. Pole _id sa používa na jednoznačnú identifikáciu dokumentov v kolekcii a MongoDB ho automaticky pridá pri vytvorení kolekcie.
Prečo používať MongoDB?
Ďalej uvádzame niekoľko dôvodov, prečo by ste mali začať používať MongoDB
- Orientované na dokumenty - keďže MongoDB je databáza typu NoSQL, namiesto údajov vo formáte relačného typu ukladá údaje do dokumentov. Vďaka tomu je MongoDB veľmi flexibilný a prispôsobiteľný situácii a požiadavkám v reálnom svete podnikania.
- Ad hoc dotazy - MongoDB podporuje vyhľadávanie podľa poľa, rozsahové dotazy a vyhľadávanie regulárnych výrazov. Je možné položiť otázku na vrátenie konkrétnych polí v dokumentoch.
- Indexovanie - indexy je možné vytvárať na zlepšenie výkonu vyhľadávania v rámci MongoDB. Indexovať sa dá akékoľvek pole v dokumente MongoDB.
- Replikácia - MongoDB môže poskytnúť vysokú dostupnosť s množinami replík. Sada replík pozostáva z dvoch alebo viacerých inštancií mongo DB. Každý člen množiny replík môže kedykoľvek pôsobiť v úlohe primárnej alebo sekundárnej repliky. Primárnou replikou je hlavný server, ktorý interaguje s klientom a vykonáva všetky operácie čítania a zápisu. Sekundárne repliky uchovávajú kópiu údajov primárneho pomocou zabudovanej replikácie. Keď zlyhá primárna replika, sada replík sa automaticky prepne na sekundárny a potom sa stane primárnym serverom.
- Vyrovnávanie zaťaženia - MongoDB používa koncept horizontálneho horizontálneho mierenia rozdelením údajov na viac inštancií MongoDB. MongoDB môže bežať na viacerých serveroch, vyrovnávať zaťaženie a / alebo duplikovať údaje, aby udržal systém v prevádzke v prípade zlyhania hardvéru.
Dátové modelovanie v MongoDB
Ako sme videli z časti Úvod, dáta v MongoDB majú flexibilnú schému. Na rozdiel od databáz SQL, kde musíte mať pred vložením údajov deklarovanú schému tabuľky, kolekcie MongoDB nevynucujú štruktúru dokumentu. Tento druh flexibility robí MongoDB tak silným.
Pri modelovaní údajov v Mongo majte na pamäti nasledujúce veci
- Aké sú potreby aplikácie - Prezrite si obchodné potreby aplikácie a zistite, aké údaje a typ údajov sú pre aplikáciu potrebné. Na základe toho sa uistite, že je zodpovedajúcim spôsobom rozhodnuté o štruktúre dokumentu.
- Čo sú vzory načítania údajov - Ak predpokladáte veľké využitie dotazov, zvážte použitie indexov vo vašom dátovom modeli na zlepšenie efektívnosti dotazov.
- Dochádza v databáze k častým vkladaním, aktualizáciám a odstraňovaniu? Znovu zvážte použitie indexov alebo v prípade potreby zahrňte do návrhu dátového modelovania rozdelenie, aby ste zlepšili účinnosť svojho celkového prostredia MongoDB.
Rozdiel medzi MongoDB a RDBMS
Ďalej uvádzame niektoré kľúčové rozdiely medzi výrazmi medzi MongoDB a RDBMS
RDBMS | MongoDB | Rozdiel |
---|---|---|
Tabuľka | Zbierka | V RDBMS obsahuje tabuľka stĺpce a riadky, ktoré sa používajú na ukladanie údajov, zatiaľ čo v MongoDB je rovnaká štruktúra známa ako kolekcia. Zbierka obsahuje dokumenty, ktoré zase obsahujú polia, ktoré sú zase pármi kľúč - hodnota. |
Riadok | Dokument | V RDBMS riadok predstavuje jednu implicitne štruktúrovanú údajovú položku v tabuľke. V databáze MongoDB sú údaje uložené v dokumentoch. |
Stĺpec | Lúka | V RDBMS stĺpec označuje množinu údajových hodnôt. Tieto v MongoDB sú známe ako Fields. |
Pripája sa | Vložené dokumenty | V RDBMS sa údaje niekedy šíria naprieč rôznymi tabuľkami a na zobrazenie úplného prehľadu všetkých údajov sa niekedy v tabuľkách vytvorí spojenie, aby sa údaje získali. V serveri MongoDB sa údaje zvyčajne ukladajú do jednej kolekcie, ale oddelia sa pomocou vložených dokumentov. V MongoDB teda neexistuje koncept spojenia. |
Okrem výrazov rozdiely je nižšie uvedených niekoľko ďalších rozdielov
- Relačné databázy sú známe tým, že presadzujú integritu údajov. Toto nie je výslovná požiadavka v MongoDB.
- Program RDBMS vyžaduje, aby sa najskôr normalizovali údaje, aby sa zabránilo osirelým záznamom a duplikátom. Normalizácia údajov potom vyžaduje viac tabuliek, čo bude mať za následok viac spojení tabuliek, čo bude vyžadovať viac kľúčov a indexov.
Keď databázy začnú rásť, výkon sa môže stať problémom. Toto opäť nie je výslovná požiadavka v MongoDB. MongoDB je flexibilný a nepotrebuje najskôr normalizáciu údajov.