MongoDB ist eine beliebte NoSQL-Datenbank, die sich perfekt für eine Aufgabe wie das Speichern von Kom­men­ta­ren auf einer hoch fre­quen­tier­ten Website eignet. Ins­be­son­de­re wenn bei dieser Ver­füg­bar­keit und Ge­schwin­dig­keit im Vor­der­grund stehen. Diese Anleitung führt Sie Schitt für Schritt durch den Prozess, um mit MongoDB be­nut­zer­ge­ne­rier­te Kom­men­ta­re zu speichern und an­zu­zei­gen, die von einem Formular gesendet wurden, das keine Anmeldung erfordert.

An­for­de­run­gen

  • Ein Cloud Server unter Linux (CentOS 7)
  • MongoDB in­stal­liert und läuft.

Website-Kom­men­ta­re sind ein aus­ge­zeich­ne­ter An­wen­dungs­fall für MongoDB im Vergleich zu einer tra­di­tio­nel­len re­la­tio­na­len Datenbank. Die vom Benutzer ein­ge­ge­be­nen Daten (wie der Be­nut­zer­na­me) sind un­re­gel­mä­ßig, was bei einer re­la­tio­na­len Datenbank zu doppelten Da­ten­satz­kopf­schmer­zen führen kann. In Zeiten hoher Be­su­cher­zah­len, die eine hohe Per­for­mance erfordern, können Kom­men­ta­re schnell und in großer Zahl ein­ge­reicht werden.

Der Haupt­grund NoSQL für diesen Zweck zu wählen ist, dass Kom­men­ta­re nicht re­la­tio­nal sind. Es ist nicht er­for­der­lich, zu­sätz­li­che In­for­ma­tio­nen über jeden Kommentar in mehreren Tabellen zu speichern. Die einzigen Daten, die ge­spei­chert werden müssen, sind der Be­nut­zer­na­me, der Kommentar selbst, der Zeit­stem­pel und (optional) die ID des Kom­men­tars, auf den er ge­ant­wor­tet hat, für Websites, auf denen Kom­men­ta­re im Thread-Format angezeigt werden.

Free Cloud Server Trial
Virtual Private Server auf En­ter­pri­se-Level
  • KVM-basierte vServer für Ent­wick­ler
  • In­te­griert in die IONOS Compute Engine
  • Ska­lier­bar bis zur En­ter­pri­se-Cloud

Pro­jekt­über­sicht

Es gibt viele mögliche Ansätze für dieses Projekt. Eine der wich­tigs­ten Fragen die sich stelt lautet, ob jeder Kommentar als eigenes Dokument ge­spei­chert werden sollte, oder ob alle Kom­men­ta­re in ein einziges Dokument ein­flie­ßen sollten, das mit jedem neuen Kommentar ak­tua­li­siert wird.

Obwohl es einige Vorteile hat, alle Kom­men­ta­re in einem einzigen Dokument zu speichern, hat die Praxis mit MongoDB gezeigt, dass es sich empfiehlt Si­tua­tio­nen zu vermeiden in denen ein Dokument im Laufe der Zeit an Größe zunimmt. Außerdem kann das Speichern eines Do­ku­men­tes auf der Fetplatte mit zu­neh­men­der Größe zu Problemen beim Lesen/Schreiben führen.

Für dieses Tutorial werden wir jeden Kommentar als separates Dokument speichern.

Der Befehl zum Einfügen eines Kom­men­tars in die Datenbank lautet:

db.comments.insert({
    'parent_article_id': [ID of parent article],
    'posted': ISODate("[timestamp]"),
    'author': '[Author's name]',
    'comment_body': '[Text of comment]' })
  • parent_article_id: Die ID des Artikels, in dem der Kommentar hin­ter­las­sen wurde.
  • Autor: Der Name des Autors (ein Frei­form­feld, nicht au­then­ti­fi­ziert).
  • comment_body: Der Text des Kom­men­tars

Datenbank erstellen und einen Kommentar einfügen

Rufen Sie die Kom­man­do­zei­len-Shell von MongoDB auf:

mongodb

Erstellen Sie die Datenbank comment_tracker für das Projekt:

use comment_tracker

Füge den ersten Kommentar ein:

db.comments.insert({
    'parent_article_id': 1,
    'posted': ISODate("2017-03-22T19:53:59.526+0000"),
    'author': 'Alice',
    'comment_body': 'Test comment' })

MongoDB antwortet mit der Meldung, dass der Datensatz eingefügt wurde:

db.comments.insert({
...    'parent_article_id': 1,
...    'posted': ISODate("2017-03-22T19:53:59.526+0000"),
...    'author': 'Alice',
...    'comment_body': 'Test comment' })
WriteResult({ "nInserted" : 1 })

Wir können diesen Kommentar (und alle Inhalte der Datenbank) mit dem Befehl ansehen:

db.comments.find()

Dies gibt den einzigen Kommentar zurück, den wir bisher eingefügt haben:

{ "_id" : ObjectId("58d2df9d8da74c010860e576"), "parent_article_id" : 1, "posted" : ISODate("2017-03-22T19:53:59.526Z"), "author" : "Alice", "comment_body" : "Test comment" }

Füge einen zweiten Kommentar hinzu, um gute Er­geb­nis­se zu erzielen:

db.comments.insert({
    'parent_article_id': "1",
    'posted': ISODate("2017-03-22T22:11:08.526+0000"),
    'author': `Bob`,
    'comment_body': 'Hello everyone.' })

Um alle Kom­men­ta­re zu einem be­stimm­ten Artikel an­zu­zei­gen:

db.comments.find({ 'parent_article_id': "1" })
Tipp: Managed MongoDB von IONOS

Mit Managed MongoDB von IONOS können Sie sich auf das We­sent­li­che kon­zen­trie­ren. Ob In­stal­la­ti­on, Betrieb oder War­tungs­ar­bei­ten, IONOS sorgt für einen zu­ver­läs­si­gen Betrieb Ihrer hoch­per­for­man­ten Da­ten­ban­ken.

Zum Hauptmenü