App
Mam aplikację internetową, która obecnie używa AppCache funkcjonalności w trybie offline, ponieważ użytkownicy systemu muszą tworzyć dokumenty w trybie offline. Dokument jest najpierw tworzony w trybie offline, a gdy dostęp do Internetu jest dostępny, użytkownik może kliknąć "synchronizuj", który wyśle dokument na serwer i zapisze go jako wersję. Aby być bardziej szczegółowym, aplikacja nie zapisuje delty zmiany jako wersji (zmienione pole dokładnie), ale raczej całego dokumentu w całości. Innymi słowy, zapisany zostaje dokument "migawki".poprawić funkcjonalność synchronizacji danych klient-serwer z delt
Problem
Użytkownicy mogą zalogować z różnych przeglądarek i urządzeń oraz prac dotyczących ich dokumentów. Po kliknięciu "sync", jeśli dokument serwera jest nowszy, , cała wersja klienta zostanie nadpisana przez serwer. Prowadzi to do jednego głównego problemu, który jest przedstawiony na poniższym obrazku.
Scenariusz powyżej występuje z powodu obecnej implementacji, która nie opiera się na delt (niewielkie zmiany), a raczej opiera się na zmianach migawki.
Niektóre pytania
1) Moje badania wskazują, że powinna być modernizacja „SYNC” mechanizm jest wyrażany w delt (małe zmiany, które mogą być stosowane niezależnie). Czy to rozsądne podejście?
2) Czy każda delta powinna być stosowana niezależnie?
2) Według moich badań delt wersji ma wartość liczbową, a nie znacznik czasu. Jaka powinna być wartość tego dokładnie? Jak mam się upewnić, że zarówno serwer, jak i klient zgadzają się, jaki powinien być numer wersji?
Stos informacji
- kątowa na frontend
- IndexedDB zapisywanie dokumentów lokalnie (w trybie offline)
- Postgres DB z JSONB w backend
pokrewne: http://stackoverflow.com/questions/28797992/best-practices-in-syncing-data –
Git już to robi, może jakoś go używać, aby pokazać różnicy dokumentu użytkownika. –
Jack Wade podsumowuje wszystko dla Ciebie. Za pomocą narzędzia/skryptu diff możesz uzyskać delty, z których większość nie powinna mieć konfliktów (np. Te same linie edytowane), a następnie musisz znaleźć najlepszy sposób na rozwiązanie ewentualnych konfliktów (np. Nasz, ich, ręczne scalanie , ostatnie wygrane itp.). –