MongoDB
![]() | |
Vývojář | MongoDB Inc. |
---|---|
První vydání | 2009 |
Aktuální verze | 9.3.0 / 9.2.4 / 9.1.9 / 9.0.13 / 8.4.17 (2013/09/09) |
Připravovaná verze | 9.4 |
Operační systém | multiplatformní |
Vyvíjeno v | C++, JavaScript, C a Python |
Typ softwaru | Document-oriented database |
Licence | GNU AGPL v3.0 (drivers: Apache license) |
Web | www |
Některá data mohou pocházet z datové položky. |
MongoDB (z anglického humongous, česky obrovský) je multiplatformní dokumentová databáze. Řadí se mezi NoSQL databáze a místo tradičních relačních databází využívajících tabulky používá dokumenty podobné formátu JSON (MongoDB formát nazývá BSON) a dynamické databázové schéma, které umožňuje vytváření a integraci dat pro aplikace jednodušeji a rychleji. Jedná se o open source software vydaný pod GNU Affero General Public License a Apache licencemi.
MongoDB byla původně vyvinuta softwarovou společností 10gen (nyní MongoDB Inc.) v listopadu 2007 jako komponenta plánovaného platform as a service produktu. V roce 2009 se z projektu stal opensource. 10gen nabízel komerční podporu a další služby.[1]Od té doby bylo MongoDB implementováno jako backend řešení množstvím velikých stránek a služeb včetně stránek Craiglist, eBay, Foursquare, SourceForge, Viacom a New York Times. MongoDB je nejpopulárnější NoSQL databázový systém.
Licence a podpora
MongoDB je k dispozici zdarma pod GNU Affero General Public License.[2] Jazykové ovladače jsou dostupné pod Apache Licence. Dále MongoDB Inc. nabízí proprietární licence pro MongoDB.[1]
Hlavní funkce
Mezi hlavní funkce patří:[3]
- Orientace na dokumenty
- Místo rozpadu bussiness subjektu do množství relačních struktur, MongoDB může ukládat bussiness subject v minimálním množství dokumentů. Například místo ukládání informace o názvu a autorovi knihy ve dvou relačních strukturách, můžou být název, autor a ostatní informace týkající se knihy v jednom dokumentu s názvem Kniha, který je více intuitivní a často se s ním lépe pracuje.[4]
- Ad hoc dotazy
- MongoDB podporuje hledání podle pole, rozsahové dotazy a hledání podle regulárních výrazů. Dotazy mohou vracet specifická pole dokumentu a také obsahovat uživatelsky definované JavaScriptové funkce.
- Indexace
- Jakékoliv pole v MongoDB dokumentu může být indexované (Indexy v MongoDB jsou koncepčně stejné jako ty v relačních databázích). Jsou dostupné i sekundární indexy.
- Replikace
- MongoDB poskytuje vysokou dostupnost s pomocí sady replik (replica sets).[5]. Sada replik obsahuje dvě nebo více kopií dat. Každý člen sady replik může kdykoliv zastávat funkci primární nebo sekundární repliky. Primární replika implicitně provádí všechny čtecí a zapisovací operace. Sekundární repliky udržují kopii dat primární repliky s využitím vestavěné replikace. Když primární replika selže, sada replik automaticky provede proces výběru náhrady ze sekundárních replik. Sekundární repliky mohou také provádět čtecí operace, ale data jsou nakonec vždy konzistentní.
- Vyvažování zátěže
- MongoDB se škáluje horizontálně pomocí shardingu.[6] Uživatel zvolí shard klíč, který rozhodne, jak bude kolekce dat distribuována. Data se dělí na rozsahy (podle shard klíče) a jsou distribuována mezi více shardů. (Shard existuje hlavní s jedním nebo více otroky.)
- MongoDB může běžet na více serverech a vyvažovat zátěž nebo duplikovat data aby systém dále běžel v případě chyby hardwaru. Automatická konfigurace je jednoduchá na nasazení a nové počítače mohou být přidány při běhu databáze.
- Ukládání souborů
- MongoDB může být použit jako souborový systém a tím využít vyvažování zátěže a replikace dat přes více počítačů.
- Tato funkce, nazývaná GridFS[7], je zahrnuta v MongoDB ovladačích a jednoduše dostupná pro vývojové jazyky. MongoDB umožňuje vývojářům využívat funkce pro manipulaci souborů a obsahu. GridFS je například využit v pluginech NGINX[8] a lighttpd.[9] Místo ukládání souborů v jednom dokumentu, GridFS soubor rozdělí na více částí (kusů) a každou část uloží jako nezávislý dokument. [10]
- V MongoDB systému s více počítači mohou být soubory vícenásobně distribuovány a kopírovány v rámci více počítačů transparentně a tím vytvořit systém, který dokáže vyvažovat zátěž a zvládnout případné chyby.
- Agregace
- MapReduce na dávkové zpracování dat a agregující operace. Agregační framework umožňuje uživatelům získat stejný druh výsledků jako na který se používá SQL GROUP BY příkaz.
- Vykonávání JavaScriptu na straně serveru
- JavaScript může být použit v dotazech, agregačních funkcích (jako MapReduce) a být přímo odeslán do databáze, aby se provedl.
- Omezené kolekce
- MongoDB podporuje kolekce s omezenou velikostí a nazývá je omezené kolekce (capped collections). Tento typ kolekcí udržuje pořadí vložení a pokud je specifikovaní velikost naplněna, chová se jako kruhová fronta.
Jazyková podpora
MongoDB oficiálně podporuje velké množství populárních programovacích jazyků a vývojových prostředí.[11] Dále také existuje velké množství neoficiálních a komunitních ovladačů. [12]
Správa
Oficiální MongoDB nástroje
V MongoDB instalaci jsou k dispozici následující příkazy:
- mongo
- MongoDB nabízí interaktivní shell nazývaný mongo,[13], který umožňuje vývojářům zobrazovat, vkládat, mazat a aktualizovat data v jejich databázi, ale také získat informace o replikaci, nastavit sharding, vypnout servery, vykonat JavaScript a mnohem více.
- Administrativní informace jsou také zpřístupněny přes webové rozhraní,[14]. Jedná se o jednoduchou webovou stránku, která poskytuje informace o současném stavu serveru. Implicitně je rozhraní dostupné pod portem o 1000 vyšším než databázový port (28017).
- mongostat
- mongostat[15] je nástroj příkazové řádky, který zobrazí shrnující informace pro běžící MongoDB instanci: kolik vkládání, aktualizací, mazání, dotazů a příkazů bylo provedeno. Dále také informace o tom, kolik procent času byla databáze zamčena a kolik využívá paměti. Tento nástroj je podobný UNIXovému/LINUXovému nástroji vmstat.
- mongotop
- mongotop[16] je nástroj příkazové řádky poskytuje možnost sledování kolik času MongoDB instance strávila čtením a zápisem dat. Tento nástroj je podobný UNIXovému/LINUXovému nástroji top.
- mongosniff
- mongosniff[17] je nástroj příkazové řádky poskytující nízko úrovňové sledování aktivit databáze skrze monitorování síťového provozu proudícího do a od MongoDB.
mongosniff vyžaduje Libpcap síťovou knihovnu dostupnou pouze na systémech založených na UNIXu. Multiplatformní alternativa je Wireshark, který podporuje MongoDB síťový protokol.
- mongooplog
- mongooplog[18] je jednoduchý nástroj, který spojí operace z replikačního oplogu vzdáleného serveru a aplikuje ho na lokální server.
- mongofiles
- mongofiles[19] nástroj umožňuje manipulovat soubory v MongoDB instanci v GridFS[20] objektech přes příkazovou řádku. Je převážně užitečný jako rozhraní mezi objekty ukládané na souborový systém a GridFS.
- mongoimport, mongoexport
- mongoimport[21] je nástroj příkazové řádky pro import obsahu z JSON, CSV nebo TSV formátu vytvořených mongoexport[22] nebo jako exporty nástrojů třetích stran.
- mongodump, mongorestore
- mongodump[23] je nástroj příkazové řádky pro vytváření binárních exportů obsahu MongoDB databáze. mongorestore[24] může být použit pro obnovení databáze z mongodump.
Odkazy
Reference
- ↑ a b 10gen embraces what it created, becomes MongoDB Inc. [online]. [cit. 2013-08-27]. Dostupné online.
- ↑ The MongoDB NoSQL Database Blog, The AGPL
- ↑ MongoDB Developer Manual
- ↑ Data Modeling for MongoDB
- ↑ [1]
- ↑ [2]
- ↑ GridFS article on MongoDB Developer's Manual
- ↑ NGINX plugin for MongoDB source code
- ↑ lighttpd plugin for MongoDB source code
- ↑ Expertstown - MongoDB overview
- ↑ MongoDB Drivers and Client Libraries [online]. Mongodb.org [cit. 2013-07-08]. Dostupné online.
- ↑ Community Supported Drivers [online]. Mongodb.org [cit. 2014-07-09]. Dostupné online.
- ↑ mongo - The Interactive Shell
- ↑ HTTP Console
- ↑ mongostat Manual
- ↑ mongotop Manual
- ↑ mongosniff Manual
- ↑ [3]
- ↑ [4]
- ↑ [5]
- ↑ mongoimport Manual
- ↑ mongoexport Manual
- ↑ mongodump Manual
- ↑ mongorestore Manual
Bibliografie
- HOBERMAN, Steve. Data Modeling for MongoDB. 1st. vyd. [s.l.]: Technics Publications, June 1, 2014. ISBN 978-1-935504-70-2. S. 226.
- BANKER, Kyle. MongoDB in Action. 1st. vyd. [s.l.]: Manning, March 28, 2011. ISBN 978-1-935182-87-0. S. 375.
- CHODOROW, Kristina; DIROLF, Michael. MongoDB: The Definitive Guide. 1st. vyd. [s.l.]: O'Reilly Media, September 23, 2010. ISBN 978-1-4493-8156-1. S. 216.
- PIRTLE, Mitch. MongoDB for Web Development. 1st. vyd. [s.l.]: Addison-Wesley Professional, March 3, 2011. ISBN 978-0-321-70533-4. S. 360.
- HAWKINS, Tim; PLUGGE, Eelco; MEMBREY, Peter. The Definitive Guide to MongoDB: The NoSQL Database for Cloud and Desktop Computing. 1st. vyd. [s.l.]: Apress, September 26, 2010. ISBN 978-1-4302-3051-9. S. 350.