MongoDB je nejběžnější a nejrozšířenější databáze NoSQL. Jedná se o open source databázi orientovanou na dokumenty. NoSQL se používá k označení „nerelační“. To znamená, že databáze MongoDB není založena na tabulkových vztazích jako RDBMS, protože poskytuje odlišný mechanismus ukládání a získávání dat.
Formát úložiště používaný MongoDB se nazývá BSON. Databáze je spravována společností MongoDB Inc. a je licencována v rámci Server-Side Public License (SSPL).
Níže je jednoduchá struktura dokumentu MongoDB:
{ title: 'FossLinux', by: 'Abraham', url: 'https://www.fosslinux.com', type: 'NoSQL' }
Jak to funguje?
MongoDB funguje ve dvou vrstvách, konkrétně:
- Datová vrstva
- Aplikační vrstva
Aplikační vrstva je běžně označována jako Final Abstraction Layer. Obsahuje dvě části:backend serverová část a frontend části uživatelského rozhraní. Frontend sekce je viditelné místo, kde vývojář s pomocí MongoDB komunikuje s mobilem nebo webem. Backendová část obsahuje server primárně používaný k provádění logiky na straně serveru. Kromě toho sekce server obsahuje ovladače a mongo shell, které napomáhají interakci se serverem MongoDB pomocí dotazů.
Dotazy jsou odesílány na server, který se nachází v datové vrstvě. Server MongoDB přijímá a poté předává dotazy do úložiště, kde jsou prováděny operace čtení a zápisu na odpovídající datové soubory. Primárním cílem úložiště je správa dat.
Poznámka: Server MongoDB neprovádí operace zápisu a čtení.
Obrázek níže ukazuje, jak MongoDB funguje:
Hlavní funkce MongoDB
Mezi jeho hlavní vlastnosti patří:
1. Indexování
Indexy mají zlepšit výkon a rychlost vyhledávání v databázi. Pole v dokumentu této databáze lze indexovat pomocí primárního a sekundárního indexu/indexů. Bez indexování musí být každý dokument v databázi naskenován, aby se vybraly ty, které odpovídají dotazu, což někdy bývá neefektivní. Proto musí být pro efektivní vyhledávání dokumentů přítomna indexace a MongoDB ji používá ke stručnému zpracování velkých datových úseků.
MongoDB umožňuje svým uživatelům indexovat jakékoli pole, které bylo indexováno pomocí sekundárních i primárních indexů. Díky tomu je vyhledávání dotazů mnohem rychlejší, čímž se zvyšuje celkový výkon.
2. Vyrovnávání zátěže
MongoDB duplikuje data, aby udržela systém v chodu i v případě selhání hardwaru. Tento proces navíc umožňuje MongoDB běžet na více serverech, čímž se vyrovnává zátěž.
3. Ad-hoc dotazy
MongoDB pravidelně podporuje vyhledávání polí, rozsahů a výrazů. Tyto dotazy vracejí konkrétní pole dokumentů a zahrnují také uživatelem definované funkce JavaScriptu. Dotazy lze také nakonfigurovat tak, aby vracely náhodný vzorek výsledků dané velikosti.
4. Replikace
Sady replik, které MongoDB poskytuje, se skládají ze dvou nebo více kopií dat. Tyto sady mohou kdykoli fungovat jako primární nebo sekundární repliky. Primární sady replik provádějí čtení a zápis, zatímco sekundární sady uchovávají kopii dat primární repliky pomocí vestavěné replikace. Pokud primární replika selže, sada replik automaticky provede proces volby k určení, která sekundární by se měla stát primární. Sekundární repliky mohou volitelně sloužit operacím čtení, ale data jsou nakonec ve výchozím nastavení konzistentní.
5. Úložiště souborů
Tato databáze poskytuje vývojářům funkce pro manipulaci se soubory a obsahem. Mongo DB lze použít jako souborový systém známý jako Grid file system (GridFS). Tato funkce rozdělí soubor na části a každou část uloží jako samostatný dokument.
6. Agregace
Pro efektivní použitelnost poskytuje MongoDB agregační rámec. Tato funkce umožňuje vývojářům dávkovat procesní data a získat jediný výsledek i po provedení různých operací s daty skupiny. Existují tři způsoby, jak MongoDB poskytuje agregační rámec:
- Funkce zmenšení mapy
- Agregační kanál
- Jednoúčelová agregace.
Podívejte se na obrázek níže, abyste získali pohled na to, jak funguje agregace v MongoDB:
7. Databáze bez schématu
Funkce bez schématu poskytuje MongoDB mnohem větší flexibilitu. Jedna kolekce může obsahovat různé dokumenty v MongoDB. Skutečnost, že nemá žádné schéma, umožňuje ukládat samostatné dokumenty s jiným obsahem, poli a velikostmi ve stejné kolekci.
8. GridFS
Toto je funkce používaná k ukládání a načítání souborů v MongoDB. Rozdělí dokument na několik částí známých jako kusy a poté je uchovává v různých dokumentech. Všechny bloky kromě posledního mají výchozí velikost úložiště přibližně 255 kB. GridFS je velmi užitečný pro soubory větší než 16 MB.
Poznámka: Když je GridFS dotazován na soubor, sestaví všechny samostatné bloky potřebné k vytvoření původního souboru. Níže je uvedena zjednodušená pracovní metodika GridFS:
Komponenty MongoDB
Mezi základní komponenty MongoDB a jejich použití patří:
- Sbírky – Jedná se o sadu dokumentů MongoDB. Jejich protějšky RDBMS jsou tabulky. Je nezbytné pochopit, že kolekce nevynucují žádnou strukturu. Kolekce vždy existuje v rámci jedné databáze.
- Dokument – Jedná se o kolekci dat uložených ve formátu BSON. Jeho protějškem RDBMS je Row. Záznamy v MongoDB jsou známé jako dokumenty. Dokumenty v MongoDB obsahují názvy polí a jejich odpovídající hodnoty.
- Pole – Toto je jeden prvek v dokumentu MongoDB, který obsahuje hodnoty jako pole a dvojice hodnot. V relačních databázích jsou pole analogická sloupcům. Pole lze v dokumentu jednoduše označit jako pár název-hodnota.
- _id – Toto pole vyžaduje každý dokument MongoDB. Pole _id lze v relačních databázích přirovnat k primárnímu klíči. Představuje jedinečnou instanci nebo hodnotu v dokumentu MongoDB. Pokud úmyslně vytvoříte dokument v MongoDB bez pole _id, bude automaticky vygenerován.
- Kurzor – Toto je ukazatel, který označuje nastavený výsledek dotazu. Pomocí kurzoru mohou klienti získat výsledky.
- JSON – Toto je zápis JavaScriptu. Je to prostý text, lidsky čitelný formát používaný k vyjádření strukturovaných dat. Tisíce programovacích jazyků podporují JSON.
- Databáze – Stejně jako v RDBMS, kde databáze je kontejner tabulek, v MongoDB je databáze kontejnerem kolekcí. Každá databáze obsahuje své vlastní sady souborů v systému souborů. Proto mohou servery MongoDB ukládat více než jednu databázi.
Vydání MongoDB
MongoDB byl vydán v různých edicích, které jsou;
- Server komunity MongoDB – Toto je verze s otevřeným zdrojovým kódem MongoDB, která je volně dostupná pro uživatele systémů Linux, Windows a macOS.
- Server MongoDB Enterprise – Toto je komerční verze MongoDB a lze ji nalézt jako součást balíčku předplatného MongoDB Enterprise Advanced.
- Atlas MongoDB – Běžně označovaný jako MongoDB Cloud. MongoDB Atlas je balíček MongoDB na vyžádání, který zcela běží a je spravován na platformách Microsoft Azure, Google Cloud a AWS. Jedná se o verzi MongoDB Enterprise hostovanou v cloudu. Edice Atlas obsahuje všechny funkce serveru MongoDB Enterprise a mnoho dalšího. Z toho tedy vyplývá, že Atlas MongoDB je mnohem pokročilejší než všechny ostatní edice MongoDB.
Proč bychom měli používat MongoDB?
- Relační databáze obsahuje strukturovaná data, ale co nestrukturovaná data? Uživatel může stále přidávat různé formy náhodných dat do MongoDB, aniž by dokonce deklaroval jejich typy.
- Uživatel může načíst obrovské objemy dat pomocí vestavěné metody shardingu, která odděluje data a pohodlně je šíří mezi četné servery díky dostupnosti a flexibilitě MongoDB v cloudovém prostředí.
- Dynamické schéma MongoDB umožňuje uživatelům experimentovat a rychle se učit nové věci. Cokoli lze začlenit do MongoDB rychle a levně.
- Zjednodušuje shromažďování údajů o poloze bez nutnosti složitých postupů.
- Miliony propojených zařízení pravidelně generují data na internetu, takže je obtížné je extrahovat a zpracovat, ale MongoDB to dokáže v rámci jediné databáze.
- MongoDB může uchovávat širokou škálu dat z několika zdrojů, aby mohl pohánět webové stránky založené na CMS. Tyto informace zahrnují tweety, komentáře, multimediální zprávy a další typy informací.
- Je to vynikající společník pro vývoj mobilních aplikací.
- Může uživatelům poskytnout analýzu klientů v reálném čase a poskytnout tak tolik potřebné přizpůsobené prostředí.
- Je to nízkonákladová databáze. Pokud jste mikro nebo malý podnik, MongoDB je lepší možnost úložiště, protože se snadno spravuje a nastavuje.
- Výkonný vyhledávač v MongoDB dá uživateli vědět, odkud data pocházejí.
Pro a proti MongoDB
Výhody
- MongoDB je mnohem lepší než relační databáze, pokud má člověk velké množství dat a chce je rozložit na mnoho serverů pro vyrovnávání zátěže.
- Vyhledávací dotazy v MongoDB jsou rychlejší, protože pro přístup musí být interpretovány na jediném serveru.
- Nabízí všestrannost, což znamená, že by měli využívat MongoDB k ukládání nestrukturovaných dat, protože je to mnohem jednodušší způsob, jak toho dosáhnout.
Nevýhody
- V MongoDB neexistuje způsob, jak kombinovat tabulky; takže to člověk bude muset dělat ručně pokaždé, když potřebuje tuto funkci použít, což má za následek nevzhledné a časově náročné kódování.
- Spotřebuje hodně paměti, protože musí ukládat klíč pro každý dokument, protože existuje možnost konfliktu dat.
- Když začnete používat jednu funkci, uzamkne celou databázi, což způsobí problém souběžnosti.
- Nedělá to automaticky; uživatel tedy musí ručně zajistit, že operace je transakce.
10 nejčastějších dotazů na MongoDB
Tato část poskytne odpovědi na některé z často kladených otázek MongoDB. Můžete si to ověřit, protože většina běžných otázek již byla zodpovězena a možná budete mít štěstí, když zde najdete řešení svého problému.
1. Jak se mohu naučit MongoDB?
Nejjednodušší a nejběžnější způsob, jak se naučit MongoDB, je prostřednictvím online školicích kurzů, které poskytuje MongoDB pro vývojáře. Kurzy jsou vyvíjeny a vedeny odbornými inženýry MongoDB, kteří jsou dobře obeznámeni s MongoDB. Kurzy jsou zdarma a pokrývají každý aspekt, který potřebujete vědět, abyste byli MongoDB guru. Většina odborníků se tuto metodu naučila používat.
Nebudete tedy skvělou výjimkou, pokud budete následovat. Online kurzy poskytují aplikace z reálného světa, které uživatelům pomáhají porozumět tomuto tématu více. Online školení probíhá samostatně, což znamená, že si určujete, jak dlouho bude trvat, než se je naučíte. Kromě toho jsou kurzy doplňková cvičení, která nováčkům pomáhají učit se a cvičit více na MongoDB. Navštivte MongoDB University a získejte spoustu bezplatných kurzů a naučte se MongoDB.
2. Je MongoDB Server zdarma k použití?
Ano. Server MongoDB je zdarma k použití v závislosti na balíčku, který se rozhodnete použít. Například komunitní server je přístupný všem uživatelům. Pokud však hledáte více funkcí, můžete použít placenou verzi, jako je MongoDB Enterprise nebo Atlas edition.
3. Vysvětlete rozdíly mezi MongoDB a relačními databázemi?
Většina relačních databází jako MySQL, Oracle, SQL Server a Postgres je postavena na architekturách původně navržených již dávno (více než 40 let). Požadavky na aplikace se v té době lišily od požadavků moderních aplikací.
MongoDB je na rozdíl od relačních databází postaven na architektuře distribuovaných systémů, což uživatelům umožňuje rychle škálovat své databáze v různých instancích. pro hloubkovou analýzu se podívejte na rozdíly mezi MongoDB a MySQL (relační databáze.) Primárním účelem návrhu MongoDB bylo zvýšit produktivitu. Flexibilita schématu je to, co většina uživatelů hledala, a to je jedna z fantastických funkcí nabízených MongoDB.
4. Jak lze získat komerční licenci MongoDB?
Chcete-li získat komerční licenci MongoDB, můžete si ji zakoupit od MongoDB Enterprise Advanced.
5. Vysvětlete, jak jsou data uložena v MongoDB?
V MongoDB jsou data uložena v dokumentech BSON, které používají datové struktury formátu JSON. Dokumenty obsahují více než jedno pole a každé pole má specifickou hodnotu datového typu, která zahrnuje binární data, pole a dílčí dokumenty. Dokumenty, které sdílejí podobné struktury, jsou uloženy a organizovány jako kolekce.
6. Kde lze spustit MongoDB?
MongoDB si můžete stáhnout, nainstalovat a spustit odkudkoli. Dokud dokončíte svobodu uzamčení platformy, můžete MongoDB spustit odkudkoli. Například verze MongoDB Atlas poskytuje uživatelům plně přizpůsobenou a spravovanou službu na AWS, Google Cloud a Azure, která funguje na principu průběžného platby. MongoDB Ops Manager je jedním z nejlepších alternativních způsobů, jak spustit MongoDB ve vaší infrastruktuře. Díky tomu mohou týmy snadno a rychle monitorovat, zálohovat, škálovat a nasazovat MongoDB.
7. Vysvětlete, proč je MongoDB užitečný?
MongoDB je postaven na třech hlavních principech návrhu, které uživatelům umožňují kolektivně vytvářet rychlejší a vysoce kvalitní aplikace. Tři základní principy návrhu jsou:
Návrh distribuovaných systémů umožňuje uživatelům inteligentně alokovat data tam, kde chtějí.
Jednotné prostředí – dává uživatelům svobodu běžet kdekoli. Tento základní princip návrhu umožňuje eliminovat uzamčení dodavatele a zároveň uživatelům umožňuje zajistit budoucí zabezpečení jejich aplikací.
Datový model dokumentu – Tato funkce představuje uživatelům nejlepší a nejjednodušší způsob práce s daty.
8. Kdy byste měli používat MongoDB?
MongoDB je všestranná databáze NoSQL, kterou lze použít napříč analytickými aplikacemi a řadou dalších aplikací OLTP. S Atlasem MongoDB a Serverem MongoDB lze řešit širokou škálu aplikací.
9. Vysvětlete, jak MongoDB zabezpečuje data klientů?
MongoDB obsahuje rozsáhlé funkce, které zajišťují, zjišťují, kontrolují a chrání klientská data. Níže jsou uvedeny některé z klíčových funkcí, které pomáhají zabezpečit data klientů:
Autorizace – RBAC (Role-based Access Control) umožňuje uživatelům konfigurovat podrobná oprávnění, která uživatelům nebo aplikacím umožňují oprávnění potřebná k provádění jejich úkolů.
Audit je zásadní pro dodržování předpisů, protože umožňuje správcům zabezpečení používat nativní protokol auditu MongoDB k zaznamenávání změn a aktivit dané databáze.
Ověření – MongoDB nabízí životaschopný pevný mechanismus reakce na výzvu, který zjednodušuje řízení přístupu k databázi založené na SCRAM-256 spolu s integrovanou podnikovou bezpečnostní infrastrukturou. Některé z funkcí, které získáte, jsou Windows Active Directory, x.509 certifikáty, LDAP a Kerberos.
Šifrování všude – Během pohybu lze data MongoDB šifrovat napříč sítěmi a v klidu lze data šifrovat na discích nebo zálohách. Nakonec lze data MongoDB během používání šifrovat v databázi.
Závěr
Tento článek komplexně pokrývá všechny aspekty, které potřebujete vědět o MongoDB. Postupem času uživatelé hledali rychlou produktivitu, kterou MongoDB svým uživatelům nabízí. Na rozdíl od relačních databází, jak již bylo zmíněno v článku, poskytuje MongoDB svým uživatelům prostor pro rychlé škálování jejich databází.