Webanwendungen mit MongoDB - MongoDB ist eines der besten Tools für ernsthafte Webentwickler. In diesem Artikel über MongoDB wird alles behandelt, was Sie zum Erstellen von Webanwendungen mit MongoDB benötigen. Aber bevor wir beginnen, schauen wir uns das beliebte Tool genauer an.

Bildquelle: pixabay.com

Was ist MongoDB?

Im einfachsten Sinne ist MongoDB eine plattformübergreifende, dokumentenorientierte NoSQL-Datenbank, die JSON-ähnliche Dokumente mit dynamischen Schemata, sogenannten BSON-Dokumenten, verwendet, anstatt der herkömmlichen relationalen Datenbankstruktur (RDB) zu folgen.

Das sind viele Begriffe, mit denen Sie vielleicht nicht vertraut sind. Lassen Sie uns sie also zuerst aufschlüsseln.

Eine dokumentenorientierte Datenbank basiert nun auf dem Grundkonzept, dass ein Datendokument 'Metadaten' enthält. Diese Werte dienen dazu, den Datentyp zu identifizieren und das Speichern und Abrufen bei Bedarf zu vereinfachen. Betrachten wir zum Beispiel die folgenden zwei Datenzeilen:

  • John Hancock
  • Architekt

Ein Blick auf diese beiden Zeilen soll Ihnen eine Vorstellung davon geben, worauf sich diese Daten beziehen: Name und Beruf einer Person. Eine Maschine kann diese Unterscheidung jedoch nicht erkennen. Es muss die Art der Daten mitgeteilt werden.

In einer RDB kann dieser Typ in einem Schlüsselwertspeicher gespeichert werden, der vom Dokument selbst getrennt ist. Bei einer dokumentenorientierten Datenbank können Sie jedoch den Datentyp bestimmen, während Sie den Code eingeben. Am Ende schreiben Sie also ein bisschen wie folgt:

  • John Hancock
  • Architekt

Und los geht's. Jetzt wurde der Datentyp direkt im Dokument definiert. Dies bietet eine Flexibilität, die in RDBs nicht vorhanden ist, weshalb dokumentorientierte Datenbanken für Webanwendungen so beliebt sind.

Schließlich unterliegen Webanwendungen regelmäßigen Änderungen und Aktualisierungen. Natürlich haben RDBs auch ihre Vorteile, und dokumentenorientierte Datenbanken sind nicht für jede Situation perfekt, aber lassen Sie uns nicht abschweifen.

Kommen wir zu JSON, BSON und Schemata. JSON bezieht sich auf die JavaScript-Objektnotation, ist jedoch ein offenes Standarddatenformat, das mit anderen Sprachen als JavaScript arbeiten kann.

Ein Schema ist die Struktur der Datenbank, die bei RDBs als Tabellen definiert ist. Da dokumentorientierte Datenbanken solche Tabellen nicht verwenden, sind sie im Wesentlichen strukturlos oder schemenlos.

Was BSON betrifft, so steht dies nur für Binary JSON, und es ist das Datenspeicherformat für die MongoDB-Datenbank. Das ist alles, was Sie zu diesem Zeitpunkt darüber wissen müssen.

Schauen wir uns nun an, warum MongoDB eine gute Wahl für die Erstellung von Webanwendungen ist:

Warum sich für MongoDB entscheiden?

Es gibt mehrere Gründe für die Beliebtheit von MongoDB beim Erstellen von Webanwendungen. MongoDB ist kein perfektes Tool. weit davon entfernt. MongoDB hat mehrere Herausforderungen und ist nicht für alle Webanwendungen geeignet. MongoDB funktioniert jedoch aus den folgenden Gründen gut, wenn es um Webanwendungen geht:

  • MongoDB ist schemenlos

Die MongoDB-Datenbank kann Dokumentensammlungen enthalten, wobei jedes Dokument eine eigene Größe, einen eigenen Inhalt und eine eigene Anzahl von Feldern aufweist. Sie können zurückgehen und die Schlüsselwerte ändern oder sie hinzufügen und löschen, wie Sie möchten.

Dies macht auch die Struktur eines einzelnen Objekts klar und unkompliziert, und MongoDB kann bei Bedarf einfach skaliert werden.

  • MongoDB ist universell einsetzbar

Die Datenbank kann für eine Reihe von Webanwendungen verwendet werden, darunter Kundendatenverwaltung, Inhaltsverwaltung, Daten-Hubs, mobile Apps, Internet der Dinge, Big Data, Produkt- und Anlagenkataloge und Database-as-a-Service.

  • MongoDB unterstützt Auto-Sharding

Relationale Datenbanken werden im Allgemeinen vertikal skaliert, wobei ein einzelner Server die gesamte Datenbank hostet. Dies kann den Betriebsumfang einschränken, da die Lösung darin besteht, Server horizontal und hinzuzufügen, anstatt die Kapazität auf einen einzelnen Server zu konzentrieren.

