Alle Grundlagen

Datenbank

Postgres

Wo die Daten liegen: eine Open-Source-Datenbank, die seit Jahrzehnten im Einsatz ist.

Ursprung
University of California, Berkeley, 1986
Open Source seit
1996
Lizenz
PostgreSQL-Lizenz, für jeden Zweck frei
Abfragesprache
SQL

01Was eine Datenbank ist

Eine Datenbank speichert die Daten einer Anwendung in Tabellen. Jede Tabelle enthält eine Art von Dingen: eine für Kunden, eine für Rechnungen, eine für Tickets. Jede Zeile ist ein Datensatz, jede Spalte eine Eigenschaft, etwa ein Name, ein Datum oder ein Betrag. Auf den ersten Blick sieht das aus wie eine Tabellenkalkulation.

Der Unterschied liegt in den Regeln. Eine Datenbank prüft jede Änderung, bevor sie sie speichert. Eine Rechnung kann nicht auf einen Kunden verweisen, den es nicht gibt. Ein Betrag muss eine Zahl sein, ein Datum ein Datum. Zwei Personen, die im selben Moment speichern, überschreiben sich nicht gegenseitig, und eine Änderung, die mittendrin scheitert, wird vollständig zurückgenommen. Halb geschriebene Daten bleiben nie zurück.

02Wie sie funktioniert

Tabellen sind miteinander verknüpft. Eine Rechnungszeile speichert die Nummer ihres Kunden, und die Datenbank kann beide Tabellen jederzeit zusammenführen, um eine Frage zu beantworten, zum Beispiel: Welche Kunden haben unbezahlte Rechnungen, die älter als dreißig Tage sind? Solche Fragen werden in SQL formuliert, einer Abfragesprache, die fast jede Datenbank in ähnlicher Form versteht.

Damit die Antwort schnell kommt, führt die Datenbank Indizes, ähnlich dem Stichwortverzeichnis eines Buchs. Mit einem Index auf dem Kundennamen dauert die Suche nach einem Kunden unter einer Million wenige Millisekunden.

Postgres läuft als Serverprogramm. Die Anwendung verbindet sich damit, schickt Abfragen und bekommt die Ergebnisse zurück. Wer die Anwendung benutzt, sieht die Datenbank nie direkt, sondern die Ansichten, die die Anwendung aus den Daten aufbaut.

03Ein Beispiel aus einer Geschäftsanwendung

Nehmen wir ein Ticketsystem für den Kundensupport. Postgres speichert die Unternehmen, ihre Ansprechpartner, die Projekte, die Tickets und die Stunden, die auf jedes Ticket gebucht werden. Kommt eine Supportanfrage per E-Mail, legt die Anwendung eine Ticketzeile an, verknüpft mit dem richtigen Unternehmen und Projekt.

Wird eine Stunde erfasst, hängt sie am Ticket und an der Person, die gearbeitet hat. Wird eine Rechnung geschrieben, werden die Stunden darauf als abgerechnet markiert, und die Datenbank lehnt jede spätere Änderung daran ab. All das geschieht in einer Transaktion: Entweder wird jeder Schritt gespeichert oder keiner.

Auswertungen kommen aus denselben Tabellen. Stunden je Kunde in diesem Monat, offene Tickets je Projekt, Umsatz je Quartal: Jede davon ist eine Abfrage, und die Zahlen stimmen immer mit den Ansichten überein, weil es nur eine Ausgabe der Daten gibt.

04Postgres im Besonderen

PostgreSQL, kurz Postgres, begann 1986 als Forschungsprojekt an der University of California in Berkeley. Seit 1996 wird es als Open Source weiterentwickelt, von einer Gemeinschaft aus Unternehmen und einzelnen Entwicklern, mit einer neuen Hauptversion pro Jahr.

Es gehört niemandem. Lizenzgebühren fallen nicht an, und die Lizenz erlaubt jede Nutzung, auch in kommerziellen Produkten. Jeder große Cloud-Anbieter bietet Postgres als verwalteten Dienst an. Die Daten lassen sich deshalb mit Standardwerkzeugen von einem Anbieter zum nächsten bewegen.

Postgres lässt sich außerdem erweitern. Zusätzliche Funktionen werden direkt in die Datenbank installiert. Zwei davon sind für unsere Arbeit wichtig:

  • pgvector speichert Vektoren, Zahlenreihen, die die Bedeutung eines Textes oder Bildes beschreiben. Damit findet die Datenbank Dokumente, die einer Frage inhaltlich ähneln.
  • Die Volltextsuche findet Wörter in langen Texten, auch in unterschiedlichen Formen desselben Worts.

05Alternativen im Vergleich

