JSON SYNC Delete
|
<< Click to Display Table of Contents >> Navigation: Kontakte & Anrufhistorie > Kontakte importieren > JSON > JSON SYNC Delete
|
Hintergrund
Häufig wird übersehen, dass Synchronisationsmechanismen klare Strategien benötigen, um Aktualisierungen und Löschungen eindeutig zu übermitteln. Dieses Problem tritt selbst bei größeren Diensten auf.
Viele Systeme unterstützen zwar das Synchronisieren von Löschungen, jedoch oft nur für einen begrenzten Zeitraum (z. B. 30 Tage).
Das bedeutet:
Wenn in dieser Zeit ein Kontakt gelöscht wird (z. B. durch einen Administrator), wird diese Information nur innerhalb dieses Zeitfensters übertragen.
Ist man länger abwesend (z. B. im Urlaub), kann es passieren, dass veraltete bzw. „verwaiste“ Daten bestehen bleiben.
Deshalb ist es wichtig, die Funktionsweise der Synchronisation zu verstehen, um Missverständnisse oder vermeintliche Fehler zu vermeiden.
Problem: Fehlende DELETE-Informationen
Viele Implementierungen liefern keine expliziten DELETE-Informationen.
In solchen Fällen gilt:
•Alle Daten müssen vollständig geladen werden
•Einträge, die nicht mehr vorhanden sind, gelten als gelöscht
Dieser Ansatz wird als Datenabgleich (Full Sync) bezeichnet – ist aber bei großen Datenmengen ineffizient.
Aktueller Ansatz
Die Synchronisation funktioniert nach folgendem Prinzip:
•Änderungen werden durch Vergleich mit dem bestehenden Datenbestand erkannt
•Kontakte, die nicht mehr im Ergebnis enthalten sind, werden gelöscht
⚠️ Voraussetzung: Es muss immer der komplette Datenbestand geladen werden.
Einschränkungen
Wir gehen davon aus, dass die meisten Nutzer:
•nur wenige Kontakte haben (typischerweise zwischen 1.000 und 2.000 Kontakten, maximal etwa 10.000)
Bei größeren Datenmengen und regelmäßiger Synchronisation kann es zu erhöhter Serverlast und Performance-Problemen kommen.
⭢ Spätestens dann sollten DELETE-Informationen direkt in der JSON-Antwort enthalten sein.
Die DELETE FLAG kann auf zwei Wegen erfolgen:
1. DELETE-Flag im Kontaktobjekt (empfohlen)
Ein Kontakt wird mit einem Löschkennzeichen übertragen:
{
"id": "2",
"deleted": true,
"lastModified": "2025-03-21T08:23:59Z"
}
➢ "id" dient zur eindeutigen Identifikation
➢ "deleted": true signalisiert die Löschung
2. Separate Liste gelöschter Kontakte
Alternativ wird eine Liste mit zu löschenden Kontakten bereitgestellt:
{
"deletedPeople": [
{
"contactid": 2
},
{
"contactid": 5
},
{
"contactid": 41
}
]
➢ Enthält nur die IDs der gelöschten Kontakte
➢ Entspricht dem Vorgehen, das z. B. auch von Google verwendet wird