MongoDB je multiplatformní dokumentovou databází. Řadí se do skupiny takzvaných NoSQL databází a namísto tradičního modelu relačních databází, které využívají tabulky, používá dokumenty podobné formátu JSON (MongoDB je označuje jako BSON) a dynamické databázové schéma. To umožňuje vytváření a integraci dat pro aplikace jednoduše a rychleji. Software má open sourcovou licenci a je vydaný pod GNU Affero General Pulibc Licence a Apache licencemi.

MongoDB byla původně vyvinuta společností 10gen, která se v současnosti nazývá MongoDB Inc. v listopadu roku 2007 jako komponenta pro plánovaný produkt platform as a service. Open sourcem se stal o dva roky později. MongoDB je využíváno jako backend řešení mnoha zásadních stránek a služeb, mezi které patří například Craiglist, eBay, Foursquare, SourceForge, Viacom nebo New York Times. MongoDB je považována za nejpopulárnější NoSQL databázový systém.

Základní vlastnosti MongoDB

  • Orientace na dokumenty. Namísto rozpadu business subjektu do množství relačních struktur může MongoDB ukládat business subject v minimálním množství dokumentů. Příkladem je, že místo uložení informace o názvu a autorovi knihy ve dvou relačních strukturách existuje možnost název, autora i další informace týkající se knihy uložit do jediného dokumentu s názvem Kniha. To může být často intuitivnější a praktičtější na manipulaci.
  • Ad hoc dotazy. MongoDB umožňuje hledání podle pole, rozsahové dotazy i vyhledávání podle regulárních výrazů. Dotazy mohou vracet určitá pole dokumentu i obsahovat uživatelsky definované JavaScriptové funkce.
  • Indexy. Libovolné pole v MongoDB dokumentu lze indexovat. Indexy v MongoDB koncepčně odpovídají indexům v relačních databázích). Dostupné jsou rovněž sekundární indexy.
  • Replikace. MongoDB zajišťuje vysokou dostupnost za pomoci takzvané sady replik (replica sets). Sada replik obsahuje dvě i více kopií dat. Každý člen sady může v jakoukoliv chvíli zastávat funkci primární nebo sekundární repliky. Primární replika provádí implicitně veškeré čtecí i zapisovací operace. Sekundární repliky udržují kopii dat obsažených v primární replice za pomoci vestavěné replikace. Pokud by primární replika selhala, sada replik automaticky spustí proces výběru náhrady ze sekundárních replik. Sekundární repliky mohou zároveň provádět čtecí operace se zachováním konzistence.
  • Vyvažování zátěže. MongoDB využívá horizontálního škálování za pomoci shardingu. Uživatel si může zvolit shard klíč, který následně rozhodne, jak bude kolekce dat distribuována. Data se pak dělí na rozsahy na základě shard klíče a jsou distribuovaná mezi více shardů. Shard existuje hlavní a má jednoho nebo více otroků. MongoDB může běžet na více serverech a použít vyvažování zátěže nebo duplikaci dat tak, aby systém běžel v případě chyby hardwaru. Automatická konfigurace se snadno nastaví a i při běhu databáze je možné přidat nové počítače.
  • Ukládání souborů. MongoDB lze využít jako souborový systém a využít při tom vyvažování zátěže a replikace dat přes větší množství počítačů.

Výhody použití MongoDB

  • Výkon. MongoDB je určená pro uložení obrovského množství informací.
  • Flexibilita. MongoDB není založená na schématech. V samostatném dokumentu můžete mít libovolný typ dat.
  • Rychlost. MongoDB dokáže odpovídat až sto krát rychleji nežli relační databáze.
  • Dostupnost dat. Replikace a gridFS napomáhají dosažení maximální dostupnosti dat.
  • Škálovatelnost. Databáze je horizontálně škálovatelná. Pokud je potřeba zpracovat větší množství dat, je možné využít distribuce na několik strojů.
  • Plná technická podpora. MongoDB Inc. poskytuje kompletní profesionální podporu.

Nevýhody použití MongoDB

  • Absence podpory joinů. MongoDB na rozdíl od relačních databází nepodporuje joiny. Jejich použití je možné nahradit manuálním kódováním, ale spuštění může být pomalé a negativně ovlivnit výkon.
  • Vysoká náročnost na paměť. MongoDB ukládá klíčová jména pro každou dvojici hodnot. Navíc z důvodu absence joinů je nutné skladovat zbytečná data navíc. To může vést ke zbytečnému plýtvání s pamětí.
  • Omezená velikost dat. Maximální velikost souboru je 16 MB.
  • Omezené vnoření. Můžete použít vnoření dokumentů do maximálně sto vrstev.