Projektarbeit-MYP/backend/docs/DATENBANK_KONFIGURATION.md

118 lines
3.2 KiB
Markdown

# Datenbank-Konfiguration MYP Platform
## Übersicht
Die MYP Platform verwendet **ausschließlich** eine SQLite-Datenbank:
```
database/myp.db
```
## Konfiguration
### Haupt-Konfiguration
- **Datei**: `config/settings.py`
- **Variable**: `DATABASE_PATH = os.path.join(BASE_DIR, "database", "myp.db")`
- **Engine**: SQLite mit WAL-Modus (Write-Ahead Logging)
### Sichergestellte Konsistenz
Alle folgenden Dateien wurden korrigiert, um ausschließlich `database/myp.db` zu verwenden:
#### ✅ Konfigurationsdateien
- `config/settings.py` - Haupt-Konfiguration
- `config/app_config.py` - Alternative Flask-Konfiguration (korrigiert)
#### ✅ Model- und Datenbankdateien
- `models.py` - Hauptmodelle und Engine-Konfiguration
- `database/db_manager.py` - Datenbank-Manager
#### ✅ Utilities und Tools
- `utils/migrate_db.py` - Datenbank-Migration (Legacy-Fallbacks entfernt)
- `utils/quick_fix.py` - Schnelle Reparatur-Tools (korrigiert)
- `utils/debug_drucker_erkennung.py` - Debug-Tools (korrigiert)
- `utils/database_utils.py` - Backup und Wartung
- `utils/database_cleanup.py` - Cleanup-Manager
- `utils/database_schema_migration.py` - Schema-Migration
### Entfernte/Korrigierte Inkonsistenzen
#### 🗑️ Gelöschte Dateien
- `database/production.db` (leer, 0KB) - entfernt
#### 🔧 Korrigierte Fallbacks
- **Entfernt**: Referenzen zu `app.db`, `database.db`, `data/myp_platform.db`
- **Korrigiert**: Tabellennamen von `printer` zu `printers`
- **Vereinheitlicht**: Alle Import-Pfade verwenden `config.settings.DATABASE_PATH`
## Verwendung
### Datenbank initialisieren
```python
from models import init_db
init_db()
```
### Session verwenden
```python
from models import get_cached_session
with get_cached_session() as session:
# Datenbankoperationen
pass
```
### Backup erstellen
```python
from utils.database_utils import DatabaseBackupManager
backup_manager = DatabaseBackupManager()
backup_manager.create_backup()
```
## Optimierungen
Die Datenbank ist für Produktionsumgebung optimiert:
- **WAL-Modus**: Write-Ahead Logging für bessere Performance
- **Connection Pooling**: Optimierte Verbindungsverwaltung
- **Caching**: Intelligent caching system für häufige Abfragen
- **Auto-Vacuum**: Automatische Speicherbereinigung
- **Indizierung**: Optimierte Indizes für bessere Performance
## Wartung
### Automatische Wartung
- WAL-Checkpoints alle 1000 Seiten
- Incremental Vacuum alle 60 Minuten
- Statistik-Updates alle 30 Minuten
### Manuelle Wartung
```bash
# Migration ausführen
python utils/migrate_db.py
# Schnelle Reparatur
python utils/quick_fix.py
# Diagnose
python utils/debug_drucker_erkennung.py
```
## Wichtige Hinweise
⚠️ **NUR `database/myp.db` verwenden!**
- Keine anderen Datenbankdateien verwenden
- Alle Tools und Scripts sind auf diese Datei konfiguriert
- Bei Problemen: Backup aus `database/backups/` verwenden
🔒 **Backup-Strategie**
- Automatische Backups in `database/backups/`
- Vor größeren Operationen manuelles Backup erstellen
- WAL- und SHM-Dateien gehören zur Datenbank (nicht löschen!)
📊 **Monitoring**
- Log-Dateien in `logs/app/`
- Performance-Monitoring via `utils/database_utils.py`
- Health-Checks über API-Endpunkte verfügbar