‫Kursleiter: Genau wie in den vorherigen
‫Abschnitten sollten wir, bevor wir uns mit einer
‫neuen Technologie befassen, erst einmal lernen, worum es geht.
‫Lassen Sie uns in diesem Fall also lernen, was MongoDB
‫eigentlich ist, wie es funktioniert und einen
‫kurzen Überblick darüber gibt, wie es im Vergleich zu traditionelleren Datenbanken abschneidet.
‫Und beginnen wir mit einer einfachen Übersicht.
‫MongoDB ist also offensichtlich eine Datenbank,
‫und zwar eine sogenannte NoSQL-Datenbank.
‫Manche Leute sagen jetzt auch No S Q L,
‫aber ich werde einfach weiterhin "keine Fortsetzung" sagen, in Ordnung?
‫Die andere Art von Datenbank,
‫die etwas traditioneller ist, ist die relationale Datenbank,
‫mit der NoSQL oft verglichen wird.
‫Wie auch immer, in Mongo, was wir anstelle von MongoDB auch
‫sagen können, kann jede Datenbank eine oder mehrere Sammlungen enthalten.
‫Wenn Sie also tatsächlich
‫von einem dieser eher traditionellen relationalen Datenbanksysteme
‫stammen, können Sie sich eine Sammlung als Datentabelle vorstellen.
‫Dann kann jede Sammlung eine oder
‫mehrere Datenstrukturen enthalten, die als Dokumente bezeichnet werden, und
‫in einer relationalen Datenbank wäre
‫ein Dokument wiederum eine Zeile in einer Tabelle.
‫Jedes Dokument enthält also die Daten
‫über eine einzelne Entität, zum Beispiel
‫einen Blogbeitrag oder einen Benutzer oder eine Rezension oder
‫wirklich etwas anderes.
‫Du verstehst den Punkt, oder?
‫Jetzt ist die Sammlung wie die übergeordnete Struktur,
‫die all diese Entitäten enthält.
‫Zum Beispiel eine Blogsammlung für
‫alle Beiträge, eine Benutzersammlung oder eine Rezensionssammlung.
‫Und Sie können hier auch sehen,
‫dass das Dokument ein Datenformat hat, das JSON sehr ähnlich
‫ist, was uns die Arbeit
‫beim Umgang mit diesen Dokumenten erheblich erleichtern wird.
‫Und natürlich werden wir später noch viel darüber sprechen,
‫aber lassen Sie uns zunächst etwas über die Hauptfunktionen von Mongo erfahren.
‫Laut der MongoDB-Website ist MongoDB
‫also eine Dokumentendatenbank mit der gewünschten
‫Skalierbarkeit und Flexibilität
‫sowie mit der erforderlichen Abfrage und Indexierung.
‫Das klingt jetzt etwas übertrieben, also
‫versuchen wir zu verstehen, was das eigentlich bedeutet.
‫Wie wir bereits gesehen haben, ist MongoDB eine dokumentbasierte Datenbank,
‫die Daten in Dokumenten
‫speichert, die aus Feld-Wert-gepaarten Datenstrukturen wie JSON bestehen.
‫Auch hier werden Daten in diesem Dokument anstelle von
‫Zeilen in einer Tabelle
‫gespeichert, wie in traditionellen relationalen Datenbanken.
‫Es handelt sich also um eine NoSQL-Datenbank
‫und nicht um eine relationale.
‫Außerdem verfügt MongoDB über eine integrierte Skalierbarkeit, die
‫es sehr einfach macht, Daten auf
‫mehrere Computer zu verteilen, wenn Ihre
‫Apps immer mehr
‫Benutzer bekommen und eine Menge Daten generiert werden.
‫Was auch immer Sie tun, MongoDB wird es Ihnen sehr leicht
‫machen, zu wachsen.
‫Als nächstes ist ein weiteres großes Merkmal
‫von MongoDB seine große Flexibilität.
‫Es ist also nicht erforderlich, ein Dokumentdatenschema zu definieren, bevor es
‫mit Daten gefüllt wird, was
‫bedeutet, dass jedes Dokument eine andere Anzahl und Art
‫von Feldern haben kann.
‫Und wir können diese Felder auch ständig ändern.
‫Und all dies entspricht
‫wirklich einigen realen Geschäftssituationen und
‫kann daher ziemlich nützlich sein.
‫MongoDB ist auch ein sehr performantes Datenbanksystem.
‫Dank Funktionen wie eingebetteten Datenmodellen,
‫Indexierung, Sharding, den bereits
‫erwähnten flexiblen Dokumenten, nativer Duplizierung und
‫vielem mehr.
‫Und Sie müssen das natürlich nicht alles
‫wissen, aber es ist sicher schön zu wissen, dass MongoDB hochperformant ist,
‫wenn wir es brauchen.
‫Abschließend möchte ich nur hinzufügen, dass
‫MongoDB eine kostenlose Open-Source-Datenbank
‫ist, die unter der SSPL-Lizenz veröffentlicht wird.
‫Zusammenfassend können wir also sagen, dass MongoDB
‫ein großartiges Datenbanksystem
‫ist, um viele Arten moderner, skalierbarer
‫und flexibler Webanwendungen zu erstellen.
‫Und tatsächlich ist Mongo wahrscheinlich die am häufigsten verwendete
‫Datenbank ohne JS, und daher passt es
‫perfekt für uns in diesem Kurs.
‫Okay, lassen Sie uns nun
‫etwas tiefer über diese Dokumente sprechen, und
‫wenn wir von Anfang an auf
‫unser Blogpost-Beispiel zurückkommen, könnte dies eine sehr
‫einfache Darstellung eines einzelnen Postdokuments sein, oder?
‫Und jetzt nur zum Vergleich, hier sehen
‫Sie, wie genau dieselben Daten
‫als Zeile in einer relationalen Datenbank wie MySQL
‫oder sogar in einer Excel-Tabelle aussehen könnten, wenn
‫Sie daran gewöhnt sind.
‫Wie ich bereits
‫erwähnt habe, verwendet MongoDB ein JSON-ähnliches
‫Datenformat zur Datenspeicherung namens BSON.
‫Es sieht im Grunde genauso aus
‫wie JSON, ist aber typisiert,
‫was bedeutet, dass alle Werte einen Datentyp wie String,
‫Boolean, Datum und Lehrer, Doppelobjekt oder mehr haben.
‫All das erfahren wir später in der Praxis.
‫Das bedeutet also, dass alle MongoDB-Dokumente
‫tatsächlich typisiert werden,
‫was sich von JSON unterscheidet, in Ordnung?
‫Genau wie JSON haben auch diese BSON-Dokumente
‫Felder und Daten werden in
‫Schlüssel-Wert-Paaren gespeichert.
‫Andererseits wird in einer relationalen
‫Datenbank jedes Feld als Spalte bezeichnet.
‫Hier können Sie
‫also wieder sehen, wie diese Datenbanken Daten in
‫Tabellenstrukturen anordnen, während unsere JSON-Daten so viel flexibler sind.
‫Nehmen wir zum Beispiel
‫das Tag-Feld, wo wir eigentlich ein
‫Array haben, also haben wir im Grunde mehrere Werte für ein Feld, richtig?
‫Also MongoDB, Space und DV in diesem Fall.
‫Aber in relationalen Datenbanken ist das nicht wirklich erlaubt.
‫Wir können nicht mehrere Werte in einem Feld
‫haben und müssten daher tatsächlich Umgehungen dafür finden, was
‫dann mehr Arbeit und insgesamt
‫mehr Komplikation mit sich bringen könnte.
‫Ein weiteres äußerst wichtiges Feature in
‫MongoDB ist das Konzept eingebetteter
‫Dokumente, das wiederum in relationalen Datenbanken
‫nicht vorhanden ist.
‫In unserem Kommentarfeld hier
‫haben wir also ein Array, das drei Objekte enthält.
‫Eine für jedes
‫Dokument, und jedes von ihnen
‫könnte tatsächlich ein eigenes Dokument sein, oder?
‫Stellen Sie sich also vor, wir
‫hätten eine Kommentarsammlung, die eine Reihe von Kommentardokumenten enthält.
‫Jeder von ihnen könnte tatsächlich genau so
‫aussehen, also mit einem Autor und mit
‫dem Kommentartext, aber
‫stattdessen fügen wir diese Kommentare direkt in das
‫Blog-Post-Dokument ein, d. h. wir betten die Kommentardokumente direkt
‫in die ein Dokument posten.
‫Dieser Prozess des Einbettens oder Denormalisierens, wie
‫wir ihn auch nennen können, besteht im Wesentlichen
‫darin, einige verwandte Daten in ein
‫einziges Dokument einzubetten.
‫In diesem Beispiel beziehen sich die Kommentare auf den
‫Beitrag und sind daher im selben Dokument enthalten.
‫Und das macht eine Datenbank in
‫manchen Situationen performanter, weil es so
‫einfacher sein kann,
‫alle benötigten Daten auf einmal zu lesen.
‫Und das ist etwas, worüber wir viel sprechen werden, wenn
‫wir etwas über Datenmodellierung lernen, aber
‫im Moment hoffe ich, dass dies für Sie immer noch Sinn macht.
‫Das Gegenteil von Einbetten oder Denormalisieren ist
‫das Normalisieren, und so werden die Daten immer in
‫relationalen Datenbanken modelliert.
‫In diesem Fall ist es also nicht möglich, Daten einzubetten.
‫Die Lösung besteht also
‫darin, eine ganz neue Tabelle für
‫die Kommentare zu erstellen und die Tabellen dann
‫durch Verweis auf das ID-Feld der Kommentartabelle zu verbinden.
‫Wir werden in diesem Kurs keine relationalen
‫Datenbanken verwenden, aber ich glaube, es ist trotzdem wichtig,
‫die Unterschiede zu kennen, wenn
‫Sie ein guter Back-End-Entwickler werden wollen.
‫Wie auch immer, und jetzt
‫zum Abschluss noch zwei Dinge zu BSON-Dokumenten.
‫Erstens beträgt die maximale Größe für jedes
‫Dokument derzeit 16 MB, die sich jedoch in Zukunft möglicherweise erhöhen wird.
‫Und zweitens enthält jedes Dokument eine eindeutige ID,
‫die als Primärschlüssel dieses Dokuments fungiert.
‫Es wird jedes Mal automatisch mit dem Objekt-ID-Datentyp generiert, wenn
‫es ein neues Dokument gibt,
‫sodass wir uns nicht darum kümmern müssen.
‫In Ordnung, und das sollte ein kurzer Überblick sein, um uns
‫den Einstieg zu
‫erleichtern und MongoDB ab der nächsten Vorlesung tatsächlich zu verwenden.
‫Also, lass uns jetzt weitermachen.