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.

  • ๐Ÿ“„ Model dokumentu: Data jsou uloลพena jako dokumenty klรญฤ-hodnota v kolekcรญch, nikoli v tabulkรกch.
  • ๐Ÿงฉ Flexibilnรญ schรฉma: Pole se vytvรกล™ejรญ za chodu bez pล™eddefinovanรฉ struktury.
  • ๐Ÿ—๏ธ Zรกkladnรญ komponenty: _id, kolekce, dokument, pole, kurzor, databรกze a JSON.
  • โš™๏ธ Proฤ to pouลพรญvat: Ad hoc dotazy, indexovรกnรญ, replikace a sharding pro ลกkรกlovรกnรญ.
  • ๐Ÿ”„ Vs. RDBMS: Kolekce nahrazujรญ tabulky a vloลพenรฉ dokumenty nahrazujรญ spojenรญ (joins).

Co je to MongoDB

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

  1. 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.
  2. 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.
  3. ล˜รก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.
  4. Datovรฝ model dostupnรฝ v rรกmci MongoDB umoลพลˆuje snadnฤ›ji reprezentovat hierarchickรฉ vztahy, uklรกdat pole a dalลกรญ sloลพitฤ›jลกรญ struktury.
  5. ล 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.

  1. Pole _id je pล™idรกno uลพivatelem MongoDB k jednoznaฤnรฉ identifikaci dokumentu ve sbรญrce.
  2. 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.

MongoDB Pล™รญklad

Klรญฤovรฉ souฤรกsti MongoDB Architecture

Nรญลพe je uvedeno nฤ›kolik bฤ›ลพnรฝch termรญnลฏ pouลพรญvanรฝch v MongoDB:

  1. _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
  1. 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.
  2. Kurzor โ€“ Toto je ukazatel na sadu vรฝsledkลฏ dotazu. Klienti mohou iterovat kurzorem a naฤรญtat vรฝsledky.
  3. 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รญ.
  4. Dokument โ€“ Zรกznam v a MongoDB Kolekce se v podstatฤ› nazรฝvรก dokument. Dokument se zase sklรกdรก z nรกzvลฏ polรญ a hodnot.
  5. 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.

Klรญฤovรฉ souฤรกsti MongoDB Architecture

  1. 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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รญ:

  1. 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.
  2. 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ลฏ.
  3. 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ลฏ:

  1. Relaฤnรญ databรกze jsou znรกmรฉ tรญm, ลพe vynucujรญ integritu dat. Toto nenรญ vรฝslovnรฝ poลพadavek v MongoDB.
  2. 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.

Nejฤastฤ›jลกรญ dotazy

MongoDB Uklรกdรก velkรฉ objemy nestrukturovanรฝch a polostrukturovanรฝch dat, coลพ je uลพiteฤnรฉ pro vรฝvoj umฤ›lรฉ inteligence a strojovรฉho uฤenรญ. Jeho flexibilnรญ dokumenty obsahujรญ trรฉnovacรญ data, sady funkcรญ a metadata modelลฏ a Atlas pล™idรกvรก vektorovรฉ vyhledรกvรกnรญ pro aplikace umฤ›lรฉ inteligence.

Ano. MongoDB Vyhledรกvรกnรญ vektorลฏ Atlas umoลพลˆuje uklรกdat a dotazovat vektorovรก vloลพenรญ vedle vaลกich dokumentลฏ. To podporuje sรฉmantickรฉ vyhledรกvรกnรญ, doporuฤenรญ a generovรกnรญ rozลกรญล™enรฉ o vyhledรกvรกnรญ pro aplikace umฤ›lรฉ inteligence bez samostatnรฉ vektorovรฉ databรกze.

MongoDB Komunitnรญ edice je bezplatnรก a s otevล™enรฝm zdrojovรฝm kรณdem. MongoDB nabรญzรญ takรฉ Atlas, spravovanou cloudovou sluลพbu s bezplatnou รบrovnรญ, a Enterprise Edition s pokroฤilรฝm zabezpeฤenรญm a podporou za poplatek.

Mnoho velkรฝch organizacรญ pouลพรญvรก MongoDB pro flexibilnรญ uklรกdรกnรญ velkรฝch objemลฏ dat, vฤetnฤ› firem v oblasti elektronickรฉho obchodovรกnรญ, her, internetu vฤ›cรญ a sprรกvy obsahu. Jeho ลกkรกlovatelnost prostล™ednictvรญm shardingu a replikace je vhodnรก pro aplikace s miliony dokumentลฏ.

Shrลˆte tento pล™รญspฤ›vek takto: