> ## Documentation index
> The full klickops handbook index is at https://klickops.io/llms.txt
> The HTML of this page is at https://klickops.io/docs/databases
> Language: de

# Datenbanken

Eine verwaltete PostgreSQL- oder Valkey-Instanz im Projekt. Wird nach Zeitplan gesichert und ist von deinen Apps über den Namen erreichbar.

## Was das ist

Eine Datenbank in klickops ist eine verwaltete Instanz, die du auf der Seite **Databases** eines Projekts anlegst. klickops betreibt sie, spielt Patches ein, überwacht sie und erstellt die Backups. Du bekommst eine Verbindungszeichenfolge und eine Konsole. Nichts davon liegt ausserhalb des Projekts. Löschst du das Projekt, löschst du die Datenbank mit.

Zwei Engines stehen heute zur Wahl. **PostgreSQL** ist die vollständige, mit Replicas, Connection Pooling, Extensions und Wiederherstellung auf die Sekunde genau. **Valkey** ist eine einzelne In-Memory-Instanz für Caches, Sessions und Queues, bewusst ohne Replikation und ohne Backups.

## Wann du das brauchst

- Deine App braucht eine Datenbank und du willst keine betreiben.
- Du willst die Zugangsdaten in die App legen lassen, statt sie von Hand in ein Secret zu kopieren.
- Du wechselst von einem gehosteten Anbieter und willst die Daten dort haben, wo dein Projekt liegt.

> [!Nicht dafür]
> Brauchst du eine Datenbank, die das Projekt überdauert, oder eine, die sich mehrere Projekte teilen? Dann leg sie in einem eigenen Projekt an und erreich sie über eine Firewall-Regel. Zwischen Projekten verschieben lässt sie sich nach dem Anlegen nicht.

## Eine Datenbank anlegen

1. Öffne dein Projekt, geh auf **Databases** und dann auf **Add database**.
2. Wähl die Engine. PostgreSQL setzt die Standardwerte unten. Valkey wechselt auf die Cache-Standardwerte und lässt den Backup-Schritt weg.
3. Leg die Grösse fest. Der Speicher ist ein Schieberegler, auf dem die Obergrenze deines Tarifs eingezeichnet ist. CPU und Memory folgen der Grösse und lassen sich später ohne Datenverlust ändern.
4. Entscheide über die Zahl der Instanzen. **PostgreSQL startet mit drei**, einer primären und zwei Replicas. Genau das lässt sie den Ausfall eines Nodes überstehen. Für eine Entwicklungsdatenbank stellst du auf eine, dann sinken auch die Kosten.
5. Wähl ein Backup-Ziel. Tägliche Backups sind bei PostgreSQL an, und ohne Bucket lässt sich der Assistent nicht abschliessen.
6. Leg sie an. Die Instanz ist meistens in weniger als zwei Minuten bereit. Die Seite zeigt die Phase, während sie hochfährt.

![Die Datenbanken-Liste eines Projekts, mit den verfügbaren Engines darunter.](/handbook/databases-list.webp)

## Eine App verbinden

Öffne die Datenbank, geh auf **Connect** und wähl die App. klickops schreibt Host, Port, Datenbankname, Benutzer und Passwort als Verknüpfung in die App. Wird das Passwort später gewechselt, aktualisiert sich die App von selbst.

Die Zugangsdaten stehen auf demselben Tab, falls du sie lokal brauchst. Das Passwort bleibt verdeckt, bis du es aufdeckst. Die API gibt es in keiner Listenantwort zurück.

```bash
# eine psql-Sitzung über klickops, ohne lokalen Postgres-Client
klops db query orders-db --project shop -c "select count(*) from orders"
```

## Der Alltag

Jede Datenbank öffnet auf **Overview**. Die Tab-Leiste darüber ist die ganze Oberfläche. Valkey zeigt eine kürzere: dort steht eine Befehlskonsole statt eines SQL-Editors, und einen Backup-Tab gibt es nicht.

