AnkündigungWir stellen MongoDB 8.0 vor, das schnellste MongoDB aller Zeiten! Mehr erfahren >
AnkündigungVoyage AI und MongoDB unterstützen ab sofort gemeinsam genauere und vertrauenswürdigere KI-Anwendungen auf Atlas. Mehr erfahren >

Schritt für Schritt

Neben den anderen Stacks wie MERN und MEAN erfreut sich ein weiterer Stack zunehmender Beliebtheit: der FARM-Stack.

Der FARM-Stack hat aufgrund der Verwendung von Technologien wie MongoDB und React eine ähnliche Lernkurve wie der MEAN-Stack und der MERN-Stack. Durch die Verwendung einer Kombination aus FastAPI, React und MongoDB werden die Leistung, die Geschwindigkeit und die einfache Entwicklung der Anwendung erheblich verbessert.

Inhaltsverzeichnis:

FARM-Stack erklärt

FARM-Stack ist ein Technologie-Stack, der vier der beliebtesten Technologien zusammenführt:

  • FastAPI – ein Python-basiertes Back-End-Framework
  • React – Front-End-JavaScript-Bibliothek
  • MongoDB – die flexible Schema-NoSQL-Datenbank

Technologie-Stack

Ein Technologie-Stack ist ein Stack aus verschiedenen Frontend-, Backend- und Datenbanktechnologien, die zusammenarbeiten, um eine End-to-End-Anwendung, wie eine Webanwendung, zu erstellen. Ein Technologie-Stack kann vorgefertigt sein – wie die MEAN, MERN und FARM Stacks – oder je nach Ihren spezifischen geschäftlichen Anwendungsfällen angepasst werden.

Der FARM-Stack ist ein vollständiger Technologie-Stack, der das Frontend (React), Backend (Fast API) und die Datenbank (MongoDB) verwendet. Ein guter Tech-Stack sollte skalierbar, kostengünstig und auf Geschwindigkeit und Leistung optimiert sein.

Typischerweise wird das Frontend (die Benutzer-/Client-Seite) einer Anwendung aus Technologien wie HTML, CSS und JavaScript erstellt. React ist eine auf diesen Technologien basierende Bibliothek, die eine verbesserte Entwickler- und Benutzererfahrung bietet.

Das Backend besteht aus einem Web server und der serverseitigen Programmiersprache. Hier befindet sich die Geschäftslogik der Anwendung. Im FARM-Stack verwenden wir die FastAPI, ein blitzschnelles Web-Framework, das auf dem Starlette-Framework aufbaut.

FastAPI gewinnt aufgrund seiner auffälligen Funktionen wie der integrierten Datenvalidierung und der automatischen interaktiven API-Dokumentation schnell an Dynamik. Fast API basiert auf der Asynchronous Server Gateway Interface (ASGI), was bedeutet, dass es asynchrone Programmierung unterstützt, was es unglaublich schnell macht.

Die unterste Ebene des Stacks ist die Datenbankebene, die als Speicherhub für alle Daten fungiert. Aufgrund der Natur der heutigen Daten – die aus mehreren Quellen stammen, in verschiedenen Formaten vorliegen und sehr umfangreich sind – benötigen wir eine Datenbank, die solche unstrukturierten Daten flexibel bewältigen kann.

MongoDB, die beliebteste NoSQL-Datenbank, bietet die perfekte Plattform zum Speichern, Verarbeiten, Analysieren und Abrufen der großen Datenmengen, die Unternehmen erfassen möchten. Die ausdrucksstarke Abfragesprache, die Aggregationen und viele weitere Funktionen von MongoDB stellen sicher, dass Ihre Anwendung genau die Daten erhält, die Sie suchen, und erspart den Entwicklern die Notwendigkeit, Code für umfangreiche Bearbeitungen und Transformationen der Daten zu schreiben.

Funktionen, die den FARM-Stack ausmachen

Der FARM-Stack verfügt über eine Kombination aus leistungsstarken Technologien, die eine schnelle Entwicklung ermöglichen, problemlos mehrere gleichzeitige Verbindungen über Coprogrammen bewältigen können und leicht zu erlernen sind.

Wie funktioniert der FARM-Stack?

Der FARM-Stack ist einfach zu verstehen und hat eine minimale Lernkurve. Sie müssen nur mit JavaScript, Python und MongoDB vertraut sein und können problemlos Projekte erstellen. Diese Technologien sind auch für viele andere Stacks und Unternehmen nützlich, sodass das Erlernen dieser für Ihre Laufbahn von entscheidender Bedeutung sein könnte.

