Co je MongoDB?
Relacionální databáze byly po desetiletí nejčastějším řešením pro správu dat. Rostoucí objem a rozmanitost dat, které jsou charakteristické pro moderní webové aplikace, však učinily z dokumentově orientovaných databází, jako je Mongo DB, vážného konkurenta. Vysvětlíme, co je to dokumentově orientovaný přístup a jaké výhody tento model správy dat nabízí.
Jak se MongoDB liší od jiných databází?
V tradičních relačních databázích jsou data uložena ve strukturované tabulce. MongoDB, jehož název je odvozen od slova „humongous“ (obrovský), je dokumentově orientovaný databázový systém. V MongoDB jsou data seskupena nestrukturovaným způsobem do takzvaných kolekcí.
Dalším klíčovým rozdílem je, že MongoDB nepoužívá SQL jako dotazovací jazyk, a proto je klasifikován jako databázový systém NoSQL. Místo toho MongoDB používá jako dotazovací jazyk MongoDB Query Language (MQL) založený na JavaScriptu. V důsledku toho jsou záznamy MongoDB uloženy ve formátu BSON, který je modelován podle JSON. To znamená, že jsou podporovány všechny datové typy JavaScriptu, a proto se MongoDB stalo ideální volbou pro mnoho platforem založených na JavaScriptu.
Další charakteristikou databází MongoDB je jejich schopnost horizontálního škálování. To znamená, že data v databázi mohou být rozložena na více serverů, místo aby byla uložena na jednom centrálním místě. Tento přístup umožňuje zvýšit dostupnost dat a zlepšit celkový výkon databáze. Horizontální škálování je často nákladově efektivnější než upgrade jednoho serveru na výkonnější hardware (vertikální škálování).
Jak funguje MongoDB?
Na rozdíl od MySQL používá MongoDB zcela odlišný přístup k ukládání dat a pracuje způsobem orientovaným na dokumenty. Namísto ukládání dat v tabulkové formě, kde každý řádek má stejný počet polí, která je třeba vyplnit hodnotami, ukládají databáze MongoDB data v dokumentech BSON, které nemají žádnou předdefinovanou strukturu. Počet polí se může mezi dokumenty lišit a pole nemusí být vzájemně konzistentní. Dokumenty plní podobnou roli jako řádky v tabulce SQL, zatímco pole definovaná v těchto dokumentech slouží jako sloupce.
Při práci s databázemi MongoDB můžete využít mnoho nástrojů. Kromě osvědčeného MongoDB Shellu můžete k správě databází MongoDB použít také grafické rozhraní MongoDB Compass. V tomto článku se však zaměříme na příkazy Shellu.
Jelikož MQL je založen na JavaScriptu, existuje již řada předdefinovaných funkcí, které můžete použít pro složité dotazy a příkazy. Většina příkazů pro zápis a čtení má stejnou strukturu jako příkazy uvedené v příkladu níže. Kromě těchto příkazů existuje řada dalších příkazů, které můžete použít ke správě databáze MongoDB. Ty jsou podrobně popsány a vysvětleny v dokumentaci 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
})Ve výše uvedeném příkladu je řada příkazů databáze MongoDB, které jsou všechny strukturovány stejným způsobem. Nejprve je zde „db“, které odkazuje na databázi jako celek, poté „students“, které odkazuje na konkrétní kolekci, kde by měly být provedeny odpovídající operace. Po kolekci následuje metoda (find, update, remove, insert), která by měla být použita.
Metodu find() můžete použít k vyhledání konkrétního dokumentu. Pokud pole parametru ponecháte prázdné, vrátí se všechny dokumenty ve vybrané kolekci. V výše uvedeném příkladu MongoDB vyhledá všechny dokumenty, ve kterých má pole „Name“ hodnotu „Charlie“.
Metoda updateOne() může být použita k přepsání hodnot v dokumentu. Metoda update() má dva argumenty. První argument je výběrové kritérium a druhý je pár klíč-hodnota, který má být přepsán. V příkladu jsou vybráni všichni studenti jménem „Charlie“. Hodnota „2“ je pak zadána do pole „Semestr“ pro studenty, jejichž jméno je Charlie.
Metoda deleteOne() přijímá pouze jeden argument. Jedná se o výběrové kritérium, které určuje, které dokumenty mají být odstraněny z databáze. V tomto případě jsou z databáze odstraněni všichni studenti jménem Peter.
Metoda insertOne() také přijímá argument. V případě této metody je argumentem obsah JSON dokumentu, který chcete přidat. Při vkládání dokumentů je důležité zajistit, aby každý dokument v kolekci MongoDB měl jedinečné 12místné hexadecimální číslo. Toto číslo slouží jako ID objektu dokumentu. Pokud není při vkládání dokumentu specifikováno, MongoDB automaticky vygeneruje ID pro dokument.
Jaké jsou výhody MongoDB?
Struktura MongoDB nabízí uživatelům několik výhod, zejména pokud jde o flexibilitu a škálovatelnost. Jednou z klíčových výhod ukládání dat na základě dokumentů je to, že na rozdíl od relačních databází nemusí mít všechny záznamy stejné atributy. To umožňuje ukládání nestrukturovaných a polostrukturovaných dat. Kromě toho lze jednotlivé dokumenty restrukturalizovat (například přidáním nebo odstraněním atributu/pole) bez nutnosti restrukturalizovat ostatní dokumenty ve stejné kolekci. Vzhledem k tomu, že dokumenty v MongoDB jsou uloženy ve formátu BSON, poskytují databáze MongoDB také vysokou míru kompatibility s mnoha běžně používanými platformami JavaScript.
Kromě ukládání nestrukturovaných dat nabízí MongoDB také vysokou míru horizontální škálovatelnosti, aniž by porušoval zásady ACID (atomickost, konzistence, izolace, trvanlivost). V distribuovaných databázích může být zajištění konzistence často výzvou, protože data jsou uložena na různých serverech. Pokud jsou změny provedeny současně ve více dokumentech, nemusí být tyto změny okamžitě distribuovány na všechny servery, které databázový systém používá. V případě velkého objemu dotazů to může někdy vést k nekonzistentním datům. S vydáním MongoDB 4.2 v roce 2019 je však nyní možné provádět změny ve více dokumentech na různých serverech, aniž by byla ohrožena konzistence nebo dostupnost.
Potřebujete dokumentově orientovanou databázi, která se přizpůsobí požadavkům vaší webové aplikace? MongoDB je ideálním řešením!
K čemu lze MongoDB použít?
MongoDB je vynikající volbou pro webové projekty, které využívají extrémně velké nestrukturované datové sady. Práce s dokumentovým systémem bez pevného schématu je ideální pro zpracování široké škály datových typů, které vyžadují rychlé ukládání a zpracování.
Databázový systém také umožňuje horizontální, téměř neomezenou škálovatelnost, protože databáze lze snadno distribuovat na více serverů bez omezení funkčnosti. Navíc s MongoDB můžete snadno vytvářet kopie své databáze a zpřístupňovat je různým serverům, čímž zajistíte dlouhodobou bezpečnost a dostupnost svých dat. Dokumentově orientovaný databázový program také vykazuje působivé schopnosti, pokud jde o agregaci dat, ať už z jednoho zdroje nebo z více zdrojů.
MongoDB je ideální pro webové projekty, které vykazují následující charakteristiky:
- Škálovatelnost: s růstem vašeho webového projektu obvykle roste i počet požadavků, což vede k vyšším nárokům na databázi.
- Dostupnost: potřebujete nepřetržitý přístup k vaší webové aplikaci, a to i v případě selhání serveru.
- Flexibilita: váš projekt by měl umožňovat dynamickou adaptaci za všech okolností.
Nejste si jisti, který databázový model je pro váš webový projekt ten správný? To nevadí, protože nemusíte vybírat pouze jeden. Je možné kombinovat různé typy databázových modelů a výběr více než jednoho může být pro požadavky vašeho projektu nejvhodnější volbou.