SQL ist die am meisten bevorzugte Art, relationale Datenbanken in Bezug auf Abfragen zu verwenden. Es versteht sich, dass Benutzer mit relationalen Datenbanken wie MySQL und PostgreSQL gearbeitet haben, die die SQL-Abfragefunktion verwenden. Im Allgemeinen ist SQL leicht verständlich und wurde daher vor allem in relationalen Datenbanken weit verbreitet.
SQL ist jedoch ziemlich komplex, wenn versucht wird, eine große Anzahl von Dokumenten in eine Datenbank einzubinden. Kurz gesagt, es ist nicht für Dokumentendatenbanken gedacht, da es mit einer Reihe von Rückschlägen einhergeht. Beispielsweise können Sie eingebettete Array-Dokumente nicht einfach abfragen, oder Sie müssen ein Unterprogramm entwerfen, um zurückgegebene Daten zu iterieren und zu filtern, um die erforderlichen Ergebnisse zu erhalten. Folglich führt dies zu einer Erhöhung der Ausführungsdauer. Ein gutes SQL-Verständnis bietet jedoch ab einem bestimmten Punkt eine bessere Grundlage für die Interaktion mit MongoDB, anstatt bei Null anzufangen.
In diesem Blog verwenden wir das Studio 3T-Programm, um die verschiedenen SQL-Join-Abfragen zu zeigen und wie Sie sie in MongoDB-Abfragen umgestalten können, um eine bessere Leistung zu erzielen. Das Programm kann unter diesem Link heruntergeladen werden.
SQL mit MongoDB verbinden
Es gibt mehrere Treiber bzw. Schnittstellen, über die Sie SQL verwenden können, um mit MongoDB zu kommunizieren, beispielsweise ODBC. ODBC steht für Open Database Connectivity. Dies ist einfach eine Schnittstelle, die es Anwendungen ermöglicht, auf Daten in Datenbankverwaltungssystemen zuzugreifen, wobei SQL als Standardprozess für den Zugriff auf diese Daten verwendet wird. Es kommt mit einem zusätzlichen Interoperabilitätsvorteil, wodurch eine einzelne Anwendung auf mehrere Datenbankverwaltungssysteme zugreifen kann.
In diesem Blog werden wir Code aus SQL erstellen und testen und ihn dann über einen Aggregationseditor optimieren, um eine MongoDB-Abfrage zu erstellen.
Zuordnungsdiagramm für SQL zu MongoDB
Bevor wir ins Detail gehen, müssen wir die grundlegenden Beziehungen zwischen diesen beiden Datenbanken verstehen, insbesondere Schlüsselwörter im Abfragekonzept.
Terminologie und Konzepte
SQL | MongoDB |
---|---|
Tabellen Zeile Spalte Tabellenverknüpfungen | Sammlung BSON-Dokument Feld $lookup |
Der Primärschlüssel in SQL definiert eine eindeutige Spalte, die die Zeilen grundsätzlich in der Reihenfolge der Aufzeichnungszeit anordnet. Andererseits ist der Primärschlüssel in MongoDB ein eindeutiges Feld, um ein Dokument zu speichern und sicherzustellen, dass indizierte Felder keine doppelten Werte speichern.
Multiplenines Become a MongoDB DBA – Bringing MongoDB to ProductionErfahren Sie, was Sie wissen müssen, um MongoDBDownload for Free bereitzustellen, zu überwachen, zu verwalten und zu skalierenKorrelation zwischen SQL und MongoDB
Nehmen wir an, wir haben Schülerdaten und möchten diese Daten sowohl in der SQL-Datenbank als auch in MongoDB aufzeichnen. Wir können ein einfaches Studentenobjekt wie folgt definieren:
{
name: ‘James Washington’,
age: 15,
grade: A,
Score: 10.5
}
Beim Erstellen einer SQL-Tabelle müssen wir die Spaltennamen und den Datentyp definieren, während in MongoDB beim ersten Einfügen automatisch eine Sammlung erstellt wird.
Die folgende Tabelle hilft uns zu verstehen, wie einige der SQL-Anweisungen in MongoDB geschrieben werden können.
SQL-Schema-Anweisung | MongoDB-Schemaanweisungen |
---|---|
So fügen Sie ein Dokument in die Datenbank ein | Wir können ein Schemadesign mit einigen Modulen wie Mongoose definieren und die Felder wie ein Objekt definieren, anstatt direkt ein Dokument einzufügen, um die Korrelation zu zeigen. Die primäre Ablage-ID wird beim Einfügen eines Dokuments automatisch generiert. Einfügen eines neuen Dokuments zum Erstellen der Sammlung |
Verwenden der ADD-Anweisung zum Hinzufügen einer neuen Spalte zur vorhandenen Tabelle. | Die Struktur von Sammlungsdokumenten ist nicht gut definiert und daher aktualisieren Sie Dokumente auf Dokumentebene mit updateMany() |
Um eine Spalte (Einheiten) zu löschen | Um ein Feld (Einheiten) zu löschen |
Um einen Tisch Studenten fallen zu lassen | Um Sammlungsstudenten fallen zu lassen |
SQL-Select-Anweisung | MongoDB-Suchanweisungen |
---|---|
Alle Zeilen auswählen | Alle Dokumente auswählen |
Um nur bestimmte Spalten zurückzugeben. | Um nur bestimmte Felder zurückzugeben. Standardmäßig wird das Feld _id zurückgegeben, sofern im Projektionsprozess nicht anders angegeben. Das Festlegen der _id:0 bedeutet, dass nur das zurückgegebene Dokument den Namen und nur die Werte des Bewertungsobjekts enthält. |
Um bestimmte Zeilen mit einem übereinstimmenden Spaltenwert auszuwählen. | So wählen Sie bestimmte Dokumente mit übereinstimmenden Feldwerten aus. |
Auswählen von Zeilen mit einer Spalte, deren Werte einige Zeichen als bereitgestellten Kriterienwert enthalten | Auswählen von Dokumenten mit einem Feld, dessen Werte einige Zeichen als bereitgestellter Kriterienwert enthalten |
Um die Zeilen in aufsteigender Reihenfolge mit dem Primärschlüssel zurückzugeben. | Um die Dokumente in aufsteigender Reihenfolge mit dem Primärschlüssel zurückzugeben |
Zurückgegebene Zeilen in Übereinstimmung mit einer Spalte (Klasse) gruppieren | Zur Gruppierung zurückgesendeter Dokumente in Übereinstimmung mit einem bestimmten Bereich (Klasse) |
Begrenzung der Anzahl der zurückgegebenen Zeilen und Überspringen einiger | Begrenzung der Anzahl der zurückgegebenen Dokumente und Überspringen von Zeilen |
Eine wesentliche Option ist zu wissen, wie unsere Abfrage ausgeführt wird, also verwenden Sie die EXPLAIN-Methode. | |
SQL-Update-Anweisung | MongoDB-Update-Anweisungen |
---|---|
Aktualisieren Sie die Notenspalte für Schüler, die mindestens 15 Jahre alt sind | Hier verwenden wir einige Operatoren wie $gt, $lt und $lte. |
Einen Spaltenwert erhöhen | |
SQL-Löschanweisung | MongoDB-Entfernungsanweisungen |
---|---|
Um alle Zeilen zu löschen | Um alle Dokumente zu löschen. |
Um eine bestimmte Zeile zu löschen, in der eine Spalte einen bestimmten Wert hat. | |
Diese Beispielzuordnungstabelle ermöglicht es Ihnen, besser zu verstehen, was wir in unserem nächsten Thema lernen werden.
SQL und Studio 3T
Studio 3T ist eines der verfügbaren Programme, das bei der Verbindung von SQL und MongoDB hilft. Es hat eine SQL-Abfragefunktion, um eine zu erweitern, um SQL zu manipulieren. Die Abfrage wird in die Mongo-Shell interpretiert, um einen einfachen Abfragecode im Äquivalent der MongoDB-Sprache zu erzeugen. Neben einfachen Abfragen kann die Studio 3T-Anwendung jetzt Joins durchführen.
Für unsere obigen Beispieldaten können wir nach dem Verbinden Ihrer Datenbank in Studio 3T das SQL-Fenster verwenden, um das Dokument zu finden, das unseren Kriterien entspricht, z. B.:
SELECT * FROM students WHERE name LIKE 'James%';
Wenn Sie ein Dokument haben, dessen Namensfeld auf den Wert James gesetzt ist, wird es zurückgegeben. Wenn Sie auf die Registerkarte Abfragecode klicken, wird Ihnen ebenso ein Fenster mit dem entsprechenden MongoDB-Code angezeigt. Für die obige Aussage haben wir:
db.getCollection("students").find(
{
"name" : /^James.*$/i
}
);
Zusammenfassung
Manchmal möchten Sie vielleicht aufgrund Ihrer SQL-Kenntnisse schnell mit MongoDB interagieren. Wir haben einige grundlegende Codeähnlichkeiten zwischen SQL und seinem Äquivalent in MongoDB gelernt. Darüber hinaus verfügen einige Programme wie Studio 3T über gut etablierte Tools zum Konvertieren der SQL-Abfrage in eine MongoDB-äquivalente Sprache und zur Feinabstimmung dieser Abfrage für bessere Ergebnisse. Nun, für die meisten von uns wird dies ein großartiges Werkzeug sein, um unsere Arbeit zu erleichtern und sicherzustellen, dass der Code, den wir am Ende haben, sehr optimal für die Leistung unserer Datenbank ist. In Teil 2 dieses Blogs werden wir etwas über SQL INNER JOIN in MongoDB lernen.