Zurück zum Blog

n8n Chatbot Database Cleanup Workflow

n8n Chatbot Database Cleanup Workflow

Datum11. Februar 2026
KategorieAutomation
Lesezeit5 Minuten

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.

Hinweis: Dieser Workflow ergänzt den bestehenden Chatbot-Workflow "Chatbot - Native AI Nodes (LiteLLM + Qdrant)" und sorgt für automatische Datenhygiene.

Betroffene Tabellen

TabelleZweckRetention
chatbot_rate_limitsTracking der API-Aufrufe pro Session/IP7 Tage
chatbot_audit_logChat-Verlauf für Kontext7 Tage
chatbot_audit_logAudit/Compliance Logs90 Tage
Wichtig: Die 7-Tage-Retention für Chat-History bedeutet, dass ältere Konversationen nicht mehr für den Chatbot-Kontext verfügbar sind. Die 90-Tage-Retention für Audit-Logs entspricht typischen Compliance-Anforderungen.

Workflow-Architektur

Der Cleanup-Workflow läuft täglich um 3:00 Uhr und führt sequentiell drei DELETE-Operationen durch:

  1. Rate Limits bereinigen - Löscht Einträge älter als 7 Tage
  2. Chat History bereinigen - Löscht Session-Daten älter als 7 Tage
  3. 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.

Vorteile der sequentiellen Ausführung:
  • 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 deleted

Chat 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 deleted

Audit 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 deleted
Hinweis: Die Verwendung von WITH ... RETURNING ermöglicht das Zählen der gelöschten Datensätze in einer einzigen Transaktion.

Workflow-Nodes

NodeTypFunktion
Schedule - Daily 3AMSchedule TriggerStartet täglich um 3:00 Uhr
Cleanup - Rate Limits (7 days)PostgreSQLDELETE mit RETURNING
Cleanup - Chat History (7 days)PostgreSQLDELETE mit RETURNING
Cleanup - Audit Log (90 days)PostgreSQLDELETE mit RETURNING
Code - SummaryJavaScriptZusammenfassung erstellen
IF - Records Deleted?ConditionPrüft ob Daten gelöscht wurden
Postgres - Log CleanupPostgreSQLProtokolliert 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.

Tipp: Zum Testen kann der Workflow manuell über "Execute Workflow" gestartet werden, ohne auf den Schedule zu warten.

Monitoring

Nach jeder Ausführung mit gelöschten Datensätzen wird ein Eintrag in chatbot_audit_log erstellt:

FeldWert
session_id00000000-0000-0000-0000-000000000000
ip_addresssystem
user_agentn8n-cleanup-workflow
assistant_responseZusammenfassung 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;
Ergebnis: Vollständig automatisierte Datenbankwartung mit transparenter Protokollierung und konfigurierbaren Aufbewahrungsfristen.