![]() | |
![]() | |
Vyvojá? | MongoDB Inc. |
---|---|
První vydání | 2009 |
Aktuální verze | 8.2.0-rc0 (21. ?ervence 2025) |
Opera?ní systém | multiplatformní |
Vyvíjeno v | C++, JavaScript, C a Python |
Typ softwaru | NoSQL, dokumentově orientovaná databáze, systém ?ízení báze dat a source-available software |
Licence | SSPL v1 (drivers: Apache license) |
Web | www |
Některá data mohou pocházet z datové polo?ky. |
MongoDB (z anglického humongous, ?esky obrovsky) 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 nazyvá 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 vydany 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 platforma jako slu?ba 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 velikych 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ázovy systém.
Licence a podpora
[editovat | editovat zdroj]MongoDB je k dispozici zdarma pod licencí Server Side Public License (SSPL),[2] do ?íjna 2018 bylo dostupné pod GNU Affero General Public License.[3] Jazykové ovlada?e jsou dostupné pod Apache Licence. Dále MongoDB Inc. nabízí proprietární licence pro MongoDB.[1]
Hlavní funkce
[editovat | editovat zdroj]Mezi hlavní funkce pat?í:[4]
- 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, mohou byt název, autor a ostatní informace tykající se knihy v jednom dokumentu s názvem Kniha, ktery je více intuitivní a ?asto se s ním lépe pracuje.[5]
- Neobsahuje schéma
- Nepot?ebuje a ani nemá definované jednotné schéma. Ka?dy záznam m??e mít jinou strukturu bez nutnosti/mo?nosti zahrnout toto do návrhu schématu jak je tomu u rela?ních databází. Co? p?iná?í jednodu??í práci p?i ukládání dat. Na druhou stranu ale databáze nepomáhá validovat a udr?ovat v datech po?ádek - pokud si validaci nenapí?ete sami.
- Ad hoc dotazy
- MongoDB podporuje hledání podle pole, rozsahové dotazy a hledání podle regulárních vyraz?. Dotazy mohou vracet specifická pole dokumentu a také obsahovat u?ivatelsky definované JavaScriptové funkce.
- Indexace
- Jakékoliv pole v MongoDB dokumentu m??e byt 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).[6] Sada replik obsahuje dvě nebo více kopií dat. Ka?dy ?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 vybě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.[7] U?ivatel zvolí shard klí?, ktery 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 master s jedním nebo více slave.)
- 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 byt p?idány p?i běhu databáze.
- Ukládání soubor?
- MongoDB m??e byt pou?it jako souborovy systém a tím vyu?ít vyva?ování zátě?e a replikace dat p?es více po?íta??.
- Tato funkce, nazyvaná GridFS,[8] je zahrnuta v MongoDB ovlada?ích a jednodu?e dostupná pro vyvojové jazyky. MongoDB umo?ňuje vyvojá??m vyu?ívat funkce pro manipulaci soubor? a obsahu. GridFS je nap?íklad vyu?it v pluginech NGINX[9] a lighttpd.[10] 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ávisly dokument.[11]
- V MongoDB systému s více po?íta?i mohou byt 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, ktery 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 stejny druh vysledk? jako na ktery se pou?ívá SQL GROUP BY p?íkaz.
- Vykonávání JavaScriptu na straně serveru
- JavaScript m??e byt pou?it v dotazech, agrega?ních funkcích (jako MapReduce) a byt p?ímo odeslán do databáze, aby se provedl.
- Omezené kolekce
- MongoDB podporuje kolekce s omezenou velikostí a nazyvá 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.
Nedostatky, úskalí
[editovat | editovat zdroj]Díky svym vlastnostem má ale i ur?itá omezení, ?i nedostatky. Nap?íklad:
- Neexistuje podpora pro relace mezi záznamy (inner/left/rig-ht/outer join). Je t?eba si dělat ru?ně.
- ?patná podpora pro transakce.
- Neobsahuje pevné schéma, a s tím související validaci.
- ?ádná referen?ní integrita.
- Global write lock.
- ?ádná pokro?ilá správa cache, pou?ívá se disková cache z OS.
- Vět?í spot?eba místa na HDD kv?li nutné duplicitě.
Jazyková podpora
[editovat | editovat zdroj]MongoDB oficiálně podporuje velké mno?ství populárních programovacích jazyk? a vyvojovych prost?edí.[12] Dále také existuje velké mno?ství neoficiálních a komunitních ovlada??.[13]
Správa
[editovat | editovat zdroj]Oficiální MongoDB nástroje
[editovat | editovat zdroj]V MongoDB instalaci jsou k dispozici následující p?íkazy:
- mongo
- MongoDB nabízí interaktivní shell nazyvany mongo,[14] ktery umo?ňuje vyvojá??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í.[15] 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ázovy port (28017).
- mongostat
- mongostat[16] je nástroj p?íkazové ?ádky, ktery 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 podobny UNIXovému/LINUXovému nástroji vmstat.
- mongotop
- mongotop[17] 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 podobny UNIXovému/LINUXovému nástroji top.
- mongosniff
- mongosniff[18] 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?enych na UNIXu. Multiplatformní alternativa je Wireshark, ktery podporuje MongoDB sí?ovy protokol.
- mongooplog
- mongooplog[19] je jednoduchy nástroj, ktery spojí operace z replika?ního oplogu vzdáleného serveru a aplikuje ho na lokální server.
- mongofiles
- mongofiles[20] nástroj umo?ňuje manipulovat soubory v MongoDB instanci v GridFS[21] objektech p?es p?íkazovou ?ádku. Je p?evá?ně u?ite?ny jako rozhraní mezi objekty ukládané na souborovy systém a GridFS.
- mongoimport, mongoexport
- mongoimport[22] je nástroj p?íkazové ?ádky pro import obsahu z JSON, CSV nebo TSV formátu vytvo?enych mongoexport[23] nebo jako exporty nástroj? t?etích stran.
- mongodump, mongorestore
- mongodump[24] je nástroj p?íkazové ?ádky pro vytvá?ení binárních export? obsahu MongoDB databáze. mongorestore[25] m??e byt pou?it pro obnovení databáze z mongodump.
P?íklady NoSQL databází
[editovat | editovat zdroj]Odkazy
[editovat | editovat zdroj]Reference
[editovat | editovat zdroj]- ↑ a b 10gen embraces what it created, becomes MongoDB Inc. [online]. [cit. 2025-08-06]. Dostupné online.
- ↑ Server Side Public License [online]. MongoDB, 2025-08-06 [cit. 2025-08-06]. Dostupné online. (anglicky)
- ↑ The AGPL [online]. MongoDB Blog, 2025-08-06 [cit. 2025-08-06]. Dostupné online. (anglicky)
- ↑ MongoDB Developer Manual
- ↑ Data Modeling for MongoDB. www.technicspub.com [online]. [cit. 2025-08-06]. Dostupné v archivu po?ízeném dne 2025-08-06.
- ↑ Replication - MongoDB Manual v7.0. www.mongodb.com [online]. [cit. 2025-08-06]. Dostupné online. (anglicky)
- ↑ Sharding - MongoDB Manual v7.0. www.mongodb.com [online]. [cit. 2025-08-06]. Dostupné online. (anglicky)
- ↑ GridFS [online]. MongoDB Manual [cit. 2025-08-06]. Dostupné online. (anglicky)
- ↑ NGINX plugin for MongoDB source code
- ↑ lighttpd plugin for MongoDB source code. bitbucket.org [online]. [cit. 2025-08-06]. Dostupné v archivu po?ízeném z originálu dne 2025-08-06.
- ↑ Expertstown - MongoDB overview
- ↑ MongoDB Drivers and Client Libraries [online]. Mongodb.org [cit. 2025-08-06]. Dostupné online.
- ↑ Community Supported Drivers [online]. Mongodb.org [cit. 2025-08-06]. Dostupné online.
- ↑ mongo - The Interactive Shell. www.mongodb.org [online]. [cit. 2025-08-06]. Dostupné v archivu po?ízeném z originálu dne 2025-08-06.
- ↑ HTTP Console. www.mongodb.org [online]. [cit. 2025-08-06]. Dostupné v archivu po?ízeném dne 2025-08-06.
- ↑ mongostat [online]. MongoDB Manual [cit. 2025-08-06]. Dostupné online. (anglicky)
- ↑ mongotop [online]. MongoDB Manual [cit. 2025-08-06]. Dostupné online. (anglicky)
- ↑ mongosniff [online]. MongoDB Manual [cit. 2025-08-06]. Dostupné online. (anglicky)
- ↑ MongoDB Package Components - MongoDB Manual v7.0. www.mongodb.com [online]. [cit. 2025-08-06]. Dostupné online. (anglicky)
- ↑ mongofiles [online]. MongoDB Manual [cit. 2025-08-06]. Dostupné online. (anglicky)
- ↑ GridFS for Self-Managed Deployments - MongoDB Manual v7.0. www.mongodb.com [online]. [cit. 2025-08-06]. Dostupné online. (anglicky)
- ↑ mongoimport [online]. MongoDB Manual [cit. 2025-08-06]. Dostupné online. (anglicky)
- ↑ mongoexport [online]. MongoDB Manual [cit. 2025-08-06]. Dostupné online. (anglicky)
- ↑ mongodump [online]. MongoDB Manual [cit. 2025-08-06]. Dostupné online. (anglicky)
- ↑ mongorestore Manual
Literatura
[editovat | editovat zdroj]- 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.
Související ?lánky
[editovat | editovat zdroj]Externí odkazy
[editovat | editovat zdroj]Obrázky, zvuky ?i videa k tématu MongoDB na Wikimedia Commons