Co je to MongoDB? Architecture, Features & Example
โก Chytrรฉ shrnutรญ
MongoDB je dokumentovฤ orientovanรก NoSQL databรกze pouลพรญvanรก pro uklรกdรกnรญ velkรฝch objemลฏ dat, kterรก mรญsto tabulek a ลรกdkลฏ pouลพรญvรก kolekce a dokumenty. Tento zdroj vysvฤtluje MongoDB funkce, pลรญklad dokumentu, klรญฤovรฉ architektonickรฉ komponenty, dลฏvody pro jeho pouลพitรญ, modelovรกnรญ dat a jak se liลกรญ od relaฤnรญ databรกze.

Co je to MongoDB?
MongoDB je dokumentovฤ orientovanรก NoSQL databรกze pouลพรญvanรก pro uklรกdรกnรญ velkรฝch objemลฏ dat. Namรญsto pouลพitรญ tabulek a ลรกdkลฏ jako v tradiฤnรญch relaฤnรญch databรกzรญch, MongoDB vyuลพรญvรก sbรญrky a dokumenty. Dokumenty se sklรกdajรญ z pรกrลฏ klรญฤ-hodnota, kterรฉ jsou zรกkladnรญ jednotkou dat MongoDBKolekce obsahujรญ sady dokumentลฏ a funkcรญ, coลพ je ekvivalent relaฤnรญch databรกzovรฝch tabulek. MongoDB je databรกze, kterรก se objevila kolem poloviny roku 2000.
MongoDB Funkce
- Kaลพdรก databรกze obsahuje kolekce, kterรฉ zase obsahujรญ dokumenty. Kaลพdรฝ dokument se mลฏลพe liลกit a mลฏลพe mรญt rลฏznรฝ poฤet polรญ. Velikost a obsah jednotlivรฝch dokumentลฏ se mohou od sebe navzรกjem liลกit.
- Struktura dokumentu je vรญce v souladu s tรญm, jak vรฝvojรกลi konstruujรญ svรฉ tลรญdy a objekty v pลรญsluลกnรฝch programovacรญch jazycรญch. Vรฝvojรกลi ฤasto ลรญkajรญ, ลพe jejich tลรญdy nejsou ลรกdky a sloupce, ale majรญ jasnou strukturu s pรกry klรญฤ-hodnota.
- ลรกdky (nebo dokumenty, jak jsou volรกny MongoDB) nemusรญ mรญt pลedem definovanรฉ schรฉma. Mรญsto toho lze pole vytvรกลet za chodu.
- Datovรฝ model dostupnรฝ v rรกmci MongoDB umoลพลuje snadnฤji reprezentovat hierarchickรฉ vztahy, uklรกdat pole a dalลกรญ sloลพitฤjลกรญ struktury.
- ล kรกlovatelnost - MongoDB Prostลedรญ jsou velmi ลกkรกlovatelnรก. Spoleฤnosti po celรฉm svฤtฤ majรญ definovanรฉ clustery, pลiฤemลพ nฤkterรฉ z nich provozujรญ vรญce neลพ 100 uzlลฏ s pลibliลพnฤ miliony dokumentลฏ v databรกzi.
MongoDB Pลรญklad
Nรญลพe uvedenรฝ pลรญklad ukazuje, jak lze dokument modelovat MongoDB.
- Pole _id je pลidรกno uลพivatelem MongoDB k jednoznaฤnรฉ identifikaci dokumentu ve sbรญrce.
- Mลฏลพete si vลกimnout, ลพe data objednรกvky (OrderID, Product a Quantity), kterรก jsou v RDBMS obvykle uloลพena v samostatnรฉ tabulce, jsou ve skuteฤnosti uloลพena jako vloลพenรฝ dokument v samotnรฉ kolekci v MongoDBToto je jeden z klรญฤovรฝch rozdรญlลฏ v modelovรกnรญ dat v MongoDB.
Klรญฤovรฉ souฤรกsti MongoDB Architecture
Nรญลพe je uvedeno nฤkolik bฤลพnรฝch termรญnลฏ pouลพรญvanรฝch v MongoDB:
- _id โ Toto pole je povinnรฉ v kaลพdรฉm MongoDB dokument. Pole _id pลedstavuje jedineฤnou hodnotu v MongoDB dokument. Pole _id je jako primรกrnรญ klรญฤ dokumentu. Pokud vytvoลรญte novรฝ dokument bez pole _id, MongoDB automaticky vytvoลรญ pole. Pokud tedy napลรญklad vidรญme pลรญklad vรฝลกe uvedenรฉ tabulky zรกkaznรญkลฏ, MongoDB pลidรก ke kaลพdรฉmu dokumentu v kolekci 24mรญstnรฝ jedineฤnรฝ identifikรกtor.
| _Id | Zรกkaznickรฉ identifikaฤnรญ ฤรญslo | Jmรฉno zรกkaznรญka | ฤรญslo objednรกvky |
|---|---|---|---|
| 563479cc8a8a4246bd27d784 | 11 | Guru99 | 111 |
| 563479cc7a8a4246bd47d784 | 22 | Trevor Smith | 222 |
| 563479cc9a8a4246bd57d784 | 33 | Nicole | 333 |
- Sbรญrka โ Tohle je skupinaping of MongoDB dokumenty. Kolekce je ekvivalentem tabulky, kterรก je vytvoลena v jakรฉmkoli jinรฉm RDBMS, jako napลรญklad Oracle nebo MS SQL. Kolekce existuje v rรกmci jednรฉ databรกze. Jak je patrnรฉ z รบvodu, kolekce nevynucujรญ ลพรกdnou strukturu.
- Kurzor โ Toto je ukazatel na sadu vรฝsledkลฏ dotazu. Klienti mohou iterovat kurzorem a naฤรญtat vรฝsledky.
- Databรกze โ Toto je kontejner pro kolekce, podobnฤ jako v RDBMS, kde se jednรก o kontejner pro tabulky. Kaลพdรก databรกze mรก v souborovรฉm systรฉmu vlastnรญ sadu souborลฏ. A MongoDB server mลฏลพe uklรกdat vรญce databรกzรญ.
- Dokument โ Zรกznam v a MongoDB Kolekce se v podstatฤ nazรฝvรก dokument. Dokument se zase sklรกdรก z nรกzvลฏ polรญ a hodnot.
- Pole โ Dvojice nรกzev-hodnota v dokumentu. Dokument mรก nula nebo vรญce polรญ. Pole jsou analogickรก sloupcลฏm v relaฤnรญch databรกzรญch. Nรกsledujรญcรญ diagram ukazuje pลรญklad polรญ s pรกry klรญฤ-hodnota. V nรญลพe uvedenรฉm pลรญkladu jsou tedy CustomerID a 11 jednรญm z pรกrลฏ klรญฤ-hodnota definovanรฝch v dokumentu.
- JSON โ Toto je znรกmรฉ jako JavaScรฉnรกล Zรกpis objektลฏ. Jednรก se o lidsky ฤitelnรฝ formรกt prostรฉho textu pro vyjรกdลenรญ strukturovanรฝch dat. JSON je v souฤasnรฉ dobฤ podporovรกn v mnoha programovacรญch jazycรญch.
Jen krรกtkรก poznรกmka ke klรญฤovรฉmu rozdรญlu mezi polem _id a normรกlnรญm polem kolekce. Pole _id se pouลพรญvรก k jedineฤnรฉ identifikaci dokumentลฏ v kolekci a automaticky je pลidรกvรก MongoDB kdyลพ je sbรญrka vytvoลena.
Proฤ pouลพรญvat MongoDB?
Nรญลพe uvรกdรญme nฤkolik dลฏvodลฏ, proฤ byste mฤli zaฤรญt pouลพรญvat MongoDB:
- Orientace na dokumenty - Od tรฉ doby MongoDB je NoSQL typ databรกze, mรญsto aby mฤla data ve formรกtu relaฤnรญho typu, uklรกdรก data do dokumentลฏ. To dฤlรก MongoDB velmi flexibilnรญ a pลizpลฏsobivรฝ reรกlnรฝm situacรญm a poลพadavkลฏm obchodnรญho svฤta.
- Dotazy ad hoc - MongoDB podporuje vyhledรกvรกnรญ podle polรญ, rozsahovรฝch dotazลฏ a vyhledรกvรกnรญ regulรกrnรญch vรฝrazลฏ. Je moลพnรฉ zadรกvat dotazy na vrรกcenรญ konkrรฉtnรญch polรญ v dokumentech.
- Indexovรกnรญ โ Indexy lze vytvรกลet pro zlepลกenรญ vรฝkonu vyhledรกvรกnรญ v rรกmci MongoDB. Jakรฉkoli pole v a MongoDB dokument lze indexovat.
- replikace - MongoDB mลฏลพe zajistit vysokou dostupnost pomocรญ replikaฤnรญch sad. Replikaฤnรญ sada se sklรกdรก ze dvou nebo vรญce MongoDB instance. Kaลพdรฝ ฤlen sady replik mลฏลพe kdykoli fungovat v roli primรกrnรญ nebo sekundรกrnรญ repliky. Primรกrnรญ replika je hlavnรญ server, kterรฝ interaguje s klientem a provรกdรญ vลกechny operace ฤtenรญ/zรกpisu. Sekundรกrnรญ repliky uchovรกvajรญ kopii dat primรกrnรญho serveru pomocรญ vestavฤnรฉ replikace. Kdyลพ primรกrnรญ replika selลพe, sada replik se automaticky pลepne na sekundรกrnรญ server a ten se potรฉ stane primรกrnรญm serverem.
- Vyrovnรกvรกnรญ zatรญลพenรญ - MongoDB pouลพรญvรก koncept sharding pro horizontรกlnรญ ลกkรกlovรกnรญ rozdฤlenรญm dat na vรญce MongoDB pลรญklady. MongoDB mลฏลพe bฤลพet na vรญce serverech, vyvaลพovat zรกtฤลพ a/nebo duplikovat data, aby byl systรฉm v provozu i v pลรญpadฤ selhรกnรญ hardwaru.
Datovรฉ modelovรกnรญ v MongoDB
Jak jsme vidฤli z รบvodnรญ ฤรกsti, data v MongoDB mรก flexibilnรญ schรฉma. Na rozdรญl od in SQL databรกze, kde musรญte mรญt pลed vloลพenรญm dat deklarovรกno schรฉma tabulky, MongoDBkolekce nevynucujรญ strukturu dokumentu. Tento druh flexibility je to, co dฤlรก MongoDB tak silnรฝ.
Pลi modelovรกnรญ dat v MongoDB, mฤjte na pamฤti nรกsledujรญcรญ:
- Jakรฉ jsou poลพadavky aplikace โ Prozkoumejte obchodnรญ potลeby aplikace a zjistฤte, jakรก data a typ dat aplikace potลebuje. Na zรกkladฤ toho zajistฤte, aby byla odpovรญdajรญcรญm zpลฏsobem zvolena struktura dokumentu.
- Jakรฉ jsou vzorce pro vyhledรกvรกnรญ dat โ Pokud pลedpoklรกdรกte velkรฉ vyuลพitรญ dotazลฏ, zvaลพte pouลพitรญ indexลฏ ve vaลกem datovรฉm modelu pro zlepลกenรญ efektivity dotazลฏ.
- Probรญhajรญ v databรกzi ฤastรฉ vklรกdรกnรญ, aktualizace a odebรญrรกnรญ? Znovu zvaลพte pouลพitรญ indexลฏ nebo v pลรญpadฤ potลeby zaฤleลte sharding do nรกvrhu datovรฉho modelovรกnรญ, abyste zlepลกili celkovou efektivitu. MongoDB prostลedรญ.
Rozdรญl mezi MongoDB & RDBMS
Nรญลพe jsou uvedeny nฤkterรฉ z klรญฤovรฝch rozdรญlลฏ mezi pojmy MongoDB a RDBMS:
| RDBMS | MongoDB | Rozdรญl |
|---|---|---|
| Tabulka | Sbรญrka | In RDBMS, tabulka obsahuje sloupce a ลรกdky, kterรฉ se pouลพรญvajรญ k uklรกdรกnรญ dat, zatรญmco v MongoDB Stejnรก struktura se nazรฝvรก kolekce. Kolekce obsahuje dokumenty, kterรฉ zase obsahujรญ pole, jeลพ jsou zase pรกry klรญฤ-hodnota. |
| ลรกdek | Dokument | V RDBMS ลรกdek pลedstavuje jednu implicitnฤ strukturovanou datovou poloลพku v tabulce. v MongoDB, data jsou uloลพena v dokumentech. |
| Sloupec | Pole | V RDBMS sloupec oznaฤuje sadu hodnot dat. Tyto v MongoDB jsou znรกmรฉ jako pole. |
| Pลipojuje | Vloลพenรฉ dokumenty | V RDBMS jsou data nฤkdy rozloลพena mezi rลฏznรฉ tabulky a pro zobrazenรญ รบplnรฉho pohledu na vลกechna data se nฤkdy mezi tabulkami vytvoลรญ spojenรญ, aby se data zรญskala. MongoDB, data jsou obvykle uloลพena v jednรฉ kolekci, ale oddฤlena pomocรญ vloลพenรฝch dokumentลฏ. Neexistuje tedy koncept spojenรญ. MongoDB. |
Kromฤ rozdรญlลฏ v pojmech je nรญลพe uvedeno nฤkolik dalลกรญch rozdรญlลฏ:
- Relaฤnรญ databรกze jsou znรกmรฉ tรญm, ลพe vynucujรญ integritu dat. Toto nenรญ vรฝslovnรฝ poลพadavek v MongoDB.
- RDBMS vyลพaduje, aby data byla normalizovanรก zaprvรฉ, aby se zabrรกnilo vzniku osiลelรฝch zรกznamลฏ a duplikรกtลฏ. Normalizace dat pak vyลพaduje vรญce tabulek, coลพ pak povede k vฤtลกรญmu poฤtu spojenรญ tabulek, a tudรญลพ vyลพaduje vรญce klรญฤลฏ a indexลฏ. S rลฏstem databรกzรญ se mลฏลพe vรฝkon stรกt problรฉmem. Opฤt se nejednรก o explicitnรญ poลพadavek v MongoDB. MongoDB je flexibilnรญ a nepotลebuje data nejprve normalizovat.