| Tab | Was dort liegt |
| --- | --- |
| Connect | Zugangsdaten, App-Verknüpfungen, Connection Pooler |
| Query | SQL gegen die Instanz ausführen. Valkey zeigt eine Befehlskonsole |
| Browse | Tabellen und Zeilen, nur lesend |
| Data & backups | Zeitplan, Wiederherstellungspunkte, Dump-Import und -Export |
| Storage | Das Volume vergrössern. Speicher wächst und schrumpft nie |
| Updates | Kleine Patches und Wechsel auf eine neue Hauptversion |
| Metrics | Verbindungen, Cache-Trefferrate, Speicherplatz, CPU |
| Logs | Logs der Instanz, live und historisch |
| Advanced | Extensions, Server-Parameter, TLS, Zugriffsregeln für Clients |

## Einstellungen im Überblick

| Einstellung | Standard | Was sie bewirkt |
| --- | --- | --- |
| Version | PostgreSQL 16, Valkey 8.1 | Vorausgewählt, damit der Name das einzige Pflichtfeld bleibt. Kleine Patches kommen im Wartungsfenster. Ein Wechsel der Hauptversion ist ein eigener Schritt, den du vorher freigibst. |
| Speicher | 10 GB | Grösse des Volumes. Wächst im laufenden Betrieb, schrumpft nie. Die Obergrenze deines Tarifs ist auf dem Regler eingezeichnet. |
| Instanzen | 3 bei PostgreSQL, 1 bei Valkey | Drei Nodes sind der Standard: eine primäre, zwei Replicas, automatische Übernahme. Eine einzelne Instanz kostet ein Drittel und übersteht den Ausfall eines Nodes nicht. |
| Connection Pooler | aus | Setzt PgBouncer vor die Instanz. Schalt ihn ein, wenn du mehr Clients als Verbindungen hast. |
| Backups | an, täglich, 7 Tage | Nur PostgreSQL, und es braucht ein Ziel-Bucket, bevor etwas laufen kann. Zusätzlich werden die Write-Ahead-Logs gesichert, du kommst also auf jede Sekunde im Zeitfenster zurück. Valkey hat gar keine Backups. |
| Extensions | keine | PostgreSQL-Extensions wie `postgis` oder `pgvector`. Eine zu installieren startet die Instanz neu. |
| Parameter | Standard der Engine | Server-Parameter. Die meisten Änderungen starten die Instanz neu. Das Speicherband sagt es, bevor du bestätigst. |
| TLS | erforderlich | Ob Clients über TLS verbinden müssen. Lass es an. |
| Update-Richtlinie | automatisch | Ob klickops kleine Patches selbst einspielt oder auf deinen Klick wartet. |

## Grenzen und Fallstricke

- **Speicher wächst nur.** Schrumpfen gibt es nicht. Plan für ein Jahr, nicht für ein Jahrzehnt.
- **Valkey hat keine Backups.** Es ist ein Cache. Behandle alles darin als verzichtbar.
- **PostgreSQL-Backups brauchen ein Ziel.** Sie sind standardmässig an, geschrieben wird aber nichts, bevor du ein Bucket angibst.
- **Ein Wechsel der Hauptversion ist einseitig.** Der Plan zeigt, was sich ändert, und legt vorher ein Backup an. Zurück geht es danach nicht.
- **Die Instanz ist aus dem Internet nicht erreichbar.** Apps im selben Projekt erreichen sie über den Namen. Alles andere braucht eine Firewall-Regel.

> [!Vorsicht]
> Wer eine Datenbank löscht, löscht ihr Volume und ihre Backups. Der Dialog verlangt den Namen zum Eintippen, weil es danach nichts rückgängig zu machen gibt. Exportier im Zweifel vorher einen Dump.

## Verwandt

- [Apps](/docs/apps) ist üblicherweise das, was sich hier verbindet, über den Tab **Configuration**.
- [Domains](/docs/domains), falls du etwas veröffentlichst, das damit spricht.
