MongoDB
| MongoDB
| |
|---|---|
| [[Datei:Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)|150px]] | |
| Basisdaten
| |
| Maintainer | Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value) |
| Entwickler | MongoDB, Inc. |
| Erscheinungsjahr | 2009 |
| Aktuelle Version | Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value) (Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)) |
| Aktuelle Vorabversion | Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value) (Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)) |
| Betriebssystem | Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value) |
| Programmiersprache | Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value) |
| Kategorie | Dokumentenorientierte Datenbank |
| Lizenz | Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value) |
| www.mongodb.com | |
MongoDB (abgeleitet vom engl. humongous, „gigantisch“) ist ein dokumentenorientiertes NoSQL-Datenbankmanagementsystem, das in der Programmiersprache C++ geschrieben ist.<ref name="mongowebsite">MongoDB. Archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am 3. Dezember 2013; abgerufen am 20. November 2013.</ref><ref>MongoDB-Website. Abgerufen am 22. Juni 2012 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Sie kann Sammlungen von JSON-ähnlichen Dokumenten verwalten. So können viele Anwendungen Daten auf natürlichere Weise modellieren, da die Daten zwar in komplexen Hierarchien verschachtelt werden können, dabei aber immer abfragbar und indizierbar bleiben.
Die Entwicklung von MongoDB begann im Oktober 2007 durch das Unternehmen 10gen, welches am 27. August 2013 in MongoDB, Inc. umbenannt wurde.<ref>10gen Announces Company Name Change to MongoDB, Inc. 27. August 2013, abgerufen am 28. August 2013.</ref> Die Erstveröffentlichung fand im Februar 2009 statt.<ref name="release">MongoDB Blog - March 2010. Abgerufen am 22. Juni 2012 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> MongoDB wurde bis zum 15. Oktober 2018 als Freie Software veröffentlicht und ist seitdem unter der proprietären SSPL verfügbar.<ref>MongoDB now released under the Server Side Public License. Abgerufen am 29. November 2018 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Es ist die populärste NoSQL-Datenbank (Stand: Apr 2024).<ref>DB-Engines Ranking. Abgerufen am 9. April 2024 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
Das Unternehmen MongoDB, Inc. ist im NASDAQ gelistet und wird unter dem Kürzel MDB gehandelt.
Systemvoraussetzungen
Die Binärdateien sind verfügbar für Windows, Linux, macOS und Solaris. MongoDB kann auf fast jedem Little-Endian-System kompiliert werden.
Aufbau
Datenbanken
Ein MongoDB-Prozess kann mehrere Datenbanken verwalten, und eine Datenbank kann mehrere Collections enthalten. Datenbank und Collection ergeben, durch einen Punkt getrennt, einen Namespace. Für eine Datenbank, die die Daten einer Firma verwalten soll, und eine Collection, die alle Mitarbeiter enthalten soll, könnte man beispielsweise den Namespace firma.mitarbeiter wählen.
Collections
Eine Collection enthält Dokumente und ist mit einer Tabelle einer relationalen Datenbank vergleichbar. Ein wesentlicher Unterschied besteht darin, dass die Dokumente einer Collection völlig unterschiedlich aufgebaut sein können. Weder müssen sie einem Schema folgen, noch müssen die Werte desselben Schlüssels vom selben Datentyp sein.
Capped Collections
MongoDB unterstützt größenbeschränkte Dokumentensammlungen – auch capped collections genannt.<ref name="capped">Capped collections. Abgerufen am 22. Juni 2012 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Eine capped collection wird mit einer bestimmten Größe und – je nach Bedarf – einer Anzahl an Elementen angelegt. Eine capped collection ist die einzige Art Dokumentensammlung, die die Ordnung einhält: Sobald die spezifizierte Größe erreicht ist, verhält sich die capped collection wie ein digitaler Ringspeicher.
Eine besondere Art Cursor – genannt tailable cursor<ref name="tailable">Tailable cursors. Abgerufen am 22. Juni 2012 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> – kann bei capped collections verwendet werden. Der Cursor wurde nach dem Unix-Befehl tail -f benannt. Er verschwindet nicht, sobald er die Wiedergabe der Ergebnisse beendet hat, sondern wartet und gibt neue Ergebnisse wieder, sobald neue Dokumente der Sammlung hinzugefügt werden.
System Collections
MongoDB legt automatisch System Collections an. Eine der System Collections beinhaltet alle Indizes der Datenbank, eine weitere alle Namespaces, eine JavaScript-Code und die übrigen Informationen zum Profiling und zu Benutzern.
Abfragen
Mongo erlaubt es, jedes Feld jederzeit abzufragen. Mongo unterstützt auch Bereichsabfragen, das Suchen nach regulären Ausdrücken und andere Spezialsuchabfragen zusätzlich zu Suchen anhand von Beispielen<ref name="MongoDB find">MongoDB Find Command. Abgerufen am 16. Oktober 2016 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>. Diese Abfragen schließen auch benutzerdefinierte JavaScript-Funktionen ein. Abfragen können sowohl spezifische Dokumentenfelder wiedergeben (anstelle des gesamten Dokuments) als auch Ergebnisse sortieren, überspringen und einschränken. Abfragen können in eingebettete Objekte und Anordnungen hineinreichen.
Jedes Abfrageergebnis wird als Cursor bereitgestellt.
Indizierung
Die Software unterstützt Indexstrukturen, beispielsweise B-Bäume und Geospatial-Indizes.<ref name="geo">Geospatial indexes. Abgerufen am 22. Juni 2012 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Verschachtelte Felder (so wie oben in der Ad-hoc-Abfrage beschrieben) können gleichfalls indiziert werden. Das Indizieren von Listen ergibt eine Indizierung jedes einzelnen Elements der Liste.
Der Abfrage-Optimierer von MongoDB sucht während eines Abfragelaufs selbständig zwischen unterschiedlichen Auswertungsplänen aus und wählt den schnellsten; dabei findet periodisch eine Stichprobewiederholung statt. Entwickler können den verwendeten Index mittels der Funktion explain einsehen und einen anderen Index mit Hilfe der Funktion hint auswählen.
Indizes können jederzeit angelegt und gelöscht werden.
Aggregation
Zusätzlich zu Ad-hoc-Abfragen unterstützt die Datenbank auch andere Werkzeuge für die Aggregation einschließlich MapReduce und einer Gruppierungsfunktion ähnlich dem GROUP BY von SQL.
GridFS
Um Dokumente speichern zu können, die die Größenbeschränkung von 16 MB überschreiten, kann GridFS („Grid File System“) verwendet werden.<ref name="gridfs">GridFS. Abgerufen am 15. Januar 2016 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Dieser Dateien-Speicher-Mechanismus wurde bei Plug-ins für Apache,<ref name="apache">mod_gridfs. Abgerufen am 19. November 2014 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> nginx<ref name="nginx">nginx. Abgerufen am 22. Juni 2012 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> und lighttpd<ref name="lighttpd">lighttpd. Archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am 7. August 2011; abgerufen am 22. Juni 2012 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> eingesetzt.
Abgrenzung zu relationalen (SQL-)Datenbanken
MongoDB wird als NoSQL-Datenbank klassifiziert und grenzt sich als solche dadurch von traditionellen Datenbanken ab, dass sie eine weniger mächtige Abfragesprache anbietet. Dies ist Nachteil und Vorteil zugleich: Zum einen muss in der Anwendungsschicht mehr Logik vorhanden sein, um die gleichen Ergebnisse zu erzielen wie mit SQL-Datenbanken. Zum anderen kann MongoDB den Datenbestand und die Arbeitslast auf mehrere Server verteilen, was in monolithischen SQL-Datenbanken nicht möglich ist. Gleichwohl gibt es mittlerweile auch SQL-Datenbanken z. B. Exasol oder Greenplum, welche über mehrere Server verteilt sind. Nur auf den Mehrserversystemen sind große Join-Operationen in einer angemessenen Zeit zu bewerkstelligen.
MongoDB zielt bei der Verteilung der Daten auf mehrere Server darauf ab, durch Replikation die Verfügbarkeit zu erhöhen und durch Sharding (siehe unten) die Arbeits- und Datenlast zu verteilen. Die Replikation bringt allerdings einen weiteren Nachteil mit sich: Wird ein Schreibzugriff von MongoDB bestätigt, dann gibt es standardmäßig ein Zeitfenster, in dem nachgelagerte Lesezugriffe den alten Datenbestand zurückliefern. Dieses Konsistenzmodell wird als Eventual Consistency bezeichnet.
Ein weiteres Abgrenzungsmerkmal von MongoDB zu Relationalen Datenbanken ist die Schemafreiheit. Während in Relationalen Datenbanken die Struktur eines Datenbankeintrages durch die Definition der Tabelle fest vorgeschrieben ist, können sich die Datenbankeinträge in MongoDB frei voneinander unterscheiden (auch wenn sie derselben Collection angehören).<ref name="Vor-/Nachteile">Vor- und Nachteile von MongoDB. Abgerufen am 30. Januar 2016 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Dieser Freiheit wird zugesprochen, dass sie eine agile Softwareentwicklung unterstützt, da es einfacher ist, auf veränderte Anforderungen zu reagieren.<ref name="Why Schemaless?">Wozu Schemafreiheit? Abgerufen am 30. Januar 2016 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
Allerdings müssen bei Analysen anschließend die Informationen ebenfalls strukturiert werden.
Abgrenzung zu anderen NoSQL-Datenbanken
Zwecks Klassifizierung von Datenbanken anhand ihrer Qualitätsmerkmale wird oft das CAP-Theorem herangezogen. Das CAP-Theorem besagt, dass im Falle einer Netzwerk-Partitionierung sich ein verteiltes System entscheiden muss, ob es weiterhin verfügbar bleiben oder Konsistenz gewährleisten soll.<ref name="CAP-Theorem">CAP-Theorem. Abgerufen am 30. Januar 2016 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> MongoDB entscheidet sich hier für die Konsistenz, kann die Verfügbarkeit allerdings aufrechterhalten, solange die Mehrzahl der Knoten eines Replica Set miteinander kommunizieren können. Die Datenbank lässt sich jedoch auch so konfigurieren, dass primär die Verfügbarkeit erhalten bleibt. CouchDB als Vergleich zu MongoDB mit ähnlichen Funktionalitäten stellt die Verfügbarkeit über die Konsistenz.
Verwaltungswerkzeuge
Offizielle Werkzeuge
Mit einem laufenden MongoDB-Server kann auf verschiedenen Wegen eine Verbindung aufgebaut werden. Die Mongo Shell ist in der Distribution enthalten. Schließlich stehen Programmierern Treiber für zahlreiche Programmiersprachen zur Verfügung, um die Kommunikation ihrer Anwendungen mit MongoDB zu implementieren.
Mongo Shell
Die Mongo Shell ist ein Kommandozeilen-Client. Sie dient der Verwaltung von MongoDB und ermöglicht ihrem Benutzer Lese- wie Schreiboperationen. Dazu erhält man eine Eingabeaufforderung, auf der man Befehle in der Sprache JavaScript ausführen kann.
Treiber
MongoDB ist mit offiziellen Treibern ausgestattet für C, C++, C#, Go, Java, JavaScript, PHP, Python, Ruby, Rust, Scala und Swift.<ref>Drivers. Abgerufen am 9. Januar 2022 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
Es gibt auch zu einigen Programmiersprachen offiziell unterstützte ORMs für MongoDB, wie z. B. Mongoose für die Node.js-Plattform.<ref>Node.js MongoDB Driver docs.mongodb.org</ref>
Cloud-basierter Monitoring-Dienst
MongoDB Management Service (MMS) ist eine cloud-basierte Monitoring-Lösung und Alert-Dienst für MongoDB Server.<ref>Mongo Cloud, Zugriff am 17. Oktober 2015</ref>
Grafische Oberflächen
Es gibt einige grafische Oberflächen (GUIs) zur Sichtung und Bearbeitung der Daten. Dazu gehören:
| Name | Beschreibung | Lizenz | Linux | Windows | Mac |
|---|---|---|---|---|---|
| MongoDB Compass | offizielle plattformübergreifende GUI für MongoDB<ref>Compass. Abgerufen am 23. September 2020 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> | Server Side Public License<ref>mongodb-js/compass. Abgerufen am 23. September 2020 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> | ja | ja | ja |
| Studio 3T (ehemals MongoChef) | eine plattformübergreifende MongoDB GUI<ref name="Studio 3T">Studio 3T (formerly MongoChef) - The IDE for MongoDB. Abgerufen am 1. Oktober 2014 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> | freie Lizenz und proprietär | ja | ja | ja |
| Nucleon BI Studio | Business Intelligence Frontend für MongoDB | proprietär | — | ja | — |
| Fang of Mongo | ein webbasiertes UI, erstellt mit Django und jQuery<ref name="fang">Fang of Mongo. Abgerufen am 22. Juni 2012 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> | GNU AGPL v3.0<ref>Fang-of-Mongo/LICENCE at fom_object Fiedzia/Fang-of-Mongo – GitHub</ref> | ja | — | — |
| Nucleon Database Master | eine Windows-basierte Datenbank-Client-Software, die auch RDMS unterstützt | proprietär | — | ja | — |
| Futon4Mongo | ein Klon des CouchDB-Futon-Web-Interfaces für MongoDB<ref name="futon">Futon4Mongo. Abgerufen am 22. Juni 2012 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> | — | — | — | — |
| mms, Mongo Management Studio | sowohl plattformübergreifendes als auch webbasiertes GUI<ref name="mms">Mongo Management Studio. Abgerufen am 1. September 2014 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> | freie Lizenz und proprietär | ja | ja | ja |
| Mongo3 | ein Ruby-basiertes Interface<ref name="mongo3">Mongo3. Abgerufen am 22. Juni 2012 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> | Apache License 2.0 | ja | ja | ja |
| MongoHub | eine native OS-X-Anwendung für das Management von MongoDB<ref name="mongohub">MongoHub. Archiviert vom Vorlage:IconExternal am 7. Februar 2015; abgerufen am 22. Juni 2012 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>, inaktiv seit April 2015<ref>jeromelebel/MongoHub-Mac. Abgerufen am 30. August 2018 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> | — | nein | nein | ja |
| Opricot | eine browserbasierte MongoDB-Shell, geschrieben mit PHP<ref name="opricot">Opricot. Abgerufen am 22. Juni 2012 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> | GNU GPL v3.0 | ja | — | — |
| Robo 3T (ehemals Robomongo) | eine plattformübergreifende MongoDB-GUI<ref name="robomongo">robomongo. Abgerufen am 10. Januar 2018 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> | GNU GPL v3.0<ref>robomongo/LICENSE at master paralect/robomongo – GitHub</ref> | ja | ja | ja |
| UMongo (JMongoBrowser) | eine plattformübergreifende Management-GUI, geschrieben in Java<ref name="umongo">UMongo. Abgerufen am 22. Juni 2012 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> | verschiedene OpenSource-Lizenzen<ref>umongo/README.rst at master agirbal/umongo – GitHub</ref> | — | — | — |
| DBHawk | ein webbasiertes MongoDB-Tool<ref name="DBHawk">DBHawk. Abgerufen am 6. Januar 2018 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> | proprietär | ja | ja | ja |
| DataGrip (und weitere professionelle JetBrains IDEs)<ref>All Developer Tools and Products by JetBrains. Abgerufen am 9. Januar 2022 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> | professionelle Datenbank-Entwicklungsumgebung mit Unterstützung für viele verschiedene Datenbanksysteme wie unter anderem MongoDB. Geschrieben in Java. Basiert auf der quelloffenen IntelliJ-Plattform.<ref>DataGrip: The Cross-Platform IDE for Databases & SQL by JetBrains. Abgerufen am 9. Januar 2022 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> | proprietär | ja | ja | ja |
Replikation
Um Ausfälle einzelner Server zu kompensieren und die Last der Lesezugriffe auf mehrere Server zu verteilen, bietet MongoDB zwei Arten der Replikation an:
Master-Slave-Replikation
Die Master-Slave-Replikation ist veraltet und seit Version 4.0 nicht mehr verfügbar<ref>https://docs.mongodb.com/manual/release-notes/4.0-compatibility/index.html#replica-sets</ref>.
Ein Master konnte Lese- („Reads“) und Schreibzugriffe („Writes“) ausführen. Ein Slave kopierte die Daten vom Master und konnte nur für Lesezugriffe oder die Datensicherung eingesetzt werden, nicht aber für Schreibzugriffe.
Die Master-Slave-Replikation gestattete es Entwicklern, zu garantieren, dass auf einer Per-Ablauf-Basis zumindest ein Ablauf auf N Server repliziert wurde.
Replica-Sets
Replica-Sets ähneln dem Master-Slave-Verhältnis, enthalten aber die Möglichkeit für die Slaves, einen neuen Master zu wählen, wenn der derzeitige ausfällt.
Sharding
MongoDB skaliert horizontal unter Verwendung eines Systems, welches als horizontale Fragmentierung bezeichnet wird und das dem Bigtable- und PNUTS-Skalierungssystem sehr ähnlich ist. Der Entwickler wählt einen Fragmentierungsschlüssel, der festlegt, wie die Daten in einer Ansammlung verteilt werden. Die Daten werden in Bereiche aufgeteilt (unter Zugrundelegung des Fragmentierungsschlüssels) und über mehrere Instanzen verteilt.
Die Anwendung bzw. ihr Entwickler muss wissen, dass die Kommunikation bei bestimmten Abläufen mit einem fragmentierten Cluster erfolgt. So muss eine „findAndModify“-Abfrage den Fragmentierungsschlüssel zum Beispiel beinhalten, wenn die angefragte Sammlung horizontal fragmentiert ist. Die Anwendung kommuniziert mit einem speziellen Routing-Prozess, der „mongos“ genannt wird und der genauso wie ein einzelner MongoDB-Server aussieht. Dieser „mongos“-Prozess weiß, welche Daten von welcher Instanz verwaltet werden, und routet die Abfrage dementsprechend. Alle Abfragen fließen durch diesen Prozess: Dieser leitet nicht nur die Abfragen und Antworten weiter, sondern führt auch alle notwendigen, finalen Datenver- und -entflechtungen durch. Jede beliebige Anzahl an „mongos“-Prozessen kann gestartet werden, allerdings wird gewöhnlich nur eine pro Anwendungsserver empfohlen.
Technische Grundlagen
Bei Lese- und Schreibzugriffen werden die Daten zunächst im RAM abgelegt und erst nach einer bestimmten Zeit (per Voreinstellung alle 60 Sekunden) vom Betriebssystemdienst mmap auf Disk synchronisiert. Dies ergibt einen Geschwindigkeitsvorteil, da auf den RAM in Nanosekunden zugegriffen werden kann, auf Dateien hingegen im dreistelligen Millisekundenbereich. Ein Nachteil ist, dass etwa bei einem Serverabsturz alle nur im RAM vorhandenen Daten verlorengehen. MongoDB begegnet diesem Nachteil mit dem Journaling-Verfahren.<ref>Tobias Trelle: MongoDB. Der praktische Einstieg, dpunkt, Heidelberg 2014, S. 21.</ref>
Aufgrund der Nutzung von mmap ist auf 32-Bit-Rechnern die Datengröße auf 2 GB begrenzt (bei 64-Bit-Rechnern liegt die Obergrenze entsprechend sehr viel höher).<ref name="filelimit32bit">32-bit limitations. Abgerufen am 22. Juni 2012 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Der MongoDB-Server kann nur auf Little-Endian-Systemen benutzt werden, obwohl die meisten Treiber sowohl auf Little-Endian- als auch auf Big-Endian-Systemen laufen.
Weitere Merkmale sind:
- UTF-8-Kodierung der Dokumente. Nicht-UTF-8-Daten können mittels eines speziellen Binärdatentyps gespeichert, angefragt und abgerufen werden.
- Unterstützung von Datum, regulären Ausdrücken, Code und binären Daten (allesamt BSON-Kategorien).
- Server-seitige JavaScript-Ausführung: JavaScript ist die Verkehrssprache von MongoDB und kann für Abfragen und Aggregationsfunktionen (wie beispielsweise MapReduce) verwendet werden, außerdem kann JavaScript direkt zur Datenbank geschickt und dort ausgeführt werden.
Lizenzierung und Unterstützung
MongoDB war bis Oktober 2018 unter der GNU Affero General Public License (AGPL) frei erhältlich. Die Sprachtreiber sind erhältlich unter einer Apache-Lizenz.<ref name="license">The AGPL - MongoDB Blog: May 5, 2009. Abgerufen am 22. Juni 2012 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
Im Oktober 2018 wechselten die Entwickler der Datenbank MongoDB zur proprietären Server Side Public License (SSPL), damit Cloud-Provider die Datenbank nicht nutzen, ohne Code zurückzugeben.
Die SSPL erfordert, dass jeder, der den MongoDB-Service anbietet, auch den Quellcode des Services unter dieser Lizenz veröffentlicht, auch den Code aller Programme für das Management, für Nutzerinterfaces, für Monitoring und für Backups. MongoDB legte die Lizenz der Open Source Initiative (OSI) vor, wo diese abgelehnt wurde<ref>[License-review] Approval: Server Side Public License, Version 1 (SSPL v1). Abgerufen am 29. November 2018 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>. Eine neue Version 2 der Lizenz wurde erneut der OSI vorgelegt<ref>[License-review] Approval: Server Side Public License, Version 2 (SSPL v2). Abgerufen am 29. November 2018 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>, dann aber zurückgezogen, nachdem klar wurde, dass diese nicht akzeptiert werden würde.<ref>[License-review] Approval: Server Side Public License, Version 2 (SSPL v2). Abgerufen am 22. März 2019 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> MongoDB ist derzeit nur unter der abgelehnten Version 1 verfügbar. Dem voraus ging eine ähnliche Lizenzänderung durch Entwickler der Datenbank Redis.<ref>Hanno Böck: MongoDB wechselt Lizenz</ref>
Aufgrund der Lizenzänderung wurde MongoDB aus den Linux-Distributionen Debian, Fedora und Red Hat Enterprise Linux entfernt. Das Fedora-Projekt entschied, dass die SSPL version 1 keine Freie-Software-Lizenz ist.<ref>Vorlage:Cite book/NameVorlage:Cite book/Name: [Internetquelle: archiv-url ungültig MongoDB "open-source" Server Side Public License rejected.] , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref><ref>Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig MongoDB’s licensing changes led Red Hat to drop the database from the latest version of its server OS.] , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>
Sicherheit
Zahlreiche MongoDB-Installationen im Internet sind von jedermann lesbar und teilweise sogar beschreibbar. Eine Suche mit Shodan lieferte im Januar 2017 52.000 offene Datenbanken.<ref>Extortionists Wipe Thousands of Databases, Victims Who Pay Up Get Stiffed, Krebs on Security, 10. Januar 2017</ref>
Ursache ist, dass in der Standardinstallation keinerlei Zugriffskontrolle konfiguriert ist. Wird die Datenbank später auf einen öffentlichen Server verschoben und die Konfiguration nicht angepasst, kann von außen frei auf die Daten zugegriffen werden.<ref name="infak" /> Zum Teil wurde das von Ransomware ausgenutzt, die diese Daten verschlüsselt hat.<ref>MongoDB ransacking (Seite dauerhaft nicht mehr abrufbar, festgestellt im Dezember 2025. Suche im Internet Archive )</ref> Der Hersteller der kommerziellen Variante empfiehlt schon seit langem Maßnahmen zur Absicherung.<ref name="infak">MongoDB: Ungeschützte Datenbanken absichern. 18. Februar 2015, abgerufen am 18. Februar 2015.</ref><ref>Anleitung zur Absicherung: How to secure MongoDB on Linux or Unix production server, nixCraft, 9. Januar 2017</ref>
Bekannte Anwender
- Die Webpräsenz von MTV Networks<ref name="mtv">Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig MongoDB Powering MTV's Web Properties.] , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 6. Juli 2011 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>
- Disney Interactive Media Group<ref name="disney">Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig Disney Central Services Storage: Leveraging Knowledge and skillsets.] , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 6. Juli 2011 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>
- Foursquare<ref name="foursquare">MongoDB at foursquare - Presentation at MongoNYC (Seite dauerhaft nicht mehr abrufbar, festgestellt im Dezember 2025. Suche im Internet Archive )</ref>
- The New York Times<ref name="nytimes">Vorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/Name: Vorlage:Cite book/URL, NYTimes Open Blog, 25. Mai 2010. Abgerufen am 28. Juni 2010 (english).Vorlage:Cite book/URL Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung2</ref>
- SourceForge<ref name="sourceforge">Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig How Python, TurboGears, and MongoDB are Transforming SourceForge.net.] PyCon 2010, , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 22. Juni 2012 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>
- Die E-Commerce Website Etsy<ref name="etsy">Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig MongoDB at Etsy.] Code as Craft: Etsy Developer Blog, , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 28. Juni 2010 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>
- Large Hadron Collider am CERN<ref name="lhc">Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig Holy Large Hadron Collider, Batman!] The MongoDB NoSQL Database Blog, , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 3. August 2010 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>
- Die Cloud-Computing-Plattform AppScale<ref>AppScale - Supported Datastores. Archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am 7. September 2013; abgerufen am 22. Juni 2012 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
Literatur
- Marc Boeker: MongoDB. Sag Ja zu NoSQL. EntwicklerPress, Frankfurt am Main 2010, ISBN 978-3-86802-057-1
- Tobias Trelle: MongoDB. Der praktische Einstieg. dpunkt, Heidelberg 2014, ISBN 978-3-86490-153-9
Weblinks
Einzelnachweise und Anmerkungen
<references responsive/>