MySQL und sein Ableger MariaDB sind ebenfalls Open Source und weit verbreitet, besonders bei Websites. Sie decken ein ähnliches Feld ab; Postgres bietet meist mehr Datentypen, strengere Prüfungen und mehr Erweiterungen.

Microsoft SQL Server und Oracle Database sind kommerzielle Produkte mit Lizenzgebühren. Man findet sie oft in großen Unternehmen, die bereits andere Software desselben Herstellers einsetzen.

Dokumentendatenbanken wie MongoDB speichern Datensätze als flexible Dokumente ohne feste Tabellenstruktur. Das ist am Anfang eines Projekts bequem und später schwerer konsistent zu halten, wenn viele Teile einer Anwendung auf dieselben Daten angewiesen sind.

Für Geschäftsanwendungen mit Kunden, Rechnungen und Berechtigungen ist eine relationale Datenbank wie Postgres die übliche Wahl, weil die Regeln, die die Daten stimmig halten, eingebaut sind.

06Kosten und worauf Sie achten sollten

Die Software selbst kostet nichts. Kosten entstehen dort, wo sie läuft: Ein verwalteter Postgres-Dienst wird nach Rechenleistung, Speicher und Backups abgerechnet. Für eine kleine Geschäftsanwendung beginnt das bei wenigen Euro im Monat und wächst mit der Datenmenge und der Zahl der Nutzer.

Beim Einrichten einer Datenbank lohnt es sich, diese Punkte zu prüfen:

  • Standort: Das Rechenzentrum sollte in der EU stehen, wenn personenbezogene Daten gespeichert werden.
  • Backups: automatisch, regelmäßig und erprobt, indem man tatsächlich eines wiederherstellt.
  • Kontoinhaber: Die Datenbank sollte in einem Konto laufen, das Ihnen gehört, damit Sie die Kontrolle über die Daten behalten.
  • Zugriff: Verbinden dürfen sich nur die Anwendung und die namentlich bekannten Personen, die sie betreuen.
  • Änderungen an der Struktur: Sie sollten als Skript vorliegen und wiederholbar sein, damit dieselbe Änderung im Test und im Betrieb gleich abläuft.

07Wie wir es nutzen

Unsere Anwendungen speichern ihre Daten in Postgres, meist bei Neon in Frankfurt. Neon trennt Speicher und Rechenleistung, sodass eine Datenbank, die gerade nichts zu tun hat, sehr wenig kostet.

In Kadvern One, unserem eigenen Betriebssystem, bekommt jede vorgeschlagene Änderung einen eigenen Zweig der Datenbank: eine getrennte Kopie der Struktur mit Testdaten und ohne Kundendaten. Eine neue Funktion wird dort ausprobiert, bevor sie die echten Daten berührt.

Für die Suche nach Bedeutung nutzen wir pgvector in derselben Datenbank. Für eine Dokumentensuche, die wir für einen Kunden bauen, haben wir Azure Database for PostgreSQL in Frankfurt mit pgvector gewählt, damit die Daten bei einem Anbieter in Deutschland bleiben.

Bei der Übergabe läuft die Datenbank samt Backups im eigenen Konto des Kunden.

Häufige Fragen

Bekommen wir unsere Daten wieder aus Postgres heraus?

Ja. Ein vollständiger Export ist ein Standardbefehl und ergibt eine Datei, die jeder andere Postgres-Server einlesen kann. Einzelne Tabellen lassen sich auch als CSV exportieren und in Excel öffnen.

Ist Postgres schnell genug für große Datenmengen?

Postgres kommt mit Tabellen mit vielen Millionen Zeilen zurecht. Die Geschwindigkeit hängt vor allem von sinnvollen Indizes und gut geschriebenen Abfragen ab, und die gehören zum Bau der Anwendung.

Wo liegen unsere Daten?

Im Rechenzentrum des Anbieters, der die Datenbank betreibt. Wir richten sie in der EU ein, meist in Frankfurt, und in einem Konto, das Ihnen gehört.

Was passiert, wenn die Datenbank beschädigt wird oder jemand versehentlich etwas löscht?

Verwaltete Postgres-Dienste sichern laufend. Die Datenbank lässt sich innerhalb der Aufbewahrungsfrist auf ihren Stand zu einem gewählten Zeitpunkt zurücksetzen, oft sekundengenau.

Brauchen wir einen Datenbankadministrator?

Bei einem verwalteten Dienst meist nicht. Der Anbieter kümmert sich um Updates, Backups und Hardware. Änderungen an der Struktur kommen mit der Anwendung, als Teil ihres Codes.

Erzählen Sie uns, was Ihre Software können soll.

Gespräch beginnen