Zweiwege-Synchronisierung zwischen iPhone-Anwendung und Webanwendung

Ich habe eine Webanwendung, die auf einer MySQL-Datenbank basiert, für die ich eine iPhone-App erstellen möchte. Diese App ermöglicht Benutzern das Durchsuchen / Einfügen / Aktualisieren / Löschen von Daten in ihrem Konto in der Webanwendung.

Der einfachste Weg wäre, die iPhone-App einfach als Schnittstelle für die Web-App zu erstellen, dh jeder Vorgang muss mit dem Web verbunden sein. Ich möchte jedoch, dass die iPhone-App eine eigene "Offline" -Version der Datenbank hat. Dies würde es dem Benutzer nicht nur ermöglichen, offline zu arbeiten, sondern auch eine bessere Erfahrung bieten, da alles vor Ort eine schnellere und reaktionsschnellere App bedeutet.

Ich würde Konflikte behandeln, indem ich einen Zeitstempel verwende und die neueste Version behalte (ich verwende bereits Soft-Deletion, dh wenn der Benutzer einen Datensatz löscht, setze ich einfach ein Flag), aber ich habe nicht ganz herausgefunden, wie ich mit Einfügungen umgehen soll. Wenn der Benutzer neue Elemente sowohl in Offline-Datenbanken (iPhone-App) als auch in Online-Datenbanken (Web-App) einfügt, liegt ein Primärschlüsselkonflikt vor (alle meine Tabellen haben ein INTEGER-Feld mit automatischer Inkrementierung als Primärschlüssel). Wie kann ich mit diesem Problem umgehen?

Ich dachte daran, einen Primärschlüssel mit zwei Spalten zu haben, wobei einer die automatisch inkrementierte Ganzzahl ist und der zweite für das "Gerät" spezifisch ist. Auf diese Weise hätten neue Datensätze, die über die Web-App hinzugefügt wurden, die ID 1-web, 2-web usw. und diejenigen, die über die iPhone-App 1-iphone, 2-iphone usw. erstellt wurden. Auf diese Weise könnten die beiden Datensätze zusammengeführt werden Datenbanken ohne Konflikte. Was haltet ihr von dieser Idee?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage