4.6 KiB
Datenbank-Setup
Dieses Dokument beschreibt, wie die Datenbank für das Meldestelle-Projekt eingerichtet und verwaltet wird.
Überblick
Das Projekt verwendet PostgreSQL als Datenbank und Exposed als ORM-Framework. Die Datenbankmigrationen werden mit einem eigenem, auf Exposed basierenden Migrationssystem verwaltet.
Konfiguration
Die Datenbankkonfiguration erfolgt über Umgebungsvariablen. Diese können entweder direkt im Betriebssystem gesetzt oder über eine .env-Datei bei Verwendung von Docker Compose bereitgestellt werden.
Erforderliche Umgebungsvariablen
DB_HOST: Hostname der Datenbank (Standard:localhost)DB_PORT: Port der Datenbank (Standard:5432)DB_NAME: Name der Datenbank (Standard:meldestelle_db)DB_USER: Benutzername für die Datenbank (Standard:meldestelle_user)DB_PASSWORD: Passwort für den Datenbankbenutzer
.env-Datei
Für die lokale Entwicklung und Docker Compose wird eine .env-Datei im Projektwurzelverzeichnis verwendet. Ein Beispiel:
# Datenbank-Konfiguration
POSTGRES_USER=meldestelle_user
POSTGRES_PASSWORD=secure_password_change_me
POSTGRES_DB=meldestelle_db
# PgAdmin Konfiguration
PGADMIN_DEFAULT_EMAIL=admin@example.com
PGADMIN_DEFAULT_PASSWORD=admin_password_change_me
PGADMIN_PORT=5050
# API Gateway Konfiguration
API_PORT=8081
Datenbankmigrationen
Das Projekt verwendet ein eigenes, auf Exposed basierendes Migrationssystem. Jede Migration ist eine Klasse, die von Migration erbt und eine eindeutige Versionsnummer und Beschreibung hat.
Migrations-Struktur
Migrationen werden in den entsprechenden Modulen definiert und im API-Gateway zentral registriert und ausgeführt.
Hinzufügen einer neuen Migration
- Erstellen Sie eine neue Klasse, die von
Migrationerbt - Implementieren Sie die
up()-Methode, um die nötigen Änderungen vorzunehmen - Registrieren Sie die Migration in
MigrationSetup.kt
Beispiel:
class MyNewMigration : Migration(5, "Add new feature tables") {
override fun up() {
SchemaUtils.create(MyNewTable)
}
}
Ausführen von Migrationen
Migrationen werden automatisch beim Start der Anwendung ausgeführt. Es werden nur Migrationen ausgeführt, die noch nicht in der Datenbank registriert sind.
Datenbankstruktur
Die Datenbankstruktur ist in verschiedene Bereiche unterteilt, die den Modulen des Projekts entsprechen:
- Master Data - Stammdaten wie Länder, Bundesländer, Sportarten
- Member Management - Personen, Vereine, Mitgliedschaften
- Horse Registry - Pferde und deren Besitzer
- Event Management - Veranstaltungen und zugehörige Daten
Entwicklungsumgebung einrichten
Mit Docker Compose
- Erstellen Sie eine
.env-Datei mit den erforderlichen Umgebungsvariablen - Führen Sie
docker-compose up -d dbaus, um nur die Datenbank zu starten - Alternativ
docker-compose up -dfür das gesamte System
PgAdmin verwenden
Das Projekt enthält einen PgAdmin-Service für die einfache Verwaltung der Datenbank über eine Web-Oberfläche.
-
Starten Sie die Anwendung mit Docker Compose:
docker-compose up -d -
Zugriff auf PgAdmin:
- Öffnen Sie http://localhost:5050 im Browser
- Melden Sie sich mit den Zugangsdaten aus der .env-Datei an:
- E-Mail: admin@example.com (oder Wert von PGADMIN_DEFAULT_EMAIL)
- Passwort: admin_password_change_me (oder Wert von PGADMIN_DEFAULT_PASSWORD)
-
Verbindung zur Datenbank in PgAdmin einrichten:
- Rechtsklick auf "Servers" > "Create" > "Server..."
- Name: Meldestelle
- Connection-Tab:
- Host: db
- Port: 5432
- Maintenance database: meldestelle_db
- Username: meldestelle_user
- Password: secure_password_change_me (oder Wert von DB_PASSWORD)
-
Überprüfen Sie, ob die Tabellen korrekt erstellt wurden, einschließlich der _migrations-Tabelle.
Manuell
- Installieren Sie PostgreSQL auf Ihrem System
- Erstellen Sie eine Datenbank und einen Benutzer
- Setzen Sie die Umgebungsvariablen oder passen Sie die Standardwerte in
DatabaseConfig.ktan - Starten Sie die Anwendung
Fehlerbehebung
Verbindungsprobleme
- Überprüfen Sie, ob die PostgreSQL-Instanz läuft
- Überprüfen Sie die Verbindungsparameter in den Umgebungsvariablen
- Überprüfen Sie Firewalls und Netzwerkeinstellungen
Migrationsfehler
- Prüfen Sie die Logs auf detaillierte Fehlermeldungen
- Migrationen werden nur einmal ausgeführt - Änderungen an bestehenden Migrationen haben keine Auswirkung
- Bei schwerwiegenden Problemen kann die
_migrations-Tabelle manuell bearbeitet werden (nur für Fortgeschrittene)
Letztes Update
2025-07-21