ProcessCube® PostgreSQL
ProcessCube® PostgreSQL ist ein speziell angepasstes PostgreSQL-18-Docker-Image, das für die ProcessCube-Plattform optimiert wurde. Es enthält vorinstallierte Extensions für Volltextsuche, Zeitreihenanalyse, Vektordatenbanken und Query-Optimierung.
Überblick
Das Image basiert auf PostgreSQL 18 (Debian Bookworm) und wird als Docker-Image über den ProcessCube Marketplace bereitgestellt. Es erstellt automatisch drei Datenbanken mit dedizierten Benutzern für Engine, Authority und Anwendungsdaten.
Vorinstallierte Extensions
| Extension | Version | Zweck | Dokumentation |
|---|---|---|---|
| pg_search | 0.21.3 | Volltextsuche mit BM25-Ranking | ParadeDB Docs |
| timescaledb | 2.24.0 | Zeitreihen-Daten und Analysen | TimescaleDB Docs |
| vector | 0.8.0 | Vektor-Ähnlichkeitssuche für ML/AI | pgvector GitHub |
| pg_stat_statements | 1.11 | Query-Performance-Monitoring | PostgreSQL Docs |
| hypopg | 1.4.2 | Hypothetische Index-Analyse | HypoPG Docs |
| uuid-ossp | 1.1 | UUID-Generierung | PostgreSQL Docs |
| pgcrypto | 1.3 | Kryptografische Funktionen | PostgreSQL Docs |
Quick Start
Image vom ProcessCube Marketplace herunterladen und starten:
docker pull marketplace.processcube.io/processcube-io/processcube_postgres:latest
docker run -d \
--name processcube-postgres \
-e POSTGRES_PASSWORD=mein_passwort \
-p 5432:5432 \
marketplace.processcube.io/processcube-io/processcube_postgres:latestZugriff auf die Datenbank:
- PostgreSQL:
localhost:5432 - Connection-String:
postgresql://engine_user:engine_password@localhost:5432/engine
Vorkonfigurierte Datenbanken
Das Initialisierungsskript erstellt automatisch drei Datenbanken mit dedizierten Benutzern:
| Datenbank | Benutzer | Zweck |
|---|---|---|
| engine | engine_user | ProcessCube® Engine-Datenbank |
| authority | authority_user | Authentifizierung und Autorisierung |
| appdb | appdb_user | Anwendungsdaten |
Alle Datenbanken verwenden die deutsche Locale (de_DE.UTF-8) für Sortierung und Zeichensätze.
Umgebungsvariablen
| Variable | Standardwert | Beschreibung |
|---|---|---|
POSTGRES_USER | postgres | PostgreSQL-Superuser-Name |
POSTGRES_PASSWORD | postgres | PostgreSQL-Superuser-Passwort |
POSTGRES_DB | postgres | Standard-Datenbankname |
POSTGRES_PORT | 5432 | Externer Port |
INIT_PROCESSCUBE_DBS | true | ProcessCube-Datenbanken erstellen (false zum Überspringen) |
ENGINE_USER_PASSWORD | engine_password | Passwort für engine_user |
AUTHORITY_USER_PASSWORD | authority_password | Passwort für authority_user |
APPDB_USER_PASSWORD | appdb_password | Passwort für appdb_user |
WHODB_PORT | 8080 | WhoDB Web-Interface Port |
Ohne ProcessCube-Datenbanken verwenden
Das Image kann auch als PostgreSQL mit Extensions ohne die ProcessCube-spezifischen Datenbanken verwendet werden:
docker run -d \
--name postgres \
-e POSTGRES_PASSWORD=mein_passwort \
-e INIT_PROCESSCUBE_DBS=false \
-p 5432:5432 \
marketplace.processcube.io/processcube-io/processcube_postgres:latestExtensions können dann manuell aktiviert werden:
CREATE EXTENSION IF NOT EXISTS timescaledb;
CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS pg_search;
CREATE EXTENSION IF NOT EXISTS hypopg;Docker Compose Beispiel
Vollständiges Setup mit PostgreSQL und WhoDB-Verwaltungsoberfläche:
services:
processcube-postgres:
image: marketplace.processcube.io/processcube-io/processcube_postgres:latest
container_name: processcube-postgres
restart: unless-stopped
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
POSTGRES_DB: postgres
INIT_PROCESSCUBE_DBS: "true"
ENGINE_USER_PASSWORD: ${ENGINE_USER_PASSWORD:-engine_password}
AUTHORITY_USER_PASSWORD: ${AUTHORITY_USER_PASSWORD:-authority_password}
APPDB_USER_PASSWORD: ${APPDB_USER_PASSWORD:-appdb_password}
POSTGRES_INITDB_ARGS: "-E UTF8 --locale=de_DE.UTF-8"
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
whodb:
image: clidey/whodb:latest
container_name: whodb
restart: unless-stopped
ports:
- "8080:8080"
depends_on:
processcube-postgres:
condition: service_healthy
volumes:
postgres_data:Backup & Restore
Das Image enthält Shell-Skripte für Backup- und Restore-Operationen:
| Skript | Beschreibung |
|---|---|
backup.sh | Vollständiges Backup aller Datenbanken (pg_dumpall) |
backup-db.sh | Einzelne Datenbank sichern mit Format-Optionen |
restore.sh | Wiederherstellung aus verschiedenen Backup-Formaten |
backup-cron.sh | Automatisiertes Backup mit Tages/Wochen/Monats-Rotation |
Backup erstellen
# Vollständiges Backup aller Datenbanken
docker exec processcube-postgres /scripts/backup.sh /backups
# Einzelne Datenbank sichern (Custom-Format, empfohlen)
docker exec processcube-postgres /scripts/backup-db.sh engine /backups customWiederherstellen
# Vollständiges Backup wiederherstellen
docker exec -it processcube-postgres /scripts/restore.sh /backups/full_backup_2026-01-21.sql.gz
# Einzelne Datenbank wiederherstellen
docker exec processcube-postgres /scripts/restore.sh /backups/engine_2026-01-21.dump engineAutomatische Rotation
| Typ | Aufbewahrung | Zeitplan |
|---|---|---|
| Täglich | 7 Tage | Jeden Tag |
| Wöchentlich | 4 Wochen | Sonntags |
| Monatlich | 12 Monate | Am 1. des Monats |
Cron-Job einrichten:
# Tägliches Backup um 2:00 Uhr
0 2 * * * docker exec processcube-postgres /scripts/backup-cron.sh /backups >> /var/log/postgres-backup.log 2>&1WhoDB - Datenbankverwaltung
WhoDB ist eine web-basierte Verwaltungsoberfläche, die im Docker Compose Setup enthalten ist. Sie bietet:
- Visuellen Query-Builder
- Tabellen-Browser
- SQL-Editor
- Schema-Visualisierung
Zugriff über http://localhost:8080 mit vorkonfigurierten Verbindungen zu allen drei Datenbanken.
Performance-Tuning
Das Image enthält optimierte PostgreSQL-Einstellungen:
shared_preload_libraries = 'timescaledb,pg_stat_statements,pg_search'
pg_stat_statements.track = all
pg_stat_statements.max = 10000Langsame Queries analysieren
SELECT query, mean_exec_time, calls
FROM pg_stat_statements
ORDER BY mean_exec_time DESC
LIMIT 10;Hypothetische Indizes testen
-- Hypothetischen Index erstellen
SELECT * FROM hypopg_create_index('CREATE INDEX ON users (email)');
-- Query-Performance testen
EXPLAIN SELECT * FROM users WHERE email = 'test@example.com';
-- Aufräumen
SELECT hypopg_reset();Nächste Schritte
- Engine-Dokumentation - ProcessCube® Engine konfigurieren
- Authority-Dokumentation - Identity Provider einrichten
- Bezugsquellen - Docker-Images beziehen