MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Was ist MongoDB und wie funktioniert es?

MongoDB ist die gebräuchlichste und am weitesten verbreitete NoSQL-Datenbank. Es ist eine dokumentenorientierte Open-Source-Datenbank. NoSQL wird verwendet, um auf „nicht relational“ zu verweisen. Dies bedeutet, dass die MongoDB-Datenbank nicht auf tabellarischen Beziehungen wie RDBMS basiert, da sie einen eigenen Speicher- und Datenabrufmechanismus bietet.

Das von MongoDB verwendete Speicherformat wird als BSON bezeichnet. Die Datenbank wird von MongoDB Inc. verwaltet und ist unter der Server-Side Public License (SSPL) lizenziert.

Unten sehen Sie eine einfache MongoDB-Dokumentstruktur:

{
  title: 'FossLinux',
  by: 'Abraham',
  url: 'https://www.fosslinux.com',
  type: 'NoSQL'
}

Wie funktioniert es?

MongoDB arbeitet in zwei Schichten, nämlich:

  • Datenschicht
  • Anwendungsschicht

Die Anwendungsschicht wird allgemein als Endabstraktionsschicht bezeichnet. Es besteht aus zwei Teilen:dem Backend der Serverteil und das Frontend der Abschnitt Benutzeroberfläche. Der Frontend-Bereich ist der sichtbare Ort, an dem der Entwickler mithilfe von MongoDB mit dem Handy oder dem Web interagiert. Der Backend-Abschnitt umfasst den Server, der hauptsächlich zum Ausführen serverseitiger Logik verwendet wird. Außerdem enthält der Serverabschnitt Treiber und die Mongo-Shell, die die Interaktion des MongoDB-Servers mithilfe von Abfragen unterstützen.

Anfragen werden an den Server gesendet, der sich in der Datenschicht befindet. Der MongoDB-Server empfängt die Abfragen und leitet sie dann an die Speicher-Engine weiter, wo Lese- und Schreibvorgänge für die entsprechenden Datendateien durchgeführt werden. Das Hauptziel der Speicher-Engine ist die Datenverwaltung.

Hinweis: Der MongoDB-Server führt keine Schreib- und Lesevorgänge durch.

Das folgende Bild zeigt, wie MongoDB funktioniert:

Hauptfunktionen von MongoDB

Zu den Hauptmerkmalen gehören:

1. Indizierung

Indizes sollen die Suchleistung und -geschwindigkeit der Datenbank verbessern. Felder im Dokument dieser Datenbank können mit Primär- und Sekundärindex/-indizes indiziert werden. Ohne Indizierung muss jedes Dokument in einer Datenbank gescannt werden, um diejenigen auszuwählen, die der Abfrage entsprechen, was gelegentlich ineffizient ist. Daher muss für eine effiziente Dokumentensuche eine Indizierung vorhanden sein, und MongoDB verwendet sie, um große Datenbereiche übersichtlich zu verarbeiten.

MongoDB ermöglicht seinen Benutzern, jedes Feld zu indizieren, das sowohl mit dem sekundären als auch mit dem primären Index indiziert wurde. Dadurch werden Suchanfragen viel schneller und die Gesamtleistung verbessert.

2. Lastausgleich

MongoDB dupliziert Daten, um das System auch bei Hardwarefehlern am Laufen zu halten. Darüber hinaus ermöglicht dieser Prozess MongoDB, auf mehreren Servern zu laufen und so die Last auszugleichen.

3. Ad-hoc-Abfragen

MongoDB unterstützt regelmäßig Feld-, Bereichsabfragen und Ausdruckssuchen. Diese Abfragen geben bestimmte Felder von Dokumenten zurück und enthalten auch benutzerdefinierte JavaScript-Funktionen. Die Abfragen können auch so konfiguriert werden, dass sie eine zufällige Stichprobe von Ergebnissen einer bestimmten Größe zurückgeben.

4. Replikation

