MongoDB - MongoDB
Vývojáři | MongoDB Inc. |
---|---|
První vydání | 11. února 2009[1] |
Stabilní uvolnění | 4.4.2[2] / 18. listopadu 2020 |
Úložiště | |
Napsáno | C ++, Jít, JavaScript, Krajta |
Operační systém | Windows Vista a později, Linux, OS X 10.7 a novější, Solaris,[3] FreeBSD[4] |
K dispozici v | Angličtina |
Typ | Dokumentově orientovaná databáze |
Licence | Zdroj dostupný |
webová stránka | www |
MongoDB je napříč platformami dokumentově orientovaná databáze program. Klasifikováno jako NoSQL databázový program, který MongoDB používá JSON podobné dokumenty s volitelnými schémata. MongoDB je vyvíjen MongoDB Inc. a licencován na základě veřejné licence na straně serveru (SSPL).
Dějiny
Softwarová společnost 10gen začala vyvíjet MongoDB v roce 2007 jako součást plánovaného platforma jako služba produkt. V roce 2009 se společnost přesunula k vývojovému modelu s otevřeným zdrojovým kódem, přičemž společnost nabízí komerční podporu a další služby. V roce 2013 společnost 10gen změnila svůj název na MongoDB Inc.[5]
Dne 20. října 2017 se společnost MongoDB stala veřejně obchodovanou společností, která je na NASDAQ uvedena jako MDB s cenou IPO 24 $ za akcii.[6]
Dne 30. října 2019 se společnost MongoDB spojila s Cloud Alibaba, který nabídne svým zákazníkům řešení MongoDB jako služba. Zákazníci mohou využít spravovanou nabídku z globálních datových center BABA.[7]
Verze | Datum vydání | Poznámky k funkcím | Odkazy |
---|---|---|---|
1.0 | Únor 2009 | ||
1.2 | Prosince 2009 |
| [8] |
1.4 | Březen 2010 | [9] | |
1.6 | Srpna 2010 |
| [10] |
1.8 | Březen 2011 | [11] | |
2.0 | Září 2011 | [12] | |
2.2 | Srpna 2012 | [13] | |
2.4 | Březen 2013 |
| [14] |
2.6 | 8. dubna 2014 |
| [15] |
3.0 | 3. března 2015 |
| [16] |
3.2 | 8. prosince 2015 |
| [17] |
3.4 | 29. listopadu 2016 |
| [18] |
3.6 | Listopad 2017 | [19] | |
4.0 | Červen 2018 | [20] | |
4.2 | Srpna 2019 | [21] | |
4.4 | Červenec 2020 | [22] |
Hlavní rysy
Ad-hoc dotazy
MongoDB podporuje pole, rozsah dotazu, a regulární výraz vyhledávání.[23] Dotazy mohou vracet konkrétní pole dokumentů a také obsahovat uživatelem definované JavaScript funkce. Dotazy lze také nakonfigurovat tak, aby vrátily náhodný vzorek výsledků dané velikosti.
Indexování
Pole v dokumentu MongoDB lze indexovat pomocí primárních a sekundárních indexů.
Replikace
MongoDB poskytuje vysokou dostupnost s replikami.[24] Sada replik se skládá ze dvou nebo více kopií dat. Každý člen sady replik může kdykoli působit v roli primární nebo sekundární repliky. Ve výchozím nastavení jsou všechny zápisy a čtení prováděny na primární replice. Sekundární repliky udržují kopii dat primární pomocí integrované replikace. Když selže primární replika, sada replik automaticky provede volební proces, aby určila, která sekundární by se měla stát primární. Sekundární služby mohou volitelně obsluhovat operace čtení, ale tato data jsou ve výchozím nastavení pouze konzistentní.
Vyrovnávání zatížení
MongoDB škáluje horizontálně pomocí střep.[25] Uživatel si vybere klíč shard, který určuje, jak budou data v kolekci distribuována. Data jsou rozdělena do rozsahů (na základě klíče horizontálního oddílu) a distribuována do více horizontálních oddílů. (Střep je mistr s jednou nebo více replikami.). Alternativně lze klíč fragmentu hash mapovat na horizontální oddíl - což umožňuje rovnoměrnou distribuci dat.
MongoDB může běžet na více serverech, vyvážení zátěže nebo duplikování dat, aby byl systém v provozu v případě selhání hardwaru.
Ukládání souborů
MongoDB lze použít jako souborový systém, volala GridFS, s funkcí vyrovnávání zatížení a replikace dat na více počítačích pro ukládání souborů.
Tato funkce se nazývá mřížkový souborový systém,[26] je součástí ovladačů MongoDB. MongoDB vystavuje vývojářům funkce pro manipulaci se soubory a jejich obsah. GridFS je přístupný pomocí nástroje mongofiles nebo pluginů pro Nginx[27] a lighttpd.[28] GridFS rozděluje soubor na části nebo bloky a ukládá každý z těchto bloků jako samostatný dokument.[29]
Agregace
MongoDB poskytuje tři způsoby provedení agregace: agregační kanál, funkce redukce mapy a jednoúčelové agregační metody.[30]
Zmenšit mapu lze použít pro dávkové zpracování dat a agregační operace. Ale podle dokumentace MongoDB poskytuje agregační potrubí lepší výkon pro většinu agregačních operací.[31]
Agregační rámec umožňuje uživatelům získat druh výsledků, pro které SQL Je použita klauzule GROUP BY. Agregační operátory lze spojit dohromady a vytvořit kanál - analogicky k Unixové trubky. Rámec agregace zahrnuje operátor vyhledávání $, který může spojovat dokumenty z více sbírek, a také statistické operátory, jako je standardní odchylka.
Spuštění JavaScriptu na straně serveru
JavaScript lze použít v dotazech, agregačních funkcích (např MapReduce ) a odeslat přímo do databáze, která má být spuštěna.
Limitované sbírky
MongoDB podporuje kolekce pevné velikosti, které se nazývají limitované kolekce. Tento typ kolekce udržuje pořadí vložení a po dosažení zadané velikosti se chová jako a kruhová fronta.
Transakce
MongoDB tvrdí, že podporuje transakce ACID s více dokumenty od vydání 4.0 v červnu 2018.[32] Bylo zjištěno, že toto tvrzení není pravdivé, protože MongoDB porušuje izolace snímků.[33]
Edice
Komunitní server MongoDB
Komunitní vydání MongoDB je zdarma a je k dispozici pro Windows, Linux a OS X.[34]
Podnikový server MongoDB
MongoDB Enterprise Server je komerční vydání MongoDB, které je k dispozici jako součást předplatného MongoDB Enterprise Advanced.[35]
Atlas MongoDB
MongoDB je také k dispozici jako plně spravovaná služba na vyžádání. MongoDB Atlas běží na AWS, Microsoft Azure a Google Cloud Platform.[36]
Architektura
Přístupnost programovacího jazyka
MongoDB má oficiální ovladače pro hlavní programovací jazyky a vývojová prostředí.[37] Existuje také velké množství neoficiálních nebo komunitně podporovaných ovladačů pro další programovací jazyky a rámce.
Přístup bez serveru
MongoDB steh[38] poskytuje bez serveru přístup k MongoDB a dalším službám. Klientské knihovny jsou k dispozici pro JavaScript,[39] iOS,[40] a Android.[41]
Správa a grafické rozhraní
Primárním rozhraním k databázi byl mongo shell. Od verze MongoDB 3.2 je MongoDB Compass představen jako nativní grafické uživatelské rozhraní. Existují produkty a projekty třetích stran, které nabízejí uživatelská rozhraní pro správu a prohlížení dat.[42]
Licencování
Komunitní server MongoDB
Od října 2018 je MongoDB vydáván pod licencí Server Side Public License (SSPL), licencí vyvinutou v rámci projektu. Nahrazuje GNU Affero General Public License, a je téměř totožný s GNU General Public License verze 3, ale vyžaduje, aby ti, kdo software veřejně zpřístupňují jako součást „služby“, museli na základě této licence zpřístupnit celý zdrojový kód služby.[43][44] SSPL byl předložen k certifikaci Open Source Initiative ale později stažen.[45] Jazykové ovladače jsou k dispozici pod Licence Apache. Kromě toho společnost MongoDB Inc. nabízí proprietární licence pro MongoDB. Poslední verze licencované jako AGPL verze 3 jsou 4.0.3 (stabilní) a 4.1.4.
MongoDB byl odstraněn z Debian, Fedora a Red Hat Enterprise Linux distribuce kvůli změně licencí. Fedora zjistila, že SSPL verze 1 není svobodná softwarová licence, protože je „záměrně vytvořena tak, aby byla agresivně diskriminační“ vůči komerčním uživatelům.[46][47]
Hlášení chyb a kritika
Bezpečnostní
Vzhledem k výchozí konfiguraci zabezpečení MongoDB, která umožňuje komukoli úplný přístup k databázi, byla odcizena data z desítek tisíc instalací MongoDB. Kromě toho mnoho serverů MongoDB bylo držen za výkupné.[48][49]
Od vydání MongoDB 2.6 se binární soubory z oficiálních balíků RPM a DEB MongoDB váží na localhost ve výchozím stavu. Od MongoDB 3.6 bylo toto výchozí chování rozšířeno na všechny balíčky MongoDB napříč všemi platformami. Výsledkem bude, že všechna síťová připojení k databázi budou odepřena, pokud to není výslovně nakonfigurováno správcem.[50]
Technická kritika
V některých scénářích selhání, kdy aplikace může přistupovat ke dvěma odlišným procesům MongoDB, ale tyto procesy k sobě nemají přístup, je možné, aby MongoDB vrátil zastaralá čtení. V tomto scénáři je také možné, aby MongoDB vrátil zpět potvrzené zápisy.[51] Tento problém byl vyřešen od verze 3.4.0 vydané v listopadu 2016[52] (a zpětně portováno na v3.2.12).[53]
Před verzí 2.2, zámky byly implementovány na bázi jednotlivých serverů. Ve verzi 2.2 byly zámky implementovány na úrovni databáze.[54] Od verze 3.0[55] byly zavedeny zásuvné úložné moduly a každý úložný modul může implementovat zámky odlišně.[55] S MongoDB 3.0 jsou zámky implementovány na úrovni kolekce pro úložný modul MMAPv1,[56] zatímco WiredTiger storage engine používá optimistický protokol souběžnosti, který účinně zajišťuje uzamčení na úrovni dokumentu.[57] I ve verzích starších než 3.0 je jedním z přístupů ke zvýšení souběžnosti použití střep.[58] V některých situacích se čtení a zápisy uzamknou. Pokud MongoDB předpovídá, že stránka pravděpodobně nebude v paměti, operace načtou svůj zámek při načítání stránek. Použití výnosu zámku se v 2.2 výrazně rozšířilo.[59]
Až do verze 3.3.11 nemohl MongoDB dělat kompletace třídění na základě a bylo omezeno na bajtové srovnání přes memcmp, které by při použití s kódováním Unicode neposkytlo správné řazení pro mnoho neanglických jazyků. Problém byl opraven 23. srpna 2016.
Před MongoDB 4.0 nebyly dotazy na index atomové. Dokumenty, které byly aktualizovány, když byl spuštěn dotaz, mohly chybět.[60] Zavedení obavy ze čtení snímků v MongoDB 4.0 tento jev eliminovalo.[61]
Ačkoli MongoDB tvrdí v nedatovaném článku s názvem „MongoDB a Jepsen“[62] že jejich databáze prošla testy společnosti Jepsen společnosti Distributed Systems Safety Research, které nazvala „nejtěžší testy bezpečnosti, správnosti a konzistence dat v tomto odvětví“, zveřejnil Jepsen v květnu 2020 článek, ve kterém uvedl, že MongoDB 3.6.4 ve skutečnosti testy neprošel, a že novější MongoDB 4.2.6 má více problémů, včetně „retrocauzálních transakcí“, kdy transakce obrátí pořadí, takže čtení může vidět výsledek budoucího zápisu.[63][64]. Jepsen ve své zprávě uvedl, že MongoDB vynechal jakoukoli zmínku o těchto zjištěních na stránce MongoDB „MongoDB and Jepsen“.
Přední uživatelé
Je známo, že MongoDB používá Barclays; Bosch; Cisco; the Město Chicago; Kodakemy; Coinbase; eBay; Foursquare; HSBC; IBM; Orange S.A.; Sega; The Gap, Inc.; Uber; Urban Outfitters; a Přistěhovalectví a vymáhání cel v USA.[65][66]
Svět MongoDB
MongoDB World je každoroční konference vývojářů pořádaná společností MongoDB, Inc.[67]
Rok | Termíny | Město | Místo | Poznámky |
---|---|---|---|---|
2014 [68] | 23. - 25. června | New York | Sheraton Times Square Hotel | |
2015 [69] | 1. – 2. Června | New York | Sheraton Times Square Hotel | |
2016 [70] | 28. – 29. Června | New York | New York Hilton Midtown | |
2017 [71] | 20. – 21. Června | Chicago | Hyatt Regency Chicago | První rok ne v New Yorku |
2018 [72] | 26. - 27. června | New York | New York Hilton Midtown | |
2019 [73] | 17. – 19. Června | New York | New York Hilton Midtown | |
2020 [74] | 4. – 6. Května | New York | New York Hilton Midtown | Zrušeno z důvodu Pandemie covid-19 ale konal se zcela online na rozdíl od osobní konference. |
Viz také
- Apache Cassandra
- BSON, binární JSON formát, který MongoDB používá pro ukládání a přenos dat
- Seznam implementací JavaScriptu na straně serveru
- ZNAMENAT, a zásobník řešení pomocí MongoDB jako databáze
- Skriptování na straně serveru
- TokuMX, vidlice MongoDB se silnější konzistencí a novými indexovými strukturami
Reference
- ^ „State of MongoDB March, 2010“. DB motory. Archivováno z původního dne 18. září 2017. Citováno 5. července 2017.
- ^ „Poznámky k verzi pro MongoDB 4.4“. MongoDB. Citováno 18. listopadu 2020.
- ^ „Jak nastavit klastr MongoDB NoSQL pomocí zón Oracle Solaris“. Věštec. Archivováno od originálu 12. srpna 2017. Citováno 5. července 2017.
- ^ „Jak na to: MongoDB na FreeBSD 10.x“. Zprávy FreeBSD. Archivováno z původního 28. prosince 2017. Citováno 5. července 2017.
- ^ „10gen zahrnuje to, co vytvořil, stává se MongoDB Inc“. Gigaom. Archivováno z původního 5. března 2016. Citováno 29. ledna 2016.
- ^ Witkowski, Wallace (21. října 2017). „Akcie MongoDB vzrostly o 34% v první den obchodování nad zvýšenou cenou IPO“. MarketWatch. Dow Jones. Archivováno z původního dne 26. února 2018. Citováno 26. února 2018.
- ^ Betz, Brandy (30. října 2019). „Týmy MongoDB s cloudem Alibaba“. Hledám Alfu. Citováno 31. října 2019.
- ^ „Poznámky k verzi MongoDB 1.2.x“. mongodb.com.
- ^ „Poznámky k verzi MongoDB 1.4“. mongodb.com.
- ^ „Poznámky k verzi MongoDB 1.6“. mongodb.com.
- ^ „Poznámky k verzi MongoDB 1.8“. mongodb.com.
- ^ „Poznámky k verzi pro MongoDB 2.0“. mongodb.com.
- ^ „Poznámky k verzi pro MongoDB 2.2“. mongodb.com.
- ^ „Poznámky k verzi pro MongoDB 2.4“. mongodb.com.
- ^ „Poznámky k verzi MongoDB 2.6“. mongodb.com.
- ^ „Poznámky k verzi MongoDB 3.0“. mongodb.com.
- ^ „Poznámky k verzi MongoDB 3.2“. mongodb.com.
- ^ „Poznámky k verzi pro MongoDB 3.4“. mongodb.com.
- ^ „Poznámky k verzi pro MongoDB 3.6“. mongodb.com.
- ^ „Poznámky k verzi pro MongoDB 4.0“. mongodb.com.
- ^ „Poznámky k verzi pro MongoDB 4.2“. mongodb.com.
- ^ „Poznámky k verzi pro MongoDB 4.4“. mongodb.com.
- ^ Davis Kerby. "Proč je MongoDB způsob, jak jít?". DZone. Archivováno od originálu 12. června 2018. Citováno 6. července 2017.
- ^ „Směšně rychlé zotavení repliky MongoDB, část 1 ze 2“. ClusterHQ. Archivovány od originál 30. října 2017.
- ^ „Proměna sady MongoDB repliky na shardovaný klastr“. Několik devítek. Archivováno z původního dne 25. listopadu 2016.
- ^ „GridFS & MongoDB: klady a zápory“. Komponovat. Archivováno od originálu 10. září 2017.
- ^ „NGINX plugin pro zdrojový kód MongoDB“. GitHub. Archivováno od originálu 11. dubna 2016. Citováno 10. září 2016.
- ^ "plugin lighttpd pro zdrojový kód MongoDB". Bitbucket. Archivováno od originálu 7. srpna 2011. Citováno 28. června 2010.
- ^ Malick Md. "Přehled MongoDB". Expertstown. Archivováno z původního 5. března 2014. Citováno 27. února 2014.
- ^ „Agregace - MongoDB Manual“. docs.mongodb.com. Archivováno z původního 29. listopadu 2018. Citováno 14. srpna 2018.
- ^ „Map-Reduce - MongoDB Manual“. docs.mongodb.com. Archivováno z původního dne 14. srpna 2018. Citováno 14. srpna 2018.
- ^ „MongoDB pohání NoSQL hlouběji do podnikových příležitostí“. 27. června 2018. Archivováno od originálu 7. srpna 2018. Citováno 7. srpna 2018.
- ^ MongoDB 4.2.6
- ^ „Centrum stahování MongoDB“. MongoDB. Archivováno z původního dne 14. srpna 2018. Citováno 14. srpna 2018.
- ^ „Centrum stahování MongoDB“. MongoDB. Archivováno z původního dne 14. srpna 2018. Citováno 14. srpna 2018.
- ^ „MongoDB zavádí globální klastry, aby kontrolu nad geografickými daty dostal na dosah kdokoli“. MongoDB. Archivováno z původního dne 27. června 2018. Citováno 27. června 2018.
- ^ MongoDB. „GitHub - mongodb / mongo“. GitHub. Archivováno z původního 29. července 2017. Citováno 6. července 2017.
- ^ Simon Bisson. „MongoDB Stitch: Výpočet bez serveru s velkým rozdílem“. ZDNet. Archivováno z původního dne 4. dubna 2018. Citováno 13. září 2018.
- ^ MongoDB. „SDK SDK MongoDB Stitch“. GitHub.
- ^ MongoDB. „MongoDB Stitch iOS SDK“. GitHub.
- ^ MongoDB. „MongoDB Stitch Android SDK“. GitHub.
- ^ Mami, Jasone. „Vizualizace vašich dat pomocí MongoDB Compass“. Dzone. Dzone.com. Archivováno od originálu 22. května 2018. Citováno 6. července 2017.
- ^ Baer, Tony. „Je na řadě MongoDB, aby změnil svoji licenci open source“. ZDNet. Archivováno od originálu 31. října 2018. Citováno 16. října 2018.
- ^ „MongoDB přepíná svoji open source licenci“. TechCrunch. Archivováno z původního dne 16. října 2018. Citováno 16. října 2018.
- ^ Staff, Ars (16. října 2019). „V roce 2019 změnilo kurz několik společností s otevřeným zdrojovým kódem - je to správný krok?“. Ars Technica.
- ^ Vaughan-Nichols, Steven J. „MongoDB“ open-source „Veřejná licence na straně serveru zamítnuta“. ZDNet. Archivováno z původního dne 16. ledna 2019. Citováno 17. ledna 2019.
- ^ „Změny licencí MongoDB vedly Red Hat k vyřazení databáze z nejnovější verze operačního systému serveru“. GeekWire. 16. ledna 2019. Archivováno z původního dne 17. ledna 2019. Citováno 17. ledna 2019.
- ^ Krebs, Brian. „Vyděrači utírají tisíce databází, oběti, které platí, se ztuhnou“. krebsonsecurity.com. Brian Krebs. Archivováno od originálu 11. ledna 2017. Citováno 11. ledna 2017.
- ^ Constantin, Lucian. „Skupiny ransomwaru odstranily více než 10 000 databází MongoDB“. Počítačový svět. IDG. Archivováno od originálu 10. ledna 2017. Citováno 11. ledna 2017.
- ^ "MongoDB Bind IP Compatibility". MongoDB. MongoDB. Archivováno od originálu 6. března 2019. Citováno 5. března 2019.
- ^ Kyle Kingsbury (20. dubna 2015). „Říkej mi možná: MongoDB zastaralý čte“. Archivováno z původního dne 15. srpna 2015. Citováno 4. července 2015.
- ^ „Poznámky k verzi pro MongoDB 3.4“. Manuál MongoDB. Archivováno z původního dne 14. srpna 2018. Citováno 6. dubna 2018.
- ^ Kingsbury, Kyle (7. února 2017). „MongoDB 3.4.0-rc3“. Jepsen. Archivováno z původního 23. října 2017.
- ^ „Atomicita, izolace a souběžnost v MongoDB“. scalegrid.io. Archivováno od originálu 10. září 2017. Citováno 28. června 2017.
- ^ A b „MongoDB lze připojit k úložným modulům“. datanami.com. 5. března 2015. Archivováno z původního 4. července 2017. Citováno 28. června 2017.
- ^ Arborian Consulting. „MongoDB, MMAPv1, WiredTiger, zamykání a fronty“. Arborian Consulting. Archivováno od originálu 19. června 2017. Citováno 28. června 2017.
- ^ Kenny Gorman. „MongoDB 3.0 WiredTiger Compression and Performance“. Objectrocket.com/. Archivováno od originálu 16. června 2017. Citováno 28. června 2017.
- ^ Mikita Manko. „Úzká místa výkonu MongoDB, optimalizační strategie pro MongoDB“. mikitamanko.com. Archivováno z původního 19. července 2017. Citováno 5. července 2017.
- ^ scalegrid.io. „Atomicita, izolace a souběžnost v MongoDB“. scalegrid.io. Archivováno od originálu 10. září 2017. Citováno 5. července 2017.
- ^ Glasser, David (7. června 2016). „Dotazy MongoDB ne vždy vrátí všechny odpovídající dokumenty!“. Blog Meteor.
- ^ „Dokumenty MongoDB“. Archivováno od originálu 6. března 2019. Citováno 5. března 2019.
- ^ „MongoDB a Jepsen“. MongoDB.
- ^ Allen, Jonathan (22. května 2020). „Jepsen zpochybňuje nároky na konzistenci dat MongoDB“. InfoQ.
- ^ Kingsbury, Kyle (15. května 2020). „MongoDB 4.2.6“. Jepsen.io.
- ^ Esayas Aloto (4. listopadu 2015). „Kdo používá MongoDB a proč?“. Datavail. Archivováno od originálu 12. listopadu 2018. Citováno 12. listopadu 2018.
- ^ „Shrnutí smlouvy“. www.usaspending.gov. Citováno 29. března 2020.
- ^ „Svět MongoDB“. www.mongodb.com. Archivováno z původního dne 26. dubna 2019. Citováno 10. dubna 2019.
- ^ „Oznámení Mongo 2014“. MongoDB.
- ^ „Oznámení Mongo 2015“. MongoDB.
- ^ „Oznámení Mongo 2016“. MongoDB.
- ^ „Oznámení Mongo 2017“. icrunchdata.
- ^ „Retrospektiva Mongo 2018“. KenWalger.
- ^ „Mongo 2019 Sneak Peek“. MongoDB.
- ^ „Akce Mongo 2020“. Eventil.
Bibliografie
- Bankéř, Kyle (28. března 2011), MongoDB v akci (1. vyd.), Manning, str. 375, ISBN 978-1-935182-87-0
- Chodorow, Kristina; Dirolf, Michael (23. září 2010), MongoDB: Definitivní průvodce (1. vyd.), O'Reilly Media, str. 216, ISBN 978-1-4493-8156-1
- Pirtle, Mitch (3. března 2011), MongoDB pro vývoj webových aplikací (1. vyd.), Addison-Wesley Professional, str. 360, ISBN 978-0-321-70533-4
- Hawkins, Tim; Plug, Eelco; Membrey, Peter (26. září 2010), The Definitive Guide to MongoDB: The NoSQL Database for cloud and desktop computing (1. vyd.), Apress, str. 350, ISBN 978-1-4302-3051-9