Přeskočit na obsah

MongoDB

Z Wikipedie, otevřené encyklopedie
(rozdíl) ← Starší revize | zobrazit aktuální verzi (rozdíl) | Novější revize → (rozdíl)
MongoDB
[[Soubor:Logo|200px|alt=Logo|Logo]]
VývojářMongoDB Inc.
První vydání2009
Aktuální verze9.3.0 / 9.2.4 / 9.1.9 / 9.0.13 / 8.4.17 (2013/09/09)
Připravovaná verze9.4
Operační systémmultiplatformní
Vyvíjeno vC++, JavaScript, C a Python
Typ softwaruDocument-oriented database
LicenceGNU AGPL v3.0 (drivers: Apache license)
Webwww.mongodb.org
Některá data mohou pocházet z datové položky.

MongoDB (z humongous) je multiplatformní dokumentová databáze. Řadí se mezi NoSQL databáze a místo tradičních relačních databází využivajících tabulky používa 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ě vyvynuta 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, Foursquere, SourceForge, Viacom a New York Times. MongoDB je nejpopulárnější NoSQL databázový systém.

Licensing and support

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í funkcionalita

Mezi hlavní fuknce 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é (Indexi v MongoDB jsou koncepčně stejné jako ty v relačních databázích). Jsou dostupné a sekundární indexi.
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 otrokami.)
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žívát funkce pro manipulaci soubnorů 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žíz jako nezávyslí 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 vkladá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í koli č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í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

  1. a b 10gen embraces what it created, becomes MongoDB Inc. [online]. [cit. 2013-08-27]. Dostupné online. 
  2. The MongoDB NoSQL Database Blog, The AGPL
  3. MongoDB Developer Manual
  4. Data Modeling for MongoDB
  5. [1]
  6. [2]
  7. GridFS article on MongoDB Developer's Manual
  8. NGINX plugin for MongoDB source code
  9. lighttpd plugin for MongoDB source code
  10. Expertstown - MongoDB overview
  11. MongoDB Drivers and Client Libraries [online]. Mongodb.org [cit. 2013-07-08]. Dostupné online. 
  12. Community Supported Drivers [online]. Mongodb.org [cit. 2014-07-09]. Dostupné online. 
  13. mongo - The Interactive Shell
  14. HTTP Console
  15. mongostat Manual
  16. mongotop Manual
  17. mongosniff Manual
  18. [3]
  19. [4]
  20. [5]
  21. mongoimport Manual
  22. mongoexport Manual
  23. mongodump Manual
  24. 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.