Ein Benutzer kann einen der folgenden Vorgänge in der Anwendung durchführen:

HTTP-Anfrage

  • POST
  • GET
  • PUT
  • DELETE

Entsprechende CRUD-Operation

  • C = Erstellen/Einfügen
  • R = Lesen
  • U = Aktualisieren
  • D = Löschen

 

Immer wenn ein Benutzer eine HTTP-Anfrage für eine dieser Optionen stellt, erstellt React die Anfrage mit den erforderlichen Parametern und sendet sie an den Back-End-Server. Im Backend leitet FastAPI die Anfrage an die entsprechende Methode weiter und ruft die entsprechende Datenbankmethode auf, um die Operation durchzuführen. Sobald die Abfrage auf Datenbankebene erfolgreich ausgeführt wurde, wird die Antwort vom Backend empfangen, verarbeitet und an das React-Frontend gesendet. React zeigt dem Benutzer dann die Erfolgs-/Fehlermeldung an.

React-Frontend

Die React JS-Bibliothek beschleunigt die Entwicklung produktionsreifer Front-End-Anwendungen, indem sie viele sofort einsatzbereite gängige Dienstprogramme und Komponenten bereitstellt, die wiederverwendet werden können. Als Teil des FARM-Stacks wird React verwendet, um HTTP-Anfragen an das Backend zu senden und die Backend-Antwort auf dem Frontend anzuzeigen.

React JS verwendet virtuelles OD, das nur die geänderten Teile der Anwendung aktualisiert und nicht die gesamte Baumstruktur. Das macht die Anwendung schnell. Eine weitere bemerkenswerte Funktion ist die JSX-Syntax (JavaScript Extension), mit der Sie JavaScript-Elemente in HTML-Tags hinzufügen können. Daher wird jede Änderung des Werts des Elements sofort widergespiegelt, ohne dass eine Aktualisierung oder ein Serverneustart erforderlich ist.

Stellen Sie sich eine einfache HTTP-Anfrage vor, die von einem Benutzer gestellt wurde, um seine Mobiltelefonnummer zu aktualisieren. React speichert die vom Benutzer eingegebenen Daten mithilfe eines einfachen Shards (useState).

Diese Daten werden mithilfe der PUT-Anfrage im JSON-Format an die Anwendungsschicht gesendet.

Da der FARM-Stack die asynchrone Programmierung unterstützt, können wir die axios JS-Bibliothek verwenden, die auf Promises basiert und alle Browser unterstützt. Durch die Verwendung von Apios können wir die Komplexität der Erstellung und Konfiguration von HTTP-Anfragen abstrahieren.

Obwohl React viele Datenformate akzeptiert, wird das JSON-Format am meisten bevorzugt, da es leicht ist und weniger Bandbreite benötigt.

FastAPI

FastAPI ist ein asynchrones Web-Framework, das auf Python basiert. Im FARM-Stack fungiert Fast API als Middleware, die die von der React-App empfangenen HTTP-Anfragen verarbeitet und die Antwort zurücksendet. FastAPI läuft auf dem uvicorn Server, der auf der ASGI-Serverbeschreibung für asynchrone Webserver basiert.

Die schnelle API nutzt blockierungsfreie E/A-Operationen, um mehrere gleichzeitige Lasten durch Coroutes zu bewältigen. Wenn beispielsweise mehrere Anfragen eingehen, um eine Mobiltelefonnummer auf einem Online-Portal zu aktualisieren, erstellt FastAPI eine Coroute, in der mehrere Anfragen parallel verarbeitet werden können.

Nehmen wir an, es gibt fünf gleichzeitige Anforderungen, um eine Mobiltelefonnummer zu aktualisieren. Wenn jeder von ihnen einzeln verarbeitet werden würde, wäre das eine CPU- und Zeitverschwendung. Mit dem Schlüsselwort async aus der asyncio-Bibliothek von Python können wir mit der parallelen Verarbeitung der Anforderungen beginnen. Nehmen wir an, die erste Anfrage wartet auf die Abrufergebnisse (Finden der Mobiltelefonnummer, die aktualisiert werden soll). Diese Wartezeit kann genutzt werden, um die zweite Anfrage usw. zu initiieren. Auf diese Weise ist jede Anfrage völlig unabhängig von den anderen und es gibt keine Blockierung oder Wartezeit.

In der obigen Coprogramm ist main() der Einstiegspunkt des Programms, nach dem jede Anfrage asynchron als separate Coprogramm verarbeitet wird.