Die gemeinsame Nutzung einer Datenbank wird durchgeführt, um dies zu vermeiden und die Hardware als einen einzigen Server zu fungieren. Entwickler müssen mehrere relationale Datenbanken maschinenübergreifend bereitstellen und Anwendungscode für die Verteilung der Daten, Abfragen und Aggregation der Ergebnisse entwickeln.

MongoDB und andere NoSQL-Datenbanken unterstützen die automatische Freigabe. Dies bedeutet, dass sie Daten automatisch auf verschiedene Server verteilen, ohne dass die Anwendung über die Zusammensetzung informiert wird.

MongoDB ist besonders nützlich beim Cloud Computing. Als Entwickler müssen Sie keine teuren und komplexen Plattformen für die Unterstützung von Webanwendungen erstellen, sondern können sich auf das Schreiben des eigentlichen Anwendungscodes konzentrieren.

Noch ein paar Begriffe, um mehr über MongoDB zu erfahren

Okay, wir haben nun die Grundlagen und Vorteile von MongoDB behandelt. Bevor wir uns die Hand schmutzig machen, schauen wir uns noch ein paar Begriffe an, mit denen Sie vertraut sein sollten:

  • Datenbank: Eine Datenbank enthält Sammlungen, und jede Datenbank verfügt über eigene Dateien im Dateisystem. Ein typischer MongoDB-Server verfügt über mehrere Datenbanken.
  • Sammlung: Eine Gruppe von MongoDB-Dokumenten wird als Sammlung bezeichnet. Dies entspricht einer Tabelle in RDBs. Eine einzelne Datenbank enthält eine Sammlung, und jedes Dokument enthält unterschiedliche Felder. Im Gegensatz zu Tablets haben Sammlungen kein Schema.
  • Dokument: Ein Dokument besteht aus einer Reihe von Schlüssel-Wert-Paaren und verfügt über ein dynamisches Schema. Dies bedeutet, dass verschiedene Dokumente in derselben Sammlung unterschiedliche Feldsätze und Strukturen aufweisen können.

    Empfohlene Kurse

  • Ruby-Debugging-Kurse
  • PHP MySQL Programmiertraining
  • Online-VB.NET-Programmiertraining
  • ITIL Foundation Schulungskurs

Erstellen von Webanwendungen

Die für diesen MongoDB-Leitfaden erstellten Webanwendungen sind RSS-Aggregatoren wie Google Reader. Die Webanwendungen bestehen aus zwei Hauptkomponenten: einer REST-API und einem Feed-Grabber.

Um zu verstehen, was eine REST-API ist, müssen Sie zunächst etwas über den MEAN-Stack wissen. Den Code für einen Feed Grabber findet man sogar im github-Verzeichnis.

Grundlegendes zum MEAN-Stack:

Der MEAN-Stack steht für Folgendes:

  1. MongoDB, die Datenbank, die für die Webanwendung verwendet werden soll
  2. js ist ein leichtes Framework für Webanwendungen
  3. js ist ein Framework zum Erstellen von JavaScript- und HTML5-reichen Webanwendungen
  4. js ist ein serverseitiger JavaScript-Interpreter

Für die hier behandelten Webanwendungen wird anstelle einer HTML-Benutzeroberfläche eine REST-API erstellt. Die REST-API (Representational State Transfer) ist eine leichtere Alternative zu XML-basierten APIs und kann trotz fehlender Benutzeroberfläche als Basis für jeden Schnittstellentyp dienen.

REST funktioniert auf einem Client-Server-Modell, wobei der Client HTTP-Befehle zusammen mit variablen Parametern, die in der URL kodiert sind, die das Zielobjekt der Aktion beschreibt, an den HTTP-Server sendet. Der Server antwortet dann mit dem JSON und dem Ergebniscode.

Jetzt reagieren MongDB und JavaScript gut auf JSON, sodass der MEAN-Stack besonders für Webanwendungen geeignet ist.

CRUD

Das Akronym CRUD steht für Erstellen, Lesen, Aktualisieren und Löschen. Hierbei handelt es sich um gängige Datenbankoperationen, die in HTTP als Posten, Abrufen, Ablegen und Löschen übersetzt werden.

Erstellen einer REST-API

