Zum Hauptinhalt springen

Große Datenmengen

Beim Arbeiten mit großen Datenmengen sind bestimmte Best Practices wichtig, um Performance zu optimieren und Timeouts zu vermeiden.

Timeouts erhöhen​

Große Anfragen dauern länger. Stelle sicher, dass dein HTTP‑Client ein ausreichend hohes Timeout hat:

  • Minimum: 30 Sekunden
  • Empfohlen: 60 Sekunden oder höher
# Beispiel mit curl (60 Sekunden Timeout)
curl --max-time 60 "https://YOUR_SERVER-api.mail2many.de/api/v1/subscribers" \
--user 'mail2many:YOUR_API_KEY' \
-H "Content-Type: application/json" \
-H "Accept: application/json"

Daten laden (GET)​

Verwende Paginierung beim Abrufen großer Datenmengen:

# Lade in Seiten statt alles auf einmal
for page in 1 2 3 4 5; do
curl "https://YOUR_SERVER-api.mail2many.de/api/v1/subscribers?page=$page&limit=100" \
--user 'mail2many:YOUR_API_KEY' \
-H "Content-Type: application/json" \
-H "Accept: application/json"
done

Empfehlter limit: 50–100 pro Anfrage

Daten erstellen/aktualisieren (POST/PUT)​

Teile große Mengen in mehrere Anfragen auf. Verwende die upsert Route für Batch‑Operationen:

❌ Nicht empfohlen:

# Nicht 10.000 Einträge in einer Anfrage
curl -X POST "https://YOUR_SERVER-api.mail2many.de/api/v1/subscribers/upsert" \
--user 'mail2many:YOUR_API_KEY' \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"subscribers": [... 10000 items ...]}'

Auch nicht empfohlen ist es, 10.000 Empfänger einzeln zu aktualisieren:

# Nicht sinnvoll: 10.000 einzelne API-Calls
for subscriber in "${subscribers[@]}"; do
curl -X PUT "https://YOUR_SERVER-api.mail2many.de/api/v1/subscribers/$id" \
--user 'mail2many:YOUR_API_KEY' \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d "$subscriber"
done

✅ Empfohlen:

# 10 Anfragen mit je 1.000 Einträgen via upsert
for i in 1 2 3 4 5 6 7 8 9 10; do
curl -X POST "https://YOUR_SERVER-api.mail2many.de/api/v1/subscribers/upsert" \
--user 'mail2many:YOUR_API_KEY' \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"subscribers": [... 1000 items ...]}'
done

Ideal sind 500–2.000 Einträge pro Anfrage.

Request‑Frequenz optimieren​

Nicht alle Anfragen müssen häufig stattfinden. Überprüfe deine Synchronisationshäufigkeit:

  • Häufige Änderungen: Stündlich oder täglich
  • Seltene Änderungen: Wöchentlich oder monatlich
  • Einmalige Imports: Verteile über mehrere Tage

Weniger Anfragen = weniger Last auf deinem System und auf der API.

Parallelität begrenzen​

Zusätzlich zum Request‑Rate‑Limit gilt ein Concurrent‑Limit: maximal 10 parallele Requests pro API-Key.

  • Begrenze Worker/Threads auf einen festen Wert (z. B. 5–10)
  • Nutze Queueing statt unbegrenzter Parallelität
  • Reagiere bei 429 mit kurzem Backoff und Retry

Details zu Headern und Reset‑Verhalten findest du unter Rate Limiting.

Filterung und Sortierung​

Nutze Filter um nur relevante Daten zu laden:

# Lade nur Empfänger, die sich in den letzten 7 Tagen angemeldet haben
search=[{"createdAt":{"condition":">=","value":"2026-02-25 00:00:00"}}]

Das reduziert Datentransfer und Verarbeitungszeit.

Best Practices Zusammenfassung​

  1. Timeout setzen: Min. 30–60 Sekunden
  2. Paginieren: 50–100 Einträge pro Seite
  3. Batch‑Größe: 500–2.000 Einträge pro Anfrage
  4. Häufigkeit: Nicht öfter als nötig
  5. Filtern: Nur benötigte Daten abrufen
  6. Fehlerbehandlung: Siehe Fehlertoleranz

Siehe auch die Paginierung‑Dokumentation für weitere Details.