helpyourneighbour/docs/adr/001-database-index-strategy.md
OpenClaw fa0e9356d3
Some checks are pending
Docker Test / test (push) Waiting to run
fix(#29): Implementiere Datenbank-Indexstrategie für Such- und Listenperformance
2026-03-07 00:22:11 +00:00

65 lines
2 KiB
Markdown

# ADR 001: Datenbank-Indexstrategie für Such- und Listenperformance
## Status
Entwurf
## Problem
Mit wachsender Datenmenge drohen langsame Listen-/Filterabfragen für Requests, Offers und Reviews. Die aktuelle Datenbankstruktur benötigt eine gezielte Indexstrategie zur Optimierung der Performance.
## Lösung
Implementierung einer gezielten Indexstrategie für kritische Abfragepfade in den Datenbanktabellen.
## Kritische Query-Pfade
### 1. Help Requests Feed
- Abfragen von Requests mit Filter nach Status, Erstellungsdatum, Requester-ID
- Beispielabfragen:
```sql
SELECT * FROM help_requests WHERE status = 'open' ORDER BY created_at DESC LIMIT 20;
SELECT * FROM help_requests WHERE requester_id = ? ORDER BY created_at DESC;
```
### 2. Offers Historie
- Abfragen von Offers zu bestimmten Requests oder von bestimmten Helfern
- Beispielabfragen:
```sql
SELECT * FROM offers WHERE request_id = ? ORDER BY created_at DESC;
SELECT * FROM offers WHERE helper_id = ? ORDER BY created_at DESC;
```
### 3. Reviews
- Abfragen von Reviews zu Deals, Benutzern oder Bewertungen
- Beispielabfragen:
```sql
SELECT * FROM reviews WHERE deal_id = ?;
SELECT * FROM reviews WHERE reviewer_id = ?;
SELECT * FROM reviews WHERE reviewee_id = ?;
```
## Empfohlene Indexe
### help_requests Tabelle
1. `idx_status_created_at` (status, created_at)
2. `idx_requester_id` (requester_id)
### offers Tabelle
1. `idx_request_id_created_at` (request_id, created_at DESC)
2. `idx_helper_id_created_at` (helper_id, created_at DESC)
### reviews Tabelle
1. `idx_deal_id` (deal_id)
2. `idx_reviewer_id` (reviewer_id)
3. `idx_reviewee_id` (reviewee_id)
## Performance-Kriterien
- Jede kritische Abfrage hat eine begründete Index-Empfehlung
- Performance-Regressionsrisiko für Listenansichten sinkt nachvollziehbar
- EXPLAIN-basierte Erfolgskriterien für jede Kernabfrage festgelegt
## Implementation
Die Indexe werden in separaten Migrationen implementiert, um die Performance der bestehenden Datenbankoperationen nicht zu beeinträchtigen.