Skip to Content
PostgreSQL

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

ExtensionVersionZweckDokumentation
pg_search0.21.3Volltextsuche mit BM25-RankingParadeDB Docs 
timescaledb2.24.0Zeitreihen-Daten und AnalysenTimescaleDB Docs 
vector0.8.0Vektor-Ähnlichkeitssuche für ML/AIpgvector GitHub 
pg_stat_statements1.11Query-Performance-MonitoringPostgreSQL Docs 
hypopg1.4.2Hypothetische Index-AnalyseHypoPG Docs 
uuid-ossp1.1UUID-GenerierungPostgreSQL Docs 
pgcrypto1.3Kryptografische FunktionenPostgreSQL 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:latest

Zugriff 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:

DatenbankBenutzerZweck
engineengine_userProcessCube® Engine-Datenbank
authorityauthority_userAuthentifizierung und Autorisierung
appdbappdb_userAnwendungsdaten

Alle Datenbanken verwenden die deutsche Locale (de_DE.UTF-8) für Sortierung und Zeichensätze.

Umgebungsvariablen

VariableStandardwertBeschreibung
POSTGRES_USERpostgresPostgreSQL-Superuser-Name
POSTGRES_PASSWORDpostgresPostgreSQL-Superuser-Passwort
POSTGRES_DBpostgresStandard-Datenbankname
POSTGRES_PORT5432Externer Port
INIT_PROCESSCUBE_DBStrueProcessCube-Datenbanken erstellen (false zum Überspringen)
ENGINE_USER_PASSWORDengine_passwordPasswort für engine_user
AUTHORITY_USER_PASSWORDauthority_passwordPasswort für authority_user
APPDB_USER_PASSWORDappdb_passwordPasswort für appdb_user
WHODB_PORT8080WhoDB 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:latest

Extensions 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:

SkriptBeschreibung
backup.shVollständiges Backup aller Datenbanken (pg_dumpall)
backup-db.shEinzelne Datenbank sichern mit Format-Optionen
restore.shWiederherstellung aus verschiedenen Backup-Formaten
backup-cron.shAutomatisiertes 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 custom

Wiederherstellen

# 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 engine

Automatische Rotation

TypAufbewahrungZeitplan
Täglich7 TageJeden Tag
Wöchentlich4 WochenSonntags
Monatlich12 MonateAm 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>&1

WhoDB - 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 = 10000

Langsame 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