Das von FastAPI bereitgestellte Framework bietet:

  • Volle Unterstützung für asynchrone Programmierung, dadurch hohe Leistung.
  • Abhängigkeitsinjektion, d. h. die Deklaration der Projektabhängigkeiten und deren Einspeisung zur Laufzeit.
  • Datenvalidierung und -serialisierung mit der pydantischen Bibliothek.
  • Asynchrone Programmierung mit der Python-Bibliothek asyncio.
  • Automatische API-Dokumentation für die API-Endpunkte mit Swagger.
  • Typhinweise und Anmerkungen.

Wir können Python-Decorators @app.get verwenden, @app.put usw.), um die HTTP-Anfragen und Routing-Pfade zu definieren.

Als nächstes können Sie über den Weg oder die Abfrageparameter der Anfrage auf die Eingabedaten zugreifen. Die Verwendung der pydantischen Bibliothek übernimmt die Datenüberprüfung.

Sie können dann die asynchrone Funktion erstellen, die die Mobiltelefonnummer in der MongoDB Collection aktualisiert:

In einem realen Fall möchten Sie die Mobiltelefonnummer höchstwahrscheinlich basierend auf einem Kriterien, wie z. B. einer Kunden-ID, aktualisieren. In diesem Fall können Sie im FastAPI-Endpunkt (Routing-URL) einen Wegparameter hinzufügen:

Die asynchrone Funktion zur Aktualisierung der Mobiltelefonnummer nimmt die customer_id zusammen mit der zu aktualisierenden Mobiltelefonnummer als Parameter:

Das „Ergebnis“ ist ein BSON-Dokument, das vom asynchronen Treiber Engine automatisch in ein Python-Wörterbuch konvertiert wird. FastAPI konvertiert es dann in eine JSON-Antwort.

Sie können auf der Grundlage des Ergebnisses auch eine benutzerdefinierte Antwort im FastAPI-Code erstellen.

Die React-Anwendung verwendet Hacks, um einen variablen Status festzulegen. Sie können also die Antwort einfach in die Variable festlegen und React zeigt sie auf der Startseite an:

FastAPI verwendet Abhängigkeiten, um integrierte Unterstützung für die Verwaltung von Berechtigungen und rollenbasierte Zugriffskontrolle zu bieten – beispielsweise die Authentifizierung eines Benutzers oder die Autorisierung des Zugriffs auf eine Route.

Asynchronous Server Gateway Interface (ASGI)

ASGI stellt Spezifikationen zum Erstellen asynchroner Anwendungen und Server in Python bereit. Dadurch können Anwendungen E/A-Operationen wie Datenbankabfragen oder Netzwerkanfragen ausführen, ohne andere Operationen zu blockieren. ASGI ist so konzipiert, dass es zusätzlich zu den üblichen HTTP-Anfragen und -Antworten auch langlebige Verbindungen bewältigen kann. Diese Funktion macht sie für Echtzeitanwendungen nützlich, bei denen eine bidirektionale Kommunikation zwischen Client und Server erforderlich ist.

des Uvicorn-Webservers

Uvicorn ist ein asynchroner Webseiten-Server, der auf den ASGI-Vorgaben basiert. Es bietet eine hohe Leistung und eignet sich sehr gut, um hohe Anwendungslasten effizient zu bewältigen. Python-Entwickler, die Fast API verwenden, können den uvicorn Server verwenden, um ihre Anwendungen bereitzustellen und zu verwalten. Uvicorn unterstützt auch Web-Sockets. FastAPI ist mit einigen anderen Servern wie Hypercorn und Quant kompatibel, wird jedoch aufgrund seiner Leistung und Stabilität bevorzugt.

Treiber für Engine Async

Engine ist ein async-Treiber zur Verbindung von FastAPI (Python) und MongoDB. Er ähnelt dem PyMongo-Treiber, ist jedoch für asynchrone Anwendungen geeignet. Engine ist auch mit der Community- oder Enterprise-Version des MongoDB Servers kompatibel. Weitere Informationen zum Motor finden Sie auf der Dokumentationsseite.

MongoDB-Datenplattform

MongoDB ist die Datenschicht, die die Daten entsprechend den Anforderungen der Anwendung speichert und abruft.

MongoDB ist eine Dokumentdatenbank, die Daten in einem JSON-ähnlichen Format speichert, das als BSON (Binary JavaScript Object Notation) bekannt ist. Aufgrund seines Dokumentmodells bietet MongoDB eine hohe Flexibilität bei der Speicherung von Daten und passt sich problemlos an alle Schemaänderungen an.

