Verwenden Sie ein ORM in MongoDB
MongoDB stellt eine NoSQL-Lösung für die Datenspeicherung und -verwaltung vor, die aus Dokumenten besteht, die im JSON-Stil dargestellt werden. Wie andere Datenbanksysteme kann auch MongoDB mit einem ORM arbeiten.
In diesem Artikel erklären wir das Konzept von ORMs in MongoDB und im Allgemeinen.
Objektrelationale Zuordnung (ORM)
Object Relational Mapping ist eine Technik, die die Arbeit mit Daten in relationalen Datenbanksystemen erleichtert. Es dient als Verbindungsbrücke zwischen Ihrem Geschäftsmodell und Ihren Speicherdatenbanken.
Ein ORM funktioniert, indem es die als Relationen in der Datenbank gespeicherten Daten Objekten in der Sprache Ihrer Anwendung zuordnet. Dies bietet demjenigen, der den Code schreibt, den Vorteil der Einfachheit der Programmierung, da auf die Daten nun unter Verwendung derselben Programmiersprache natürlich und flüssig zugegriffen werden kann.
Lassen Sie uns weiter erklären, wie dies möglich ist.
Beim Arbeiten mit einer objektorientierten Sprache muss der Programmierer Daten in der Geschäftslogikschicht als Objekte speichern. Diese Daten werden gleichzeitig in Form von Tabellen oder Relationen in einer relationalen Datenbank gespeichert.
Das Übersetzen dieser relationalen Daten in Objekte während des Codierens kann zu einer hässlichen Anwendung führen. Es ist auch fehleranfälliger, da der Programmierer mit zwei separaten Sprachen in einer Anwendung arbeiten und Rohabfragen schreiben muss.
Daher bietet ORM die Lösung für dieses Problem, indem es diesen Prozess vereinfacht.
Hinweis: Das Entfernen eines ORM aus einer Anwendung, nachdem es versendet wurde, ist sehr schwierig (und teuer!). Daher muss vorher entschieden werden, ob ein ORM den Prozess vereinfacht, Leistungsprobleme einführt und entsprechend vorgeht.
ORM in MongoDB
Die Frage stellt sich nun, da MongoDB eine NoSQL-Lösung ist und keine Relationen verwendet. Gilt noch ein ORM dafür? Die Antwort ist ja, ORMs können auch in MongoDB verwendet werden, aber hier sind sie eher als ODMs bekannt.
ODM steht für Object Document Mapping und ersetzt Relational
durch Document
, da MongoDB Daten in Dokumenten speichert.
Für NoSQL-Datenbanken wie MongoDB ist die Verwendung eines ODM kein so großer Vorteil, da sie bereits einfacher sind. Aber es bringt den zusätzlichen Vorteil, dass die Entwicklerproduktivität verbessert wird, was für die Gesamtleistung der Anwendung wesentlich ist.
ODMs werden jedoch immer noch häufig mit MongoDB verwendet. Dies liegt daran, dass ODMs helfen können, die logischen Beziehungen zwischen Daten zu nutzen, die sonst nicht einfach dargestellt werden können, da es unmöglich ist, solche Beziehungen in NoSQL zu identifizieren.
Ohne ODM muss der Programmierer diese Codebeziehungen manuell erzwingen. Da MongoDB über eine dokumentenorientierte Architektur verfügt, eignet es sich sehr gut für die Integration mit einem ODM, da die Dokumente auch als Objekte bezeichnet werden können.
Daher wird zusammen mit MongoDB ein ODM-Framework verwendet, um eine Abstraktion über die Datenmodellebene bereitzustellen.
Hinweis: Wenn Sie mit MongoDB noch nicht vertraut sind, wird empfohlen, die Verwendung eines ODM zu überspringen und mit niedrigeren Abstraktionsebenen zu arbeiten. Dies wird Ihnen helfen, sich besser mit der Funktionsweise der Datenbanksoftware vertraut zu machen und Sie mit ihrer Nutzung vertraut zu machen, anstatt sich hinter dem hohen Abstraktionsgrad zu verstecken, den ein ODM bietet.
Beispiele für ORMs für MongoDB
Es gibt zahlreiche ORM-Bibliotheken für MongoDB, die für verschiedene Sprachen geschrieben wurden.
Einige von ihnen sind auch Open Source. Wir werden uns in diesem Artikel einige Beispiele ansehen.
mongoisch
.
Mongoid
eignet sich für Anwendungen, die das Ruby-on-Rails-Framework verwenden. Durch die Verwendung des mongoiden
ODM als MongoDB-ORM für Ruby-basierte Anwendungen können Programmierer einfacher mit den Datenbankressourcen arbeiten, da sie bereits mit der Sprache vertraut sind, was den Vorteil der Verwendung eines ODM darstellt.
Als Beispiel hier ein Codefragment, das mit Mongoid
eine Instanz in die Datenbank einfügt.
Person.create!(
first_name: "Ali",
last_name: "Raza"
) # => Person instance
Es folgt ein Beispiel für eine MongoDB-Abfrage, die mit Mongoid
geschrieben wurde.
Person.
where(:dob.gte => "1990-01-01").
in(first_name: [ "Ali", "Raza" ]).
union.
in(first_name: [ "Ahmad" ])
Spring Data MongoDB
Die beliebteste Wahl unter Entwicklern für ein Java-basiertes ORM für MongoDB ist Spring Data MongoDB. Es bietet ein konsistentes Spring-basiertes Modell zum Programmieren neuer Datenbanken.
Sie können Spring Data MongoDB in Ihr Maven-Projekt integrieren, indem Sie die folgenden Abhängigkeiten in der Datei pom.xml
innerhalb des Tags <dependencyManagement>
verwenden.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-bom</artifactId>
<version>2022.0.0</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
Hinweis: Diese Abhängigkeiten verwenden die neueste Version zum Zeitpunkt des Schreibens dieses Artikels,
2022.0.0
.
MongoEngine
MongoEngine
ist ein ODM für MongoDB in Python. Es verwendet eine einfache High-Level-API und basiert auf PyMongo
, dem offiziellen MongoDB-Treiber für Python.
Hier ist ein Beispiel, wie Sie mit MongoEngine
ein Datenbankschema in Python erstellen können, indem Sie eine Klasse definieren, die von Document
erbt.
from mongoengine import *
import datetime
class Page(Document):
title = StringField(max_length=200, required=True)
date_modified = DateTimeField(default=datetime.datetime.utcnow)
Und hier sind einige einfache Abfragen für den Zugriff auf die Datenbank:
for page in Page.objects:
print page.title
myPage = Page.objects(title="Title")
Abschluss
In diesem Artikel haben wir ausführlich die Verwendung von ORMs in MongoDB beschrieben, die nützlich sind, um die Komplexität des Entwicklungsprozesses zu minimieren. Ein ORM dient als Übersetzer, der Ihre Datenbankdokumente in Objekte in der von Ihnen codierten Sprache umwandelt, was die Aufgabe für Programmierer vereinfacht.
Wir haben auch die Funktionsweise einiger Beispiele von MongoDB-ORMs aus der Vogelperspektive besprochen. Im Rahmen dieses Artikels wird es nicht möglich sein, auf die einzelnen Details einzugehen.
Wir hoffen, dass Sie das Konzept von ORM in MongoDB kennengelernt haben. Lerne weiter!
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub