n8n Chatbot Database Cleanup Workflow
n8n Chatbot Database Cleanup Workflow
Inhaltsverzeichnis
Hintergrund
Der matzka.cloud RAG-Chatbot verwendet mehrere PostgreSQL-Tabellen zur Speicherung von Rate-Limits, Chat-Verläufen und Audit-Logs. Ohne regelmäßige Bereinigung wachsen diese Tabellen kontinuierlich an und können die Performance beeinträchtigen.
Betroffene Tabellen
| Tabelle | Zweck | Retention |
|---|---|---|
chatbot_rate_limits | Tracking der API-Aufrufe pro Session/IP | 7 Tage |
chatbot_audit_log | Chat-Verlauf für Kontext | 7 Tage |
chatbot_audit_log | Audit/Compliance Logs | 90 Tage |
Workflow-Architektur
Der Cleanup-Workflow läuft täglich um 3:00 Uhr und führt sequentiell drei DELETE-Operationen durch:
- Rate Limits bereinigen - Löscht Einträge älter als 7 Tage
- Chat History bereinigen - Löscht Session-Daten älter als 7 Tage
- Audit Logs bereinigen - Löscht Logs älter als 90 Tage
Die Ergebnisse werden zusammengefasst und bei gelöschten Datensätzen in die Audit-Tabelle protokolliert.
- Zuverlässige Datenübergabe zwischen Nodes
- Einfaches Debugging und Monitoring
- Keine Race-Conditions bei der Zusammenfassung
SQL-Queries
Rate Limits (7 Tage)
WITH deleted AS (
DELETE FROM chatbot_rate_limits
WHERE created_at < NOW() - INTERVAL '7 days'
RETURNING id
)
SELECT COUNT(*) as rate_limits_deleted FROM deletedChat History (7 Tage)
WITH deleted AS (
DELETE FROM chatbot_audit_log
WHERE timestamp < NOW() - INTERVAL '7 days'
RETURNING id
)
SELECT COUNT(*) as chat_history_deleted FROM deletedAudit Logs (90 Tage)
WITH deleted AS (
DELETE FROM chatbot_audit_log
WHERE timestamp < NOW() - INTERVAL '90 days'
RETURNING id
)
SELECT COUNT(*) as audit_log_deleted FROM deletedWITH ... RETURNING ermöglicht das Zählen der gelöschten Datensätze in einer einzigen Transaktion.Workflow-Nodes
| Node | Typ | Funktion |
|---|---|---|
| Schedule - Daily 3AM | Schedule Trigger | Startet täglich um 3:00 Uhr |
| Cleanup - Rate Limits (7 days) | PostgreSQL | DELETE mit RETURNING |
| Cleanup - Chat History (7 days) | PostgreSQL | DELETE mit RETURNING |
| Cleanup - Audit Log (90 days) | PostgreSQL | DELETE mit RETURNING |
| Code - Summary | JavaScript | Zusammenfassung erstellen |
| IF - Records Deleted? | Condition | Prüft ob Daten gelöscht wurden |
| Postgres - Log Cleanup | PostgreSQL | Protokolliert die Bereinigung |
Import & Aktivierung
Schritt 1: Workflow importieren
In n8n navigieren zu Workflows → Import from File und die JSON-Datei hochladen.
Schritt 2: Credentials prüfen
Der Workflow verwendet die PostgreSQL-Credential "PostgreSQL - n8n". Falls diese nicht automatisch zugewiesen wird, manuell in jedem PostgreSQL-Node auswählen.
Schritt 3: Workflow aktivieren
Nach dem Import den Workflow über den Toggle in der oberen rechten Ecke aktivieren. Der erste Lauf erfolgt am nächsten Tag um 3:00 Uhr.
Monitoring
Nach jeder Ausführung mit gelöschten Datensätzen wird ein Eintrag in chatbot_audit_log erstellt:
| Feld | Wert |
|---|---|
| session_id | 00000000-0000-0000-0000-000000000000 |
| ip_address | system |
| user_agent | n8n-cleanup-workflow |
| assistant_response | Zusammenfassung der gelöschten Datensätze |
Cleanup-Logs abfragen
SELECT timestamp, assistant_response
FROM chatbot_audit_log
WHERE user_agent = 'n8n-cleanup-workflow'
ORDER BY timestamp DESC
LIMIT 10;