MongoDB-Datenbanken gibt es in verschiedenen Varianten – als MongoDB-Unternehmensdatenbank, als MongoDB-Community-Datenbank und als Cloud-Datenbank (Atlas). Mit MongoDB Atlas müssen Sie nichts installieren. Erstellen Sie einfach ein kostenloses Konto und Sie können einen Cluster einrichten.

MongoDB bietet effiziente Datenmodellierungs optionen, um die Leistung zu optimieren und gleichzeitig die Datenkonsistenz und -flexibilität beizubehalten. Um beispielsweise Datenmodelle für Ihre FARM-Stack-Anwendung zu erstellen, können Sie die Workload definieren und die verschiedenen Arten von Beziehungen zwischen den Haupteinheiten identifizieren – eine 1:1-, 1:many- oder Many:many-Beziehung. Auf dieser Grundlage können Sie Ihre Dokumentenstruktur festlegen. MongoDB folgt der einfachen Regel, dass Daten, auf die zusammen zugegriffen wird, gemeinsam gespeichert werden sollten. Sie können wählen, ob Sie alle relevanten Details einer Entität in ein einziges Dokument einbetten oder die Daten normalisieren und mit Kennungen darauf referenzieren (wie in einer relationalen Datenbank).

MongoDB Atlas ist eine cloud Datenentwicklungsplattform, die umfassende Funktionen zur Verwaltung moderner Anwendungen bietet – z. B. integrierte hohe Verfügbarkeit und Fehlertoleranz, automatische Sicherung und Wiederherstellung, vertikale und horizontale Skalierbarkeit, automatische Serverbereitstellung, Einrichtung, Konfiguration und Patching.

MongoDB’s umfangreiche Framework in Verbindung mit den umfangreichen wissenschaftlichen Bibliotheken von Python eignet sich am besten für die heutigen Anwendungsfälle von KI und maschinellem Lernen, wie Betrugserkennung, Echtzeit-Datenanalyse, gezielte Kundenempfehlungen, Analyse des Nutzerverhaltens usw. Mit MongoDB Atlas erhalten Sie Zugriff auf zusätzliche Funktionen wie Atlas Search, MongoDB Charts, App Services, BI-Tools Connector, Data Federation, Stream-Verarbeitung und vieles mehr.

Um eine MongoDB-Verbindung über das FastAPI-Backend zu erstellen, legen Sie einfach die URL fest und öffnen dann die Datenbank-Collection:

Sobald Sie die Verbindung hergestellt und die Datenbank erhalten, können Sie diese verwenden, um beliebige CRUD-Operationen mit den entsprechenden Methoden durchzuführen – zum Beispiel der update_one() -Methode, die wir im Abschnitt FastAPI verwendet haben.

Eine vollständige FARM-Stack-Anwendung können Sie mithilfe unserer TODO-Anwendung erstellen. Sie erhalten eine Anleitung zum End-to-End-Code und zu den Einstellungen, die für die Erstellung Ihrer Anwendung erforderlich sind.

Full Stack FastAPI App-Generator für Python-Entwickler

MongoDB bietet den Full Stack FastAPI App Generator für Python-Entwickler. Bisher mussten Python-Entwickler Komponenten wie Authentifizierung, Tests und Integration manuell in die Hauptanwendung integrieren. Der MongoDB Full Stack FastAPI App Generator bietet ein gut strukturiertes App-Gerüst und erleichtert so die anfängliche Projekteinrichtung. Einige der wichtigsten Funktionen des App-Generators sind:

  • Ein vollständiger Webanwendungs-Stack durch die Integration von Frontend- und Backend-Komponenten.
  • Ein integriertes Authentifizierungssystem.
  • Tools für den Betrieb und die Überwachung

FARM-Stack vs. MERN-Stack

Sowohl der FARM- als auch der MERN-Stack verwenden React und MongoDB, die hohe Flexibilität und Leistung bieten. Der Unterschied liegt in der Verwendung von Node.js und FastAPI. Die Wahl eines der beiden Stacks hängt von Ihrem geschäftlichen Anwendungsfall oder Ihren persönlichen Vorlieben ab.

  • Der MERN-Stack hat eine kürzere Lernkurve, da ein Entwickler nur JavaScript-Code sowohl für das Backend als auch für die Frontends lernen und schreiben muss, während man für den FARM-Stack auch Python lernen muss. Darüber hinaus bietet der MERN-Stack eine einheitliche Erfahrung und eine bessere Lesbarkeit und Wartungsfreundlichkeit des Codes.
  • Node.js erfreut sich mehr Community-Unterstützung und verfügt über eine umfangreiche Dokumentation für eine große Anzahl von Anwendungsfällen und Domänen.

