Was ist Postgres? Die Datenbank hinter vielen Apps erklärt
Postgres (offiziell PostgreSQL) ist eine kostenlose Open-Source-relationale Datenbank: ein Programm, das die Daten einer App in Tabellen mit Zeilen und Spalten speichert, diese Tabellen miteinander verknüpft und Fragen dazu in einer Sprache namens SQL beantwortet. Es ist bekannt für Zuverlässigkeit, Strenge beim Erhalt korrekter Daten und Flexibilität, die von einer Interessentenliste bis zu den Datensätzen eines großen Unternehmens reicht. Viele Web-Apps und viele Dienste, die sie hosten, bauen auf Postgres auf.
Warum es beim Bauen mit KI wichtig ist
Wenn ein KI-App-Builder deinem Projekt „eine Datenbank“ hinzufügt, ist es gut möglich, dass es Postgres ist. Du musst kein SQL schreiben, um es zu nutzen, aber ein bisschen Verständnis hilft sehr:
- Du kannst Daten in der Form beschreiben, die die Datenbank braucht. „Kunden haben viele Bestellungen, jede Bestellung hat viele Artikel“ wird direkt zu Tabellen.
- Du kannst die richtigen Schutzmechanismen anfordern. Postgres kann schlechte Daten von selbst ablehnen, etwa eine doppelte E-Mail-Adresse oder eine Bestellung für einen Kunden, den es nicht gibt, wenn die KI die Regeln einrichtet.
- Du kannst nachlesen, was die KI getan hat. Tabellennamen, Spalten und Beziehungen lassen sich in einem Tabellenbetrachter leicht prüfen, auch wenn du nie den Code anfasst.
Ein Alltagsvergleich: ein sehr strenges Archiv
Stell dir ein Büro vor, das Akten führt, mit einem Schrank für jede Art von Sache: einen für Kunden, einen für Bestellungen, einen für Produkte. Jede Karte in einer Schublade hat dieselben gedruckten Felder. Jede Karte hat eine eindeutige Nummer, und eine Bestellungskarte wiederholt die Daten des Kunden nicht, sondern verweist nur auf „Kunde Nr. 214“ und damit auf den Kundenschrank.
Der Sachbearbeiter ist streng. Er nimmt keine Bestellung an, die auf einen Kunden verweist, den es nicht gibt. Er akzeptiert keine Karte, bei der ein Pflichtfeld leer ist. Und wenn du Geld von einem Kontokarton auf einen anderen verschieben lässt, werden entweder beide Hälften erledigt oder keine, niemals nur eine.
Dieser Sachbearbeiter ist Postgres. Die Schubladen sind Tabellen, die gedruckten Felder sind Spalten, jede Karte ist eine Zeile, und der Verweis „Kunde Nr. 214“ ist ein Fremdschlüssel.
Wofür Postgres gut ist
| Funktion | Was sie in einfachen Worten bedeutet |
|---|---|
| Tabellen und Beziehungen | Daten liegen in Tabellen, die aufeinander verweisen, sodass nichts an fünf Stellen kopiert wird |
| SQL | Eine Standardsprache, um Fragen zu stellen: „alle offenen Bestellungen des letzten Monats, neueste zuerst“ |
| Transaktionen (ACID) | Eine Gruppe von Änderungen geschieht entweder ganz oder gar nicht, auch wenn der Server mittendrin abstürzt |
| Constraints | Regeln, die die Datenbank selbst durchsetzt: Pflichtfelder, eindeutige E-Mail-Adressen, gültige Verweise zwischen Tabellen |
| Indizes | Abkürzungen für Suchen, damit Abfragen auch bei wachsenden Tabellen schnell bleiben |
| JSONB | Flexible, dokumentartige Daten in einer Spalte speichern, wenn eine feste Struktur nicht passt |
| Volltextsuche | Wörter in Textfeldern durchsuchen, ohne einen separaten Suchdienst, für einfache Fälle |
| Erweiterungen | Zusatzfunktionen wie PostGIS für Karten und Standorte oder pgvector zum Speichern von KI-Embeddings |
| Row-Level Security | Regeln innerhalb der Datenbank, welche Zeilen ein bestimmter Nutzer sehen darf |
Postgres begann in den 1980er-Jahren als Forschungsprojekt an der University of California, Berkeley, und wird seit den 1990er-Jahren offen von einer weltweiten Community weiterentwickelt. Diese lange Geschichte ist der Grund, warum es oft die Standardwahl ist: Es ist gut dokumentiert, breit unterstützt, und jeder große Cloud-Anbieter bietet eine verwaltete Version an.
Ein Beispiel: eine Tabellenkalkulation in Tabellen verwandeln
Angenommen, du führst ein kleines Catering-Unternehmen und erfasst alles in einer einzigen Tabellenkalkulation: Jede Zeile ist ein Event mit Name, Telefon und E-Mail des Kunden, Datum, Menüpunkten und Preis.
Schnell entstehen Probleme. Derselbe Kunde steht in sechs Zeilen mit zwei verschiedenen Telefonnummern. Die Menüpunkte stehen in einer Zelle als „Canapés x40, Salat x2“, sodass du die Anzahl der Canapés im letzten Monat nicht summieren kannst.
In Postgres wird dieselbe Information zu vier Tabellen:
| Tabelle | Spalten | Hinweise |
|---|---|---|
| kunden | id, name, telefon, email | E-Mail muss eindeutig sein |
| events | id, kunde_id, datum, ort, status | kunde_id muss auf einen echten Kunden verweisen |
| menuepunkte | id, name, stueckpreis | Eine Zeile pro Gericht |
| event_artikel | event_id, menuepunkt_id, menge | Verknüpft Events mit Gerichten, mit einer Menge |
Jetzt liegt die Telefonnummer eines Kunden an einer einzigen Stelle. „Wie viele Canapés haben wir im März gemacht?“ ist eine einzige SQL-Abfrage. Und wenn du ein neues Event mit seinen Artikeln erfasst, sorgt eine Transaktion dafür, dass nie ein Event mit halb gespeicherten Artikeln entsteht.
Dieser Schritt wird oft übersprungen, wenn man eine KI bittet, „aus meiner Tabelle eine App zu machen“. Der Leitfaden, wie du eine Tabellenkalkulation in eine App verwandelst, geht weiter darauf ein.
Wichtige Begriffe
- Tabelle, Zeile, Spalte: eine Art von Ding, eine konkrete Instanz davon, eine Information darüber.
- Primärschlüssel: die eindeutige ID jeder Zeile, meist
id. - Fremdschlüssel: eine Spalte, die auf eine Zeile in einer anderen Tabelle verweist, etwa
kunde_id. - Schema: der Entwurf aller Tabellen und Spalten.
- Migration: eine gespeicherte, wiederholbare Änderung am Schema, etwa „eine Spalte
ortzu events hinzufügen“. - Abfrage (Query): eine Frage oder Anweisung in SQL.
- Verbindungszeichenfolge: Adresse und Passwort, mit denen dein Backend die Datenbank erreicht. Sie ist ein Geheimnis. Siehe Umgebungsvariablen und Geheimnisse.
- Verwaltetes Postgres: ein Dienst, der Postgres für dich betreibt, sichert und aktualisiert.
Für die alltäglichen Operationen, die jede App auf diesen Tabellen ausführt, also Anlegen, Lesen, Ändern und Löschen, siehe was CRUD bedeutet.
Häufige Fehler und Missverständnisse
- Eine riesige Tabelle. Die Tabellenkalkulation Spalte für Spalte zu kopieren führt zu denselben Duplikaten. Lagere Wiederholtes in eigene Tabellen aus.
- Listen in einem Textfeld speichern. „Canapés x40, Salat x2“ in einer einzigen Spalte lässt sich nicht richtig zählen oder durchsuchen. Nutze eine Verknüpfungstabelle.
- Keine Constraints. Ohne „E-Mail muss eindeutig sein“ oder „jedes Event braucht einen Kunden“ gelangen schlechte Daten unbemerkt hinein und fallen erst Monate später auf.
- Die Datenbank in der Produktion von Hand ändern. Lass Schemaänderungen als Migrationen anlegen, damit die Änderung dokumentiert und wiederholbar ist.
- Den Browser direkt mit der Datenbank sprechen lassen. Das Frontend sollte über dein Backend gehen, das Berechtigungen prüft. Das Datenbankpasswort gehört nie in den Seitencode.
- „Postgres ist nur für große Unternehmen.“ Es läuft genauso gut für eine Warteliste mit 50 Zeilen, und du musst auch beim Wachsen nicht wechseln.
- Annehmen, eine Datenbank sei ein Backup. Sie speichert Daten, schützt aber nicht automatisch davor, dass sie gelöscht werden. Prüfe, welche Backups dein Host anbietet.
Was du deinem KI-App-Builder fragen solltest
- „Speichere [Dinge] in einer Datenbank. Tabellen: … mit diesen Feldern: … Verknüpfe jede [Bestellung] mit einem [Kunden].“
- „Mache E-Mail bei Kunden eindeutig. Mache diese Felder Pflicht. Erlaube keine Bestellung ohne Kunden.“
- „Verwende Migrationen für jede Schemaänderung.“
- „Lege Indizes für die häufigsten Suchen an: Bestellungen nach Kunde und nach Datum.“
- „Jeder Datenbankzugriff läuft über den Server. Halte die Verbindungszeichenfolge in Umgebungsvariablen.“
Wenn du mit der Idee einer Datenbank noch gar nicht vertraut bist, fang mit was eine Datenbank ist an und komm dann hierher zurück. Eine Full-Stack-App zeigt, wo die Datenbank neben Frontend und Backend sitzt.
Postgres auf Mythex
Mythex gibt jedem Projekt, das eine braucht, eine eigene Postgres-Datenbank. Du musst sie nicht konfigurieren: Frag im Chat („speichere Warteliste-E-Mails in einer Datenbank“) oder nutze den Befehl /database. Mythex hängt sie an, schreibt die Verbindungsdaten in deine App und kann die Tabellen für dich anlegen. Die Datenbank einer veröffentlichten App schläft nach fünf Minuten Inaktivität und wacht beim nächsten Aufruf auf. Du zahlst nur für die Zeit, in der sie tatsächlich wach war, aus demselben Credit-Guthaben wie beim Bauen. Details stehen in der Datenbank-Dokumentation. Und Dashboard-Vorlagen sind ein guter Ort, um datengestützte Apps zu sehen.
Fragen
Ist Postgres dasselbe wie PostgreSQL?
Ja. PostgreSQL ist der offizielle Name, Postgres die gebräuchliche Kurzform. Beides bezeichnet dieselbe relationale Open-Source-Datenbank.
Ist Postgres kostenlos?
Ja. PostgreSQL ist Open Source unter der freizügigen PostgreSQL-Lizenz. Du kannst es kostenlos nutzen, auch in kommerziellen Produkten. Bezahlt werden nur die Server oder der verwaltete Dienst, auf dem es läuft.
Was ist der Unterschied zwischen Postgres und MySQL?
Beide sind kostenlose relationale SQL-Datenbanken, und beide eignen sich für die meisten Apps. Postgres ist bekannt für strikte Datenintegrität, umfangreiche Datentypen wie JSONB und Arrays sowie ein großes Ökosystem an Erweiterungen. MySQL ist bekannt für Einfachheit und eine lange Geschichte im Webhosting.
Ist Postgres gut für eine kleine App?
Ja. Es funktioniert gut für eine Warteliste mit einer einzigen Tabelle und für große Produktivsysteme. Du musst die Datenbank also nicht wechseln, wenn die App wächst. Verwaltete Dienste machen den Betrieb ohne Datenbankadministrator einfach.