Die meisten Softwareanwendungen beinhalten heutzutage eine gewisse dynamische Datenspeicherung für umfangreiche zukünftige Referenzen in der Anwendung selbst. Wir alle wissen, dass Daten in einer Datenbank gespeichert werden, die in zwei Kategorien fällt:Relationale und nicht relationale DBMS.
Ihre Wahl aus diesen beiden hängt vollständig von Ihrer Datenstruktur, der Menge der betroffenen Daten, der Datenbankleistung und der Skalierbarkeit ab.
Relationale DBMS speichern Daten in Tabellen in Form von Zeilen, sodass sie SQL (Structured Querying Language) verwenden, was sie zu einer guten Wahl für Anwendungen mit mehreren Transaktionen macht. Dazu gehören MySQL, SQLite und PostgreSQL.
Andererseits sind NoSQL-DBMS wie MongoDB dokumentenorientiert, sodass Daten in Sammlungen in Form von Dokumenten gespeichert werden. Dies ergibt eine größere Speicherkapazität für einen großen Datensatz und damit einen weiteren Vorteil bei der Skalierbarkeit.
In diesem Blog gehen wir davon aus, dass Sie entweder MongoDB oder MySQL besser kennen und daher die Korrelation zwischen den beiden in Bezug auf Abfragen und Datenbankstruktur kennenlernen möchten.
Nachfolgend finden Sie einen Spickzettel, um sich mit der Abfrage von MySQL an MongoDB vertraut zu machen.
Spickzettel von MySQL zu MongoDB - Begriffe
MySQL-Begriffe | MongoDB-Nutzungsbedingungen | Erklärung |
---|---|---|
Tabelle | Sammlung | Dies ist der Speicherbehälter für Daten, die in den enthaltenen Objekten tendenziell ähnlich sind. |
Zeile | Dokument | Definiert die einzelne Objektentität in der Tabelle für MySQL und die Sammlung im Fall von MongoDB. |
Spalte | Feld | Jedes gespeicherte Element hat Eigenschaften, die durch unterschiedliche Werte und Datentypen definiert werden. In MongoDB können Dokumente in derselben Sammlung unterschiedliche Felder haben. In MySQL muss jede Zeile mit denselben Spalten aus den vorhandenen definiert werden. |
Primärschlüssel | Primärschlüssel | Jedes gespeicherte Objekt wird mit einem eindeutigen Feldwert identifiziert. Im Fall von MongoDB haben wir das _id-Feld automatisch gesetzt, während Sie in MySQL Ihren eigenen Primärschlüssel definieren können, der inkrementell ist, wenn Sie neue Zeilen erstellen. |
Tabellenverknüpfungen | Dokumente einbetten und verknüpfen | Verbindung, die einem Objekt in einer anderen Sammlung/Tabelle zu Daten in einer anderen Sammlung/Tabelle zugeordnet ist. |
wo | $match | Auswahl von Daten, die den Kriterien entsprechen. |
Gruppe | $gruppe | Gruppieren von Daten nach bestimmten Kriterien. |
fallen lassen | $unset | Entfernen einer Spalte/eines Feldes aus einer Zeile/einem Dokument/ |
eingestellt | $set | Den Wert einer bestehenden Spalte/Feld auf einen neuen Wert setzen. |
Schemaanweisungen
MySQL-Tabellenanweisungen | MongoDB-Erfassungsanweisungen | Erklärung |
---|---|---|
Die Datenbank und die Tabellen werden explizit über das PHP-Admin-Panel erstellt oder in einem Skript definiert, z. B. Erstellen einer Datenbank Erstellen einer Tabelle | Die Datenbank kann implizit oder explizit erstellt werden. Implizit werden beim Einfügen des ersten Dokuments die Datenbank und die Sammlung erstellt sowie ein automatisches _id-Feld zu diesem Dokument hinzugefügt. Sie können die Datenbank auch explizit erstellen, indem Sie diesen Kommentar in der Mongo-Shell ausführen | In MySQL müssen Sie die Spalten in der Tabelle angeben, die Sie erstellen, sowie einige Validierungsregeln festlegen, wie in diesem Beispiel den Datentyp und die Länge, die zu einer bestimmten Spalte gehören. Im Fall von MongoDB ist es kein Muss, weder die Felder zu definieren, die jedes Dokument enthalten soll, noch die Validierungsregeln, die die angegebenen Felder enthalten sollen. In MongoDB können Sie jedoch für Datenintegrität und -konsistenz die Validierungsregeln mit dem JSON SCHEMA VALIDATOR festlegen |
Löschen einer Tabelle | | Dies sind Anweisungen zum Löschen einer Tabelle für MySQL und zum Sammeln im Fall von MongoDB. |
Hinzufügen einer neuen Spalte namens join_date Entfernen der Spalte join_date, falls bereits definiert | Hinzufügen eines neuen Felds namens join_date Dadurch werden alle Dokumente in der Sammlung aktualisiert, sodass das Beitrittsdatum das aktuelle Datum ist. Entfernen des Feldes join_date, falls bereits definiert Dadurch wird das Feld join_date aus allen Sammlungsdokumenten entfernt. | Ändern der Struktur des Schemas durch Hinzufügen oder Löschen einer Spalte/eines Felds. Da die MongoDB-Architektur die Dokumentstruktur nicht strikt durchsetzt, können Dokumente voneinander verschiedene Felder haben. |
Erstellen eines Index mit aufsteigender UserId-Spalte und absteigendem Alter | Erstellen eines Indexes mit den Feldern UserId und Age. | Indizes werden im Allgemeinen erstellt, um den Abfrageprozess zu erleichtern. |
| | Neue Datensätze einfügen. |
| | Löschen von Datensätzen aus der Tabelle/Sammlung, deren Alter gleich 25 ist. |
| | Löschen aller Datensätze aus der Tabelle/Sammlung. |
| | Gibt alle Datensätze aus der Tabelle/Sammlung des Benutzers mit allen Spalten/Feldern zurück. |
| | Gibt alle Datensätze aus der Benutzertabelle/Sammlung mit Alter, Geschlecht und Primärschlüsselspalten/-feldern zurück. |
| | Gibt alle Datensätze aus der Benutzertabelle/Sammlung mit Alters- und Geschlechtsspalten/-feldern zurück. Der Primärschlüssel wird weggelassen. |
| | Gibt alle Datensätze aus der Benutzertabelle/Sammlung zurück, deren Geschlechtswert auf M gesetzt ist. |
| | Gibt alle Datensätze aus der Benutzertabelle/Sammlung zurück, die nur den Geschlechtswert haben, aber deren Alterswert gleich 25 ist. |
| | Gibt alle Datensätze aus der Benutzertabelle/Sammlung zurück, deren Geschlechtswert auf F und Alter auf 25 gesetzt ist. |
| | Gibt alle Datensätze aus der Benutzertabelle/Sammlung zurück, deren Alterswert ungleich 25 ist. |
| | Gibt alle Datensätze aus der Benutzertabelle/Sammlung zurück, deren Geschlechtswert auf F oder Alter auf 25 gesetzt ist. |
| | Gibt alle Datensätze aus der Benutzertabelle/Sammlung zurück, deren Alterswert größer als 25 ist. |
| | Gibt alle Datensätze aus der Benutzertabelle/Sammlung zurück, deren Alterswert kleiner oder gleich 25 ist. |
| | Gibt alle Datensätze aus der Benutzertabelle/Sammlung zurück, deren Name-Wert zufällig He-Buchstaben enthält. |
| | Gibt alle Datensätze aus der Benutzertabelle/Sammlung zurück, deren Geschlechtswert auf F gesetzt ist, und sortiert dieses Ergebnis in aufsteigender Reihenfolge der ID-Spalte im Fall von MySQL und der eingefügten Zeit im Fall von MongoDB. |
| | Gibt alle Datensätze aus der Benutzertabelle/Sammlung zurück, deren Geschlechtswert auf F gesetzt ist, und sortiert dieses Ergebnis in absteigender Reihenfolge der ID-Spalte im Fall von MySQL und der eingefügten Zeit im Fall von MongoDB. |
| oder | Zählt alle Datensätze in der Benutzertabelle/Sammlung. |
| oder | Zählt alle Datensätze in der Benutzertabelle/Sammlung, die zufällig einen Wert für die Name-Eigenschaft haben. |
| oder | Gibt den ersten Datensatz in der Benutzertabelle/Sammlung zurück. |
| | Gibt den ersten Datensatz in der Benutzertabelle/Sammlung zurück, der zufällig einen Geschlechtswert gleich F hat. |
| | Gibt die fünf Datensätze in der Benutzertabelle/Sammlung zurück, nachdem die ersten fünf Datensätze übersprungen wurden. |
| | Dies setzt das Alter aller Datensätze in der Benutzertabelle/Sammlung, die ein Alter von mehr als 25 haben, auf 26. |
| | Dadurch wird das Alter aller Datensätze in der Benutzertabelle/Sammlung um 1 erhöht. |
| | Dadurch wird das Alter des ersten Datensatzes in der Benutzertabelle/Sammlung um 1 verringert. |
Um MySQL und/oder MongoDB zentral und von einem einzigen Punkt aus zu verwalten, besuchen Sie:https://severalnines.com/product/clustercontrol.