Beginnen wir mit der Erstellung einer REST-API und der Entwicklung der Grundlage für die Erstellung der Webanwendungen. Die Anwendung kann webbasiert oder für Android, iOS oder andere spezifische Plattformen konzipiert sein. Lassen Sie uns zunächst die Aufgaben auflisten, die die App ausführen kann:

  1. Benutzern erlauben, ein Konto zu erstellen
  2. Aktivieren Sie sie, um Feeds zu abonnieren oder abzubestellen
  3. Geben Sie ihnen die Möglichkeit, Feed-Einträge als gelesen oder ungelesen zu markieren
  4. Verfolgen Sie RSS-Feeds zur Überwachung
  5. Speichern Sie Benutzerinformationen in ihren jeweiligen Konten
  6. Verfolgen Sie Abonnements für Benutzer-Feeds
  7. Verfolgen Sie einen Feed-Eintrag, der bereits von einem Benutzer gelesen wurde

Datenmodellierung

Basierend auf den Anforderungen benötigen die Webanwendungen vier Sammlungen zum Verwalten der Informationen:

  1. Benutzersammlung
  2. Feed-Sammlung
  3. Zuordnungssammlung für Benutzer-Feed-Einträge
  4. Feed-Eintragssammlung

Hier ist ein genauerer Blick auf jeden:

  • Feed-Sammlung:

Der folgende JSON-Code ist ein gutes Beispiel für die Modellierung einer Feedsammlung:

( "_id, ObjectId("523b1153a2aa6a3233a91412")

"requiresAuthentication": false,

"permanentlyRemoved": false,

"feedURL": "http://feeds.reuters.com/reuters/topNews",

"title": "Reuters",

"bozoBitSet": false,

"enabled": true,

"etag": "4bL78iLSZud2iXd/vd10mYC32BE",

"link": "http://www.reuters.com/ ",

"permanentRedirectURL": null,

"description": "Reuters news feed” )

Das obige JSON-Dokument ist ein RSS-Feed für Reuters, der Informationen zu den neuesten auf der Website veröffentlichten Nachrichten aufzeichnet. Es gibt viele Felder, die Sie hier sehen, aber die wichtigsten, die für die Webanwendungen funktionieren, sind die URL des Feeds und die Feed-Beschreibung.

Die URL ist wichtig, um Inhalte aus der richtigen Quelle abzurufen, und die Beschreibung ist wichtig, da sie eine Zusammenfassung für den Feed enthält.

Der Rest der Felder ist für den internen Gebrauch bestimmt. Sie können nach Belieben weitere hinzufügen oder einige entfernen. Ganz oben im Dokument befindet sich das Feld _id. Jedes Dokument muss dieses Feld haben und die ID muss eindeutig sein.

Im obigen Beispiel wurde eine ID für das Feld manuell erstellt. Wenn Sie dies verpassen, erstellt MongoDB automatisch eine.

  • Verfolgen und Sammeln von Feed-Einträgen

Wenn Sie weitere Newsfeeds verfolgen möchten, können Sie weitere hinzufügen, indem Sie dasselbe Format wie oben verwenden. Nachdem Sie die Feeds hinzugefügt haben, ist es Zeit, sie zu verfolgen und zu sammeln. Im Folgenden finden Sie ein Dokument für die Erfassung von Feedeinträgen:

( "_id": ObjectId("523b1153a2aa6a3233a91412"),

"description": "Martin Shkreli, the poster boy for prescription drug price increases who was arrested for securities fraud this week, has stepped down from his post as chief executive officer of Turing Pharmaceuticals Inc, the company said on Friday”,

"title": "Turing Pharma names chairman to replace Shkreli as CEO",

"summary": "Turing Pharma names chairman to replace Shkreli as CEO”,

"content": (( "base": "http://www.reuters.com/",

"type": "text/html",

"value": ”LOTS OF HTML HERE",

"language": "en" )), "published Date": ISODate("2015-12-18T18:13:58+0000"),

"link": " http://www.reuters.com/article/us-usa-crime-shkreli-ceo-idUSKBN0U122R20151218",

"feedID": ObjectId("523b1153a2aa6a3233a913f8") )

Wieder sehen Sie das Feld _id ausgefüllt, zusammen mit einigen anderen Feldern wie der Beschreibung, der Zusammenfassung und dem Titel. Das Inhaltsfeld verwendet ein Array, und in MongoDB können in Arrays Dokumente gespeichert werden. Diese Unterdokumentanordnung kann insbesondere in Situationen nützlich sein, in denen alle Informationen zusammengehalten werden müssen.

Notieren Sie sich die feedID. Es hat den gleichen ObjectId-Typ und den Wert von _id wie das frühere Feedeintragsdokument für den Reuters-Feed. Dies bietet ein Referenzmodell, sodass Sie die Feedsammlung nach demselben ID-Wert abfragen können, um das Reuters-Dokument zurückzugeben.

  • Verfolgung des Benutzers

Hier ist ein Beispieldokument zum Verfolgen von Benutzern:

( "_id" : ObjectId("54ad6c3ae764de42070b27b1"),

"active" : true,

"email" : " ",

"firstName" : "John",

"lastName" : "Hancock",

"sp_api_key_id" : "6YQB0A8VXM0X8RVDPPLRHBI7J",

"sp_api_key_secret" : "veBw/YFx56Dl0bbiVEpvbjF”,

"lastLogin" : ISODate("2015-01-07T17:26:18.996Z"),

"created" : ISODate("2015-01-07T17:26:18.995Z"),

"subs" : ( ObjectId("523b1153a2aa6a3233a913f8"),

ObjectId("54b563c3a50a190b50f4d63b") ), )

Hier hat der Benutzer drei Schlüsselattribute: Vorname, Nachname und E-Mail-Adresse. Es gibt auch zwei Elemente, die mit der Stormpath-Benutzerverwaltungs-API verwendet werden können: sp_api_key_secret und sp_api_key_id.

Das letzte Feld, subs, ist das Subskriptionsarray und teilt dem Feed mit, dass der Benutzer abonniert ist.

  • Feedeintragszuordnung

Die letzte Sammlung ermöglicht die Zuordnung von Benutzern zu Feeds und die Verfolgung der gelesenen Feeds:

( "_id" : ObjectId("523b2fcc054b1b8c579bdb82"),

"read" : true,

"user_id" : ObjectId("54ad6c3ae764de42070b27b1"),

"feed_entry_id" : ObjectId("523b1153a2aa6a3233a91412"),

"feed_id" : ObjectId("523b1153a2aa6a3233a913f8") )

Wie Sie sehen, wird ein einfacher True / False-Boolescher Wert verwendet, um zu markieren, ob der Feed gelesen wurde oder nicht. Der Benutzer sollte nun die folgenden Funktionen ausführen können:

  1. Ein Profil erstellen
  2. Abonnieren oder Abbestellen von Feeds
  3. Feed-Einträge lesen
  4. Feeds oder Einträge als gelesen oder ungelesen markieren
  5. Setzen Sie das Passwort zurück

Hier ist eine Liste, wie diese Vorgänge HTTP-Routen und -Befehlen zugeordnet werden.

RouteBefehlBeschreibungVariablen
/ user / einschreibenPOSTRegistrieren Sie einen neuen BenutzerVorname
Familienname, Nachname
Email
Passwort
/ user / resetPasswordSTELLENPasswort zurücksetzenEmail
/EinspeisungenBEKOMMENErhalten Sie Feed-Abonnements für jeden Benutzer mit Beschreibung und ungelesener Anzahl
/ feeds / abonnierenSTELLENAbonnieren Sie einen neuen FeedFeed-URL
/ feeds / entriesBEKOMMENAlle Einträge für Feeds abrufen, die der Benutzer abonniert hat
/ feeds // einträgeBEKOMMENRuft alle Einträge für einen bestimmten Feed ab
/Einspeisungen/STELLENMarkieren Sie alle Einträge für einen bestimmten Feed als gelesen oder ungelesenread =
/ feeds // einträge /STELLENMarkieren Sie einen bestimmten Eintrag als gelesen oder ungelesenread =
/Einspeisungen/LÖSCHENAbonnieren Sie diesen bestimmten Feed nicht mehr

Secure HTTP ist die Standardmethode zum Senden vertraulicher Daten wie Kennwörter in einer Produktionsumgebung

Nächste Schritte: Authentifizierung in der realen Welt

Die Benutzerauthentifizierung ist wichtig für die sichere Verwaltung von Benutzern, Kennwörtern und Zurücksetzungen. Es gibt verschiedene Möglichkeiten, Benutzerkonten zu authentifizieren.

Sie können beispielsweise ein Passport-Plugin mit Node.js verwenden, das zur Authentifizierung bei Facebook-, Twitter- und Social Media-Konten hilfreich ist.

Das obige Beispiel hängt von der Verwendung von Stormpath ab, einer REST-API, die die Autorisierung und Authentifizierung über API-Schlüssel unterstützt und Benutzerverwaltung als Service bietet.

Empfohlene Artikel

In den folgenden Artikeln erfahren Sie mehr über die Webanwendungen mit MongoDB. Gehen Sie einfach über den Link.

  1. HTML5 vs Flash aufgeregt, um den Unterschied zu kennen?
  2. Java vs Node JS - 8 Unterschiede, die Sie kennen sollten
  3. Web-Test-Anwendung eine nützliche und umfassende Anleitung
  4. Verwendung von Web Templates HTML | Anwendung | Mobile | Beste
  5. Softwareentwicklung vs Webentwicklung
  6. So bereiten Sie Web Analytics-Tools auf Ihre Arbeit vor (Anleitung)
  7. MongoDB vs PostgreSQL: Was sind die Unterschiede
  8. Nützlicher Leitfaden für MongoDB vs Hadoop
  9. Beste Anleitung für MongoDB vs Cassandra