Datenbank ist ein riesiger 'Schrank': Erfahrung, Erinnerungen mit Rails zu speichern und abzurufen
Wenn wir zum ersten Mal einen Webdienst erstellen, gibt es ein verwirrendes Konzept.
"Wo werden die Informationen, die ich eingegeben habe, eigentlich gespeichert?"
Um die DB zu verstehen, braucht es keine aufwendigen Konzepte.
Die DB ist einfach ein 'ordentlich sortierter Schrank'.
Der Schrank ist eine Tabelle (table)
Ein Schrank ist ein Datensatz (record)
Die Fächer im Schrank sind Spalten (column)
Die Art des Schranks (Post, Benutzer usw.) ist ein Modell (model)
Das Öffnen und Schließen des Schranks ist eine Abfrage (query)
Sobald dieses Gleichnis erfasst ist,
ist die DB nicht mehr ein schwieriges Konzept,
sondern ein sehr greifbares, physisches Konzept, das mit den Fingerspitzen verstanden wird.
Lassen Sie uns jetzt direkt mit Rails erstellen.
Teil 1. Erstellen eines 'Schrankes (Post-Tabelle)'
Im Terminal:
rails generate model Post title:string body:text
rails db:migrate
Dieser Befehl bedeutet Folgendes:
"Ich werde einen Schrank namens Post erstellen.
In dem Schrank werde ich zwei Fächer einbauen.
Eines für den Titel (Titelfach),
eines für den Inhalt (Inhaltsfach)."
Rails nimmt diesen Befehl entgegen
und installiert einen neuen Schrank (Post-Tabelle) im großen Raum namens DB.
In jedem Fach dieses Schrankes (Datensatz)
gibt es immer zwei festgelegte Fächer, Titel und Inhalt.
Jetzt sind wir bereit zum Speichern.
Teil 2. Erstellen eines 'Fachs (Datensatz)' und Einlegen in den Schrank
Gehen Sie in die Rails-Konsole.
rails console
Und mit folgendem Code
erstellen Sie ein Fach (einen Post) und legen es in den Schrank.
Post.create(title: "Erster Beitrag", body: "In der DB gespeichert!")
Was hier passiert:
Im Post-Schrank
Im Titelfach steht "Erster Beitrag"
Im Inhaltsfach steht "In der DB gespeichert!"
wird ein neues Fach (Datensatz) hinzugefügt.
Dieses Fach verschwindet nie.
Es bleibt erhalten, auch wenn der Server aus- und wieder eingeschaltet wird.
Genau das macht die DB zur 'Erinnerung des Webs'.
Teil 3. 'Schrank öffnen':
Lassen Sie uns die gespeicherten Fächer herausholen.
Post.all
Rails sagt der DB:
"Post-Schrank, hol bitte alle Fächer heraus."
Dann zeigt die DB genau die von uns eingelegten Fächer an.
Das ist die Kraft des 'unvergesslichen Raums'.
Teil 4. 'Intelligenter Schrank, der die Struktur automatisch organisiert'
Lassen Sie uns ein Fach mit Post.first herausnehmen und überprüfen.
post = Post.first
post.id
post.created_at
post.updated_at
Die DB organisiert automatisch beim Einlegen eines Faches:
id (Fachnummer)
created_at (Wann wurde es eingefügt)
updated_at (Wann wurde es aktualisiert)
Diese Metadaten werden ebenfalls gespeichert.
Das ist nicht nur ein Schrank,
sondern ein sorgfältig organisiertes, intelligentes Fach.
Teil 5. 'Der Mensch muss nicht Tausende von Fächern durchsuchen'
Die DB findet sofort wie ein superschneller Bibliothekar
Wenn Sie beispielsweise nur das Fach mit dem Titel "Erster Beitrag" finden möchten:
Post.where(title: "Erster Beitrag")
Mit dieser einen Zeile
holt die DB genau das richtige Fach aus Tausenden heraus.
Es ist, als würde ein Bibliothekar sofort
Fachnummer, Position und Eigenschaften erkennen.
Aufgrund dieser schnellen Suchfunktion
ist die DB für die Geschwindigkeit und Genauigkeit des Webdienstes verantwortlich.
Teil 6. 'Intelligentes Netzwerk, das Fächer miteinander verbindet'
Verbinden Sie Kommentare mit dem Post-Schrank
Geben Sie den folgenden Befehl ein.
rails generate model Comment body:text post:references
rails db:migrate
Das bedeutet Folgendes:
"Erstellen Sie einen Schrank (Comment), um Kommentare zu speichern.
Im Fach gibt es ein Fach namens 'body',
und speichern Sie auch, zu welchem Post-Fach (Comment) es gehört."
Rails erstellt automatisch im Comment-Schrank ein Feld namens post_id
und speichert die Verbindungsinformationen, dass "dieses Fach zum Post-Fach #1 gehört".
Das ist wie
einen Aufkleber an die Seite des Faches zu kleben,
der besagt "Dieses Fach gehört zum Post #1".
Teil 7. Lassen Sie Rails über die Beziehung informieren
app/models/post.rb
class Post < ApplicationRecord
has_many :comments
end
app/models/comment.rb
class Comment < ApplicationRecord
belongs_to :post
end
Rails sagt Folgendes:
"Der Post-Schrank kann mehrere Comment-Fächer enthalten."
"Das Comment-Fach muss zum Post-Schrank gehören."
Jetzt kennt die DB
die Beziehungen zwischen den Fächern,
die das intelligente Netzwerk des Webdienstes bilden.
Teil 8. Verbinden Sie tatsächlich Daten
In der Konsole:
post = Post.first
post.comments.create(body: "Dieser Beitrag ist interessant!")
post.comments.create(body: "Zweiter Kommentar!")
Und lassen Sie uns die Kommentare herausnehmen.
post.comments
Im Ausgabebereich sind die beiden gerade erstellten Kommentare enthalten.
Wenn Sie das sehen, erkennen Sie:
Die DB ist nicht nur ein Speicherort
Sie verbindet verschiedene Informationen
und erstellt ein intellektuelles Netzwerk.
Aufgrund dieser Verbindungen
funktioniert der Webdienst wie ein "organisches Wesen".
Teil 9. Jetzt verstehen Sie, warum die DB das 'Herz des Webs' ist
Bisher haben Sie es selbst ausprobiert
und das Wesen der DB genau erlebt.
Das Gedächtnis des Webs
→ Daten können gespeichert und abgerufen werden.
Unvergesslicher Raum
→ Auch nach einem Neustart bleiben Post und Comment erhalten.
Sorgfältig organisierte Schränke
→ Strukturierte Fächer, automatisch organisierte Metadaten (id, Zeitstempel)
Ein Bibliothekar, der Millionen sofort findet
→ Durch die where-Bedingung ist eine sofortige Suche möglich.
Intellektuelles Netzwerk von verbundenen Fächern
→ Einstellung der Post ↔ Comment-Beziehung
Das Herz des Webs
→ Speichern + Suchen + Beziehungen = Alle Funktionen des Webs
All dies
können Sie jetzt selbst erstellen und verwalten.
Und in den Gedanken des Lesers beginnt der folgende Gedanke zu keimen
"Moment mal... Bin ich wirklich in der Lage, Webdienste zu erstellen?"
"Könnte ich mein eigenes Blog erstellen?"
"Sollte ich mit meinen Freunden einen gemeinsamen ToDo-Dienst erstellen?"
"Ich verstehe, wie meine eingegebenen Daten gespeichert, verbunden und abgerufen werden!"
Nach diesem Erwachen
ist das Web nicht mehr nur eine "Nutzerwelt".
Das Web wird zu einer Welt, die Sie selbst erschaffen.