Replikatsätze, die MongoDB bereitstellt, bestehen aus zwei oder mehr Kopien von Daten. Diese Sätze können jederzeit als primäre oder sekundäre Replikate fungieren. Die primären Replikatsätze führen Lese- und Schreibvorgänge durch, während die sekundären Sätze mithilfe der integrierten Replikation eine Kopie der Daten des primären Replikats verwalten. Wenn das primäre Replikat ausfällt, führt der Replikatsatz automatisch einen Auswahlprozess durch, um zu bestimmen, welches sekundäre Replikat zum primären werden soll. Sekundäre Replikate können optional Lesevorgänge ausführen, aber die Daten sind standardmäßig schließlich konsistent.

5. Dateispeicherung

Diese Datenbank stellt Entwicklern Funktionen für die Dateibearbeitung und den Inhalt zur Verfügung. Mongo DB kann als Dateisystem verwendet werden, das als Grid-Dateisystem (GridFS) bekannt ist. Diese Funktion teilt eine Datei in Teile und speichert jeden Teil als separates Dokument.

6. Aggregation

Für eine effiziente Benutzerfreundlichkeit stellt MongoDB das Aggregations-Framework bereit. Diese Funktion ermöglicht es Entwicklern, die Prozessdaten zu stapeln und ein einziges Ergebnis zu erhalten, selbst nachdem verschiedene Operationen an den Gruppendaten ausgeführt wurden. Es gibt drei Möglichkeiten, wie MongoDB das Aggregationsframework bereitstellt:

  • Map-Reduce-Funktion
  • Aggregationspipeline
  • Einzelzweck-Aggregation.

Sehen Sie sich das Bild unten an, um einen Eindruck davon zu bekommen, wie die Aggregation in MongoDB funktioniert:

7. Schemalose Datenbank

Die schemalose Funktion bietet MongoDB viel mehr Flexibilität. Eine Sammlung kann verschiedene Dokumente in MongoDB enthalten. Die Tatsache, dass es kein Schema hat, ermöglicht es, separate Dokumente mit anderen Inhalten, Feldern und Größen in derselben Sammlung zu speichern.

8. GridFS

Dies ist eine Funktion zum Speichern und Abrufen von Dateien in MongoDB. Es unterteilt ein Dokument in mehrere Teile, die als Chunks bezeichnet werden, und speichert sie dann in verschiedenen Dokumenten. Alle Chunks mit Ausnahme des letzten Chunks haben eine Standardspeichergröße von etwa 255 KB. GridFS ist sehr nützlich für Dateien mit mehr als 16 MB.

Hinweis: Wenn GridFS nach einer Datei abgefragt wird, stellt es alle separaten Chunks zusammen, die zum Bilden der Originaldatei erforderlich sind. Nachfolgend finden Sie eine vereinfachte GridFS-Arbeitsmethodik:

MongoDB-Komponenten

Zu den Kernkomponenten von MongoDB und ihrer Verwendung gehören:

  1. Sammlungen – Sie sind eine Reihe von MongoDB-Dokumenten. Ihre RDBMS-Gegenstücke sind Tabellen. Es ist wichtig zu verstehen, dass Sammlungen keine Struktur erzwingen. Eine Sammlung existiert immer innerhalb einer einzigen DB.
  2. Dokument – Dies ist eine Sammlung von Daten, die im BSON-Format gespeichert sind. Sein Gegenstück zu RDBMS ist Row. Datensätze in MongoDB werden als Dokumente bezeichnet. Die Dokumente in MongoDB enthalten Feldnamen und ihre entsprechenden Werte.
  3. Feld – Dies ist ein einzelnes Element in einem MongoDB-Dokument, das Werte als Felder und Wertepaare enthält. In relationalen Datenbanken sind Felder analog zu Spalten. Ein Feld kann in einem Dokument einfach als Name-Wert-Paar bezeichnet werden.
  4. _id – Dieses Feld ist für jedes MongoDB-Dokument erforderlich. Das Feld _id kann mit dem Primärschlüssel in relationalen Datenbanken gleichgesetzt werden. Es stellt eine eindeutige Instanz oder einen eindeutigen Wert in einem MongoDB-Dokument dar. Wenn Sie absichtlich ein Dokument in MongoDB ohne das Feld _id erstellen, wird es automatisch generiert.
  5. Cursor – Dies ist ein Zeiger, der das festgelegte Ergebnis einer Abfrage anzeigt. Mit Hilfe des Cursors können Clients Ergebnisse abrufen.
  6. JSON – Dies ist eine JavaScript-Notation. Es ist Klartext, ein für Menschen lesbares Format, das verwendet wird, um strukturierte Daten auszudrücken. Tausende Programmiersprachen unterstützen JSON.
  7. Datenbank – Wie in RDBMS, wo eine Datenbank ein Tabellencontainer ist, ist eine Datenbank in MongoDB ein Sammlungscontainer. Jede Datenbank enthält ihre eigenen Dateisätze im Dateisystem. Daher können MongoDB-Server mehr als eine Datenbank speichern.

