MongoDB verstehen: Vorteile einer dokumentenorientierten NoSQL-Datenbank
Traditionelle Datenbanken vs. NoSQL-Datenbanken
Das Ende des relationalen Modells
Traditionell organisieren Datenbankverwaltungssysteme Daten basierend auf dem relationalen Modell. Da sich die Datenanforderungen von Organisationen jedoch geändert haben, wurden eine Vielzahl neuer Arten von Datenbanken entwickelt. Diese neuen Arten von Datenbanken verlassen sich oft nicht auf die traditionelle Tabellenstruktur, die von relationalen Datenbanken bereitgestellt wird, und ermöglichen daher wesentlich mehr Flexibilität als die starre Struktur, die von relationalen Datenbanken vorgegeben wird. Außerdem verwenden sie in der Regel keine strukturierte Abfragesprache (SQL), die von den meisten relationalen Datenbanksystemen verwendet wird, um Benutzern die Definition und Interaktion mit Daten zu ermöglichen. Dies hat dazu geführt, dass viele dieser neuen nicht-relationalen Datenbanken im Allgemeinen als NoSQL-Datenbanken bezeichnet werden.
MongoDB: Eine Einführung
MongoDB im Überblick
MongoDB, erstmals 2009 veröffentlicht, ist eine dokumentenorientierte NoSQL-Datenbank, die in vielen modernen Webanwendungen verwendet wird. Dieser konzeptionelle Artikel bietet einen Überblick über die Merkmale, die MongoDB von anderen Datenbankverwaltungssystemen unterscheiden und es zu einem wertvollen Werkzeug für viele verschiedene Anwendungsfälle machen.
Übersicht über MongoDB
MongoDB im Detail
MongoDB wird als NoSQL-Datenbank betrachtet, da sie nicht auf dem relationalen Modell basiert. Jedes Datenbankverwaltungssystem ist um ein bestimmtes Datenmodell konzipiert, das festlegt, wie die Daten in der Datenbank organisiert werden. Das relationale Modell umfasst die Speicherung von Daten in Tabellen, die formell als Relationen bezeichnet werden, die aus Zeilen und Spalten bestehen.
MongoDB hingegen speichert seine Daten in Strukturen, die als Dokumente bezeichnet werden. MongoDB ermöglicht es, mehrere Dokumente in einer Struktur zu gruppieren, die als Sammlung bezeichnet wird, und diese können in separaten Datenbanken weiter gruppiert werden.
Struktur von MongoDB-Dokumenten
Ein Dokument ist in BSON geschrieben, einer binären Darstellung von JSON. Wie Objekte in JSON beginnen und enden MongoDB-Dokumente mit geschweiften Klammern ({ und }), und enthalten eine Reihe von Feld-Wert-Paaren, die in der Regel in der Form Feld: Wert vorliegen. Der Wert eines Feldes kann einer der in BSON verwendeten Datentypen sein, oder sogar andere Strukturen wie Dokumente und Arrays.
Sicherheit in MongoDB
Sicherheit und Datenverlustprävention
MongoDB ist mit einer Reihe von Funktionen ausgestattet, die dazu beitragen können, Datenverlust zu verhindern und den Zugriff durch unbefugte Benutzer zu verhindern. Einige dieser Funktionen finden sich auch in anderen Datenbankverwaltungssystemen. Zum Beispiel ermöglicht MongoDB, wie viele moderne DBMS, die Verschlüsselung von Daten während der Übertragung über ein Netzwerk – oft als Daten im Transit bezeichnet. Dies geschieht, indem Verbindungen zur Datenbank mit Transport Layer Security (TLS) hergestellt werden, einem kryptografischen Protokoll, das als Nachfolger von Secure Sockets Layer (SSL) dient.
Rollenbasierte Zugriffskontrolle (RBAC)
Ebenso wie bei anderen DBMS verwaltet MongoDB die Autorisierung – die Festlegung von Regeln für einen bestimmten Benutzer oder eine Gruppe von Benutzern, um festzulegen, welche Aktionen sie ausführen können und auf welche Ressourcen sie zugreifen können – durch ein Computer-Sicherheitskonzept, das als rollenbasierte Zugriffskontrolle oder RBAC bekannt ist. Wenn Sie einen MongoDB-Benutzer erstellen, haben Sie die Möglichkeit, ihm eine oder mehrere Rollen zuzuweisen.
Clientseitige Feldverschlüsselung
Seit der Veröffentlichung von Version 4.2 unterstützt MongoDB die clientseitige Feldverschlüsselung. Dabei werden bestimmte Felder in einem Dokument vor dem Schreiben in die Datenbank verschlüsselt. Jeder Client oder jede Anwendung, die später versucht, die Daten in diesen Feldern zu lesen, muss zuerst die richtigen Verschlüsselungsschlüssel vorlegen, um die Daten in diesen Feldern entschlüsseln zu können.
Flexibilität in MongoDB
Einblick in die Flexibilität
Ein weiteres Merkmal von MongoDB, das zu seiner Verbreitung beigetragen hat, ist die Flexibilität, die es im Vergleich zu traditionelleren Datenbankverwaltungssystemen bietet. Diese Flexibilität basiert auf dem dokumentenbasierten Design von MongoDB, da Sammlungen in Mongo keine bestimmte Struktur erzwingen, der jedes Dokument in ihnen folgen muss. Dies steht im Gegensatz zur starren Struktur, die von Tabellen in einer relationalen Datenbank vorgegeben wird.
Beispiele für unstrukturierte Daten
Beispiele für unstrukturierte Daten sind Medieninhalte wie Videos oder Fotos, Kommunikationsdaten oder Textdateien. Manchmal werden unstrukturierte Daten als qualitative Daten bezeichnet. Mit anderen Worten, Daten, die für Menschen lesbar sind, aber für Computer schwer ausreichend zu analysieren sind. Das vielseitige, dokumentenorientierte Design von MongoDB macht es jedoch zu einer ausgezeichneten Wahl für die Speicherung und Analyse von unstrukturierten Daten sowie strukturierten und teilstrukturierten Daten.
Hohe Verfügbarkeit in MongoDB
Replikation für hohe Verfügbarkeit
Jedes datenbankbasierte Computersystem ist auf seine zugrunde liegende Hardware angewiesen, um zu funktionieren und die Anforderungen einer Anwendung oder eines Clients zu erfüllen. Wenn die Maschine, auf der es ausgeführt wird, aus irgendeinem Grund ausfällt, sind die in der Datenbank gespeicherten Daten solange nicht verfügbar, bis die Maschine wieder einsatzbereit ist.
Replikatensätze in MongoDB
In MongoDB wird eine Gruppe von Servern, die dieselbe Datenmenge durch Replikation aufrechterhalten, als Replikatensatz bezeichnet. Jede laufende Instanz von MongoDB, die zu einem bestimmten Replikatensatz gehört, wird als eines seiner Mitglieder bezeichnet. Jeder Replikatensatz muss mindestens ein primäres Mitglied und mindestens ein sekundäres Mitglied haben.
Automatischer Failover
Ein Vorteil von MongoDBs Replikatensätzen gegenüber anderen Replikationen in anderen Datenbank-Systemen ist der automatische Failover-Mechanismus von Mongo. Wenn das primäre Mitglied nicht verfügbar wird, erfolgt ein automatisierter Wahlprozess unter den sekundären Knoten, um ein neues Primärmitglied auszuwählen.
Skalierbarkeit in MongoDB
Vertikales und horizontales Skalieren
Skalierbarkeit bezieht sich auf die Fähigkeit eines Computersystems, eine ständig wachsende Arbeitslast zu bewältigen, und die Praxis, diese Kapazität zu erhöhen, wird als Skalierung bezeichnet. Es gibt zwei Möglichkeiten, ein Computersystem zu skalieren: vertikales Skalieren – auch als Aufrüsten bezeichnet – beinhaltet das Hinzufügen von mehr Rechenressourcen zu einem bestimmten System, normalerweise durch Erhöhung seiner Speicherkapazität oder des Arbeitsspeichers. Horizontales Skalieren – auch als Erweitern bezeichnet – beinhaltet das Aufteilen der Arbeitslast auf mehrere Rechenknoten, die zusammen ein einheitliches logisches System bilden.
Sharding in MongoDB
Das Sharding ist eine Strategie, die einige Administratoren für das Skalieren einer Datenbank verwenden. MongoDB enthält eine integrierte Sharding-Funktion, die es Ihnen ermöglicht, Daten auf der Sammlungsebene zu sharden. Datenbankverwaltungssysteme enthalten nicht immer Sharding-Funktionen als integriertes Merkmal, daher wird Sharding oft auf Anwendungsebene implementiert.
Die richtige Wahl für Ihre Anwendung?
Abwägung der Optionen
Bei der Entscheidung, ob Sie MongoDB in Ihrer nächsten Anwendung verwenden sollten, sollten Sie sich zuerst fragen, welche spezifischen Datenanforderungen die Anwendung hat. Wenn Ihre Anwendung Daten speichert, die sich starr an eine vordefinierte Struktur halten, erhalten Sie möglicherweise keinen zusätzlichen Wert aus dem schemafreien Design von Mongo, und es ist möglicherweise besser, eine relationale Datenbank zu verwenden.
Anwendungsfälle für MongoDB
Dann sollten Sie darüber nachdenken, wie viele Daten Sie erwarten, dass Ihre Anwendung speichern und verwenden muss. Das dokumentenorientierte Design von MongoDB macht es zu einer großartigen Wahl für Anwendungen, die große Mengen an unstrukturierten Daten speichern müssen. Ebenso machen die Skalierbarkeit und hohe Verfügbarkeit von MongoDB es zu einer perfekten Lösung für Anwendungen, die eine große und ständig wachsende Anzahl von Clients bedienen.
Fazit
Abschließende Gedanken
Durch das Lesen dieses Artikels verstehen Sie die Funktionen, die MongoDB von anderen Datenbankverwaltungssystemen unterscheiden. Obwohl MongoDB ein leistungsfähiges, flexibles und sicheres Datenbankverwaltungssystem ist, das in bestimmten Anwendungsfällen die richtige Wahl sein kann, ist es möglicherweise nicht immer die beste Wahl. Das rasche Wachstum von Mongo hebt jedoch seinen Wert als ein Werkzeug hervor, das es wert ist, verstanden zu werden.