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.