MongoDB-Editionen

MongoDB wurde in verschiedenen Editionen veröffentlicht:

  • MongoDB Community-Server –  Dies ist eine Open-Source-Version von MongoDB, die für Linux-, Windows- und macOS-Benutzer kostenlos verfügbar ist.
  • MongoDB Enterprise-Server –  Dies ist die kommerzielle Version von MongoDB und ist Teil des MongoDB Enterprise Advanced-Abonnementpakets.
  • MongoDB-Atlas – Allgemein als MongoDB Cloud bezeichnet. MongoDB Atlas ist ein On-Demand-MongoDB-Paket, das vollständig auf den Plattformen Microsoft Azure, Google Cloud und AWS ausgeführt und verwaltet wird. Es ist eine MongoDB Enterprise-Version, die in der Cloud gehostet wird. Die Atlas-Edition enthält alle Funktionen des MongoDB Enterprise-Servers und vieles mehr. Dies impliziert daher, dass MongoDB Atlas viel fortschrittlicher ist als alle anderen MongoDB-Editionen.

Warum sollte man MongoDB verwenden?

  1. Eine relationale Datenbank enthält strukturierte Daten, aber was ist mit unstrukturierten Daten? Der Benutzer kann MongoDB immer noch verschiedene Arten von Zufallsdaten hinzufügen, ohne auch nur ihre Typen zu deklarieren.
  2. Der Benutzer kann dank der Verfügbarkeit und Flexibilität von MongoDB in einer Cloud-basierten Umgebung riesige Datenvolumen mit einer integrierten Sharding-Methode laden, die die Daten trennt und bequem auf zahlreiche Server verteilt.
  3. Das dynamische Schema von MongoDB ermöglicht es Benutzern, schnell zu experimentieren und neue Dinge zu lernen. Alles kann schnell und kostengünstig in MongoDB integriert werden.
  4. Es macht es einfach, standortbasierte Daten zu sammeln, ohne komplizierte Verfahren zu erfordern.
  5. Millionen verknüpfter Geräte generieren regelmäßig Daten im Internet, was es schwierig macht, sie zu extrahieren und zu verarbeiten, aber MongoDB kann dies innerhalb einer einzigen Datenbank tun.
  6. MongoDB kann eine breite Palette von Daten aus verschiedenen Quellen enthalten, um eine CMS-basierte Website zu betreiben. Zu diesen Informationen gehören Tweets, Kommentare, Multimedia-Nachrichten und andere Arten von Informationen.
  7. Es ist ein hervorragender Begleiter für die Entwicklung mobiler Apps.
  8. Es kann Benutzern Client-Analysen in Echtzeit liefern und so ein dringend benötigtes individuelles Erlebnis bieten.
  9. Es ist eine kostengünstige Datenbank. Wenn Sie ein Kleinst- oder Kleinstunternehmen sind, ist MongoDB eine bessere Speicheroption, da es einfach zu verwalten und einzurichten ist.
  10. Die leistungsstarke Suchmaschine in MongoDB teilt dem Benutzer mit, woher die Daten stammen.

Vor- und Nachteile von MongoDB

Vorteile

  1. MongoDB ist relationalen Datenbanken weit überlegen, wenn man über eine beträchtliche Datenmenge verfügt und diese zum Lastenausgleich auf mehrere Server verteilen möchte.
  2. Suchanfragen in MongoDB sind schneller, da sie für den Zugriff auf einem einzelnen Server interpretiert werden müssen.
  3. Es bietet Vielseitigkeit, was bedeutet, dass sie MongoDB verwenden sollten, um unstrukturierte Daten zu speichern, da dies eine viel einfachere Möglichkeit ist.

