JSON SYNC Delete
<< Click to Display Table of Contents >> Navigation: Einstellungen > Kontakte > JSON > JSON SYNC Delete
|
Oft wird vergessen, dass Mechanismen Strategien benötigen, um Aktualisierungen oder Löschungen explizit zu kommunizieren. Das fehlt mitunter sogar bei größeren Diensten.
Darüber hinaus implementieren viele Dienste Synchronisationsprozesse für das Löschen von Kontakten, jedoch nur für einen vordefinierten Zeitraum – zum Beispiel 30 Tage. Das bedeutet, dass ein Dienst Löschinformationen zu einem Kontakt nur innerhalb dieser 30 Tage übermittelt. Wenn man also fünf Wochen im Urlaub ist und in dieser Zeit jemand (z. B. ein Admin) Daten löscht, kann es passieren, dass man am Ende verwaiste Daten sieht.
Daher ist es sinnvoll, die Bedingungen der Synchronisation zu verstehen, um Missverständnisse und vermeintliche Fehler zu vermeiden.
Viele Implementierungen senden überhaupt keine DELETE-Informationen. Das bedeutet, dass alle Daten stets vollständig abgerufen werden müssen, und Einträge, die nicht mehr geliefert werden, als gelöscht gelten (Datenabgleich).
Dieser Ansatz wird bei großen Datenmengen schnell nachteilig.
Der Ansatz ist wie folgt:
•Die Aktualisierung erfolgt durch den Vergleich der gelieferten Änderungen mit dem bestehenden Datenbestand.
•Wenn ein Kontakt nicht mehr in den Download-Ergebnissen enthalten ist, löschen wir die entsprechenden Datensätze.
Für diesen Ansatz benötigen wir jedoch stets den vollständig Datenumfang.
Wir gehen grundsätzlich nicht davon aus, dass ein Datenvolumen mehr als 10.000 Kontakte übersteigt. Die meisten Nutzer haben nur eine Handvoll Kontakte, maximal 1.000 bis 2.000.
Falls Nutzer trotzdem über eine große Anzahl von Datensätzen verfügen und unsere App diese Daten in regelmäßigen Abständen abruft, so kann dies zu Serverlast oder Performance-Problemen führen.
Spätestens an diesem Punkt muss die JSON-Antwort DELETE-Befehle enthalten.
Die DELETE FLAG Auswertung kann auf zwei Wege erfolgen:
Der zu löschende Kontakt wird als Kontaktobjekt mit dem Attribut "deleted": true übermittelt (gängige Methode):
{
"id": "2",
"deleted": true,
"lastModified": "2025-03-21T08:23:59Z"
}
Das Attribut "id" wird in diesem Prozess zur Identifizierung des Kontakts verwendet.
Zweitens wird ein Array namens "deletedPeople" bereitgestellt, das alle zu löschenden Kontakte anhand ihrer "contactid" auflistet – unter Verwendung derselben IDs, mit denen die Kontakte identifiziert werden (nach dem Google-Verfahren):
{
"deletedPeople": [
{
"contactid": 2
},
{
"contactid": 5
},
{
"contactid": 41
}
]