Allerdings schneidet FastAPI in puncto Datenanalyse und Data Science Support viel besser ab:

  • Python verfügt über eine riesige Umgebung fortschrittlicher Bibliotheken für Datenwissenschafts- und maschinelle Lernaufgaben, so dass es einfach ist, Analyse- und Datenverarbeitungspipelines in Webanwendungen hinzuzufügen. Node.js unterstützt diese Bibliotheken zwar, sie sind jedoch nicht so umfassend wie Python-Bibliotheken.
  • Das intuitive API-Design von FastAPI, die automatische Generierung der OpenAPI-Dokumentation und die integrierte Unterstützung für die Datenvalidierung vereinfachen die API-Entwicklung und machen sie für Entwickler aller Erfahrungsstufen zugänglich. Node.js kann aufgrund der Konzepte der callback-basierten Programmierung und der Komplexität der Verwaltung von Abhängigkeiten für Anfänger schwierig zu erlernen sein.
  • Während Python streng typisiert ist, ist JavaScript flexibel typisiert, was zu Laufzeitfehlern führen kann.

Anwendungsfälle für den FARM-Stack

Der FARM-Stack eignet sich für eine Vielzahl von Anwendungsfällen in verschiedenen Domänen und Branchen, von denen einige unten aufgeführt sind:

  • Erstellen dynamischer und interaktiver Websites und Webseiten: Auf dem Frontend bietet React den Benutzern ein interaktives und Echtzeit-Erlebnis, während Sie mit dem Backend FastAPI robuste REST APIs für die Authentifizierung, Autorisierung und Transaktionen erstellen können. Aufgrund seines flexiblen Schemas kann MongoDB problemlos an sich ändernde Anwendungsanforderungen und unterschiedliche Datenstrukturen angepasst werden, z. B. an E-Commerce-Plattformen und Content-Management-Systeme.
  • KI und Datenanalyse: Mit der Leistungsfähigkeit des MongoDB-Aggregations-Frameworks und der Python-Data-Science-Bibliotheken bietet der FARM-Stack eine robuste Grundlage für Entwickler, um Systeme für die Datenverarbeitung, Echtzeit-Analysen, die Gewinnung praktischer Erkenntnisse und die visuelle Berichterstellung zu erstellen. Das React-Frontend kann für interaktive Dashboards und Datenanalysen genutzt werden.
  • IoT (Internet of Things)-Anwendungen: Durch die Verwendung von React können Entwickler eine reibungslose Schnittstelle für die Fernüberwachung und -steuerung erstellen. FastAPI bewältigt Dienste wie Datenerfassung, Gerätekommunikation und Routing. MongoDB kann die Sensordaten, Metadaten und Logs speichern und für Analysen und die Erkennung von Anomalien verwenden.
  • Chat-Anwendungen: Die Echtzeit-Rendering-Funktionen von React ermöglichen eine reibungslose Echtzeit- Kommunikation zwischen dem Chat-Agenten und den Benutzern. Die Routing-Funktionen und die Websocket-Unterstützung von FastAPI ermöglichen die Bearbeitung von HTTP-Anfragen für Authentifizierung, Echtzeit-Messaging und bidirektionale Kommunikation. Aufgrund der flexiblen und skalierbaren Architektur von MongoDB eignet es sich hervorragend für die Verarbeitung dynamischer und sich entwickelnder Chat-Daten.

Fazit

Der FARM-Stack ist ein vielversprechender Technologie-Stack und bietet eine Vielzahl von Funktionen zum Erstellen hochflexibler, skalierbarer und leistungsstarker Anwendungen. In den kommenden Tagen sind weitere Innovationen und Fortschritte bei den Technologien zu erwarten, wobei der Schwerpunkt auf der Verbesserung der Entwicklererfahrung und -produktivität, der Automatisierung und der Integration mit anderen Technologien liegt, um neue Anwendungsfälle und Anwendungen zu ermöglichen. Sehen Sie sich das Tutorial von MongoDB.live an, um mit dem FARM-Stack zu beginnen.

FAQ

Erste Schritte mit MongoDB Atlas

Kostenlos testen
Abbildung der Datenbank.