Nachteile

  1. In MongoDB gibt es keine Möglichkeit, Tabellen zu kombinieren; Daher muss man dies jedes Mal manuell tun, wenn man diese Funktion verwenden muss, was zu einer unansehnlichen und zeitaufwändigen Codierung führt.
  2. Es verbraucht viel Speicher, da es den Schlüssel für jedes Dokument speichern muss, da widersprüchliche Daten möglich sind.
  3. Wenn Sie beginnen, eine Funktion zu verwenden, wird die gesamte Datenbank gesperrt, was zu einem Parallelitätsproblem führt.
  4. Dies geschieht nicht automatisch; daher muss der Benutzer manuell sicherstellen, dass es sich bei der Operation um eine Transaktion handelt.

Top 10 MongoDB-FAQ

Dieser Abschnitt enthält Antworten auf einige der häufig gestellten Fragen zu MongoDB. Sie können es sich ansehen, da die meisten häufig gestellten Fragen bereits beantwortet wurden, und vielleicht finden Sie hier eine Lösung für Ihr Problem.

1. Wie kann ich MongoDB lernen?

Die einfachste und gebräuchlichste Art, MongoDB zu lernen, sind die Online-Schulungskurse, die von MongoDB für Entwickler angeboten werden. Die Kurse werden von erfahrenen MongoDB-Ingenieuren entwickelt und geleitet, die mit MongoDB bestens vertraut sind. Die Kurse sind kostenlos und decken alle Aspekte ab, die Sie wissen müssen, um ein MongoDB-Guru zu sein. Die meisten Experten haben gelernt, diese Methode anzuwenden.

Daher werden Sie keine ausgezeichnete Ausnahme sein, wenn Sie diesem Beispiel folgen. Die Online-Kurse bieten reale Anwendungen, die den Benutzern helfen, mehr über dieses Thema zu erfahren. Das Online-Training ist im eigenen Tempo, d. h. Sie bestimmen, wie lange es dauern wird, sie zu lernen. Außerdem sind die Kurse zusätzliche Übungen, die Neulingen helfen, mehr über MongoDB zu lernen und zu üben. Besuchen Sie die MongoDB University, um eine Menge kostenloser Kurse zu erhalten und MongoDB zu lernen.

2. Kann der MongoDB-Server kostenlos verwendet werden?

Ja. Der MongoDB-Server kann je nach gewähltem Paket kostenlos verwendet werden. Beispielsweise ist der Community-Server für alle Benutzer zugänglich. Wenn Sie jedoch nach mehr Funktionen suchen, können Sie eine kostenpflichtige Version wie die MongoDB Enterprise- oder Atlas-Edition verwenden.

3. Erklären Sie die Unterschiede zwischen MongoDB und relationalen Datenbanken?

Die meisten relationalen Datenbanken wie MySQL, Oracle, SQL Server und Postgres basieren auf Architekturen, die ursprünglich vor langer Zeit (mehr als 40 Jahre) entworfen wurden. Die Bewerbungsanforderungen während dieser Zeit waren anders als die heutigen Bewerbungsanforderungen.

MongoDB basiert im Gegensatz zu relationalen Datenbanken auf einer verteilten Systemarchitektur, die es Benutzern ermöglicht, ihre Datenbanken schnell über verschiedene Instanzen hinweg zu skalieren. Sehen Sie sich für eine eingehende Analyse die Unterschiede zwischen MongoDB und MySQL (einer relationalen Datenbank) an. Der Hauptzweck der Entwicklung von MongoDB bestand darin, die Produktivität zu steigern. Schema-Flexibilität ist das, wonach die meisten Benutzer gesucht haben, und das ist eine der fantastischen Funktionen, die MongoDB bietet.

4. Wie kann man eine kommerzielle MongoDB-Lizenz erhalten?

Um eine kommerzielle MongoDB-Lizenz zu erhalten, können Sie sie bei MongoDB Enterprise Advanced erwerben.

5. Erklären Sie, wie Daten in MongoDB gespeichert werden?

In MongoDB werden Daten in BSON-Dokumenten gespeichert, die Datenstrukturen im JSON-Format verwenden. Dokumente enthalten mehr als ein Feld, und jedes Feld hat einen bestimmten Datentypwert, der Binärdaten, Arrays und Unterdokumente enthält. Dokumente mit ähnlichen Strukturen werden als Sammlungen gespeichert und organisiert.

6. Wo kann man MongoDB ausführen?

Sie können MongoDB von überall herunterladen, installieren und ausführen. Solange Sie die Plattform-Lock-in-Freiheit vollenden, können Sie MongoDB von überall aus ausführen. Beispielsweise bietet die Atlas-Version von MongoDB Benutzern einen vollständig angepassten und verwalteten Dienst auf AWS, Google Cloud und Azure, der nach dem Pay-as-you-go-Prinzip funktioniert. Der MongoDB Ops Manager ist eine der besten alternativen Möglichkeiten, MongoDB auf Ihrer Infrastruktur auszuführen. Dadurch können Teams MongoDB einfach und schnell überwachen, sichern, skalieren und bereitstellen.

7. Erklären Sie, warum MongoDB nützlich ist?

MongoDB basiert auf drei Hauptdesignprinzipien, die es Benutzern ermöglichen, gemeinsam schnellere und qualitativ hochwertige Anwendungen zu erstellen. Die drei wichtigsten Designprinzipien sind:

Design verteilter Systeme ermöglicht es Benutzern, Daten intelligent zuzuordnen, wo sie möchten.
Einheitliche Erfahrung – gibt Benutzern die Freiheit, überall zu laufen. Dieses zentrale Designprinzip ermöglicht die Eliminierung der Herstellerabhängigkeit und ermöglicht es Benutzern gleichzeitig, ihre Anwendungen zukunftssicher zu machen.
Dokumentdatenmodell – Diese Funktion bietet Benutzern die beste und einfachste Möglichkeit, mit Daten zu arbeiten.

8. Wann sollte man MongoDB verwenden?

MongoDB ist eine vielseitige NoSQL-Datenbank, die für Analyse-Apps und eine Reihe anderer OLTP-Apps verwendet werden kann. Mit dem MongoDB Atlas und dem MongoDB Server kann ein breites Anwendungsspektrum adressiert werden.

9. Erklären Sie, wie MongoDB die Daten der Kunden sichert?

MongoDB enthält umfangreiche Funktionen, die Kundendaten sichern, erkennen, kontrollieren und verteidigen. Nachfolgend sind einige der wichtigsten Funktionen aufgeführt, die zum Schutz der Kundendaten beitragen:

Autorisierung –
RBAC (Role-based Access Control) ermöglicht es Benutzern, die granularen Berechtigungen zu konfigurieren, die Benutzern oder anwendungsbasierten Berechtigungen ermöglichen, die sie zum Ausführen ihrer Aufgaben benötigen.

Prüfung ist für die Einhaltung gesetzlicher Vorschriften von entscheidender Bedeutung, da Sicherheitsadministratoren das native Überwachungsprotokoll von MongoDB verwenden können, um die jeweiligen Datenbankänderungen und -aktivitäten aufzuzeichnen.

Authentifizierung – MongoDB bietet einen praktikablen Challenge-Response-Mechanismus, der die Datenbankzugriffskontrolle auf der Basis von SCRAM-256 zusammen mit der Einführung einer integrierten Unternehmenssicherheitsinfrastruktur vereinfacht. Einige der Funktionen, die Sie erhalten, sind außerdem Windows Active Directory, x.509-Zertifikate, LDAP und Kerberos.

Überall-Verschlüsselung – Während der Übertragung können MongoDB-Daten über die Netzwerke verschlüsselt werden, und im Ruhezustand können die Daten auf Festplatten oder Backups verschlüsselt werden. Schließlich können die MongoDB-Daten während der Verwendung in der Datenbank verschlüsselt werden.

Schlussfolgerung

Dieser Artikel hat umfassend alle Aspekte behandelt, die man über MongoDB wissen muss. Im Laufe der Zeit haben Benutzer nach schneller Produktivität gesucht, die MongoDB seinen Benutzern bietet. Im Gegensatz zu relationalen Datenbanken, wie bereits im Artikel erwähnt, bietet MongoDB seinen Benutzern die Möglichkeit, ihre Datenbanken schnell zu skalieren.