Strategia synchronizacji danych Offline/Online

Moim wymaganiem jest posiadanie aplikacji webowej serwera J2EE i aplikacji webowej klienta J2EE. Czasami klient może przejść do trybu offline. Kiedy klient przychodzi online, powinien być w stanie synchronizować zmiany w iz powrotem. Również powinienem być w stanie kontrolować, które wiersze/tabele muszą być synchronizowane na podstawie niektórych filtrów/reguł. Czy istnieją do tego jakieś frameworki Javy? Jeśli muszę wdrożyć na własną rękę, jakie są różne strategie, które można zaproponować?

Jednym z rozwiązań w moim umyśle jest utrzymywanie dzienników sql i wykonywanie tych samych poleceń po drugiej stronie podczas synchronizacji. Czy widzisz jakieś problemy z tą strategią?

Author: Ferruccio, 2008-11-07

4 answers

Istnieje wiele bibliotek Java do synchronizacji/replikacji danych. Dwa, o których Wiem, to żonkil I Symetrycy. W poprzednim życiu głupio zaimplementowałem (w Javie) własny proces replikacji danych. Wydaje się, że to coś, co powinno być dość proste, ale jeśli dane mogą być aktualizowane w wielu miejscach jednocześnie, jest to cholernie skomplikowane. Zdecydowanie polecam skorzystanie z jednego z wyżej wymienionych projektów, aby spróbować ominąć radzenie sobie z ta złożoność siebie.

 26
Author: Dónal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-09 10:57:00

Największy problem z synchronizacją polega na tym, że użytkownik edytuje coś w trybie offline, a to jest edytowane online w tym samym czasie. Musisz połączyć dwa zmienione fragmenty danych lub poradzić sobie z interfejsem użytkownika, aby użytkownik mógł powiedzieć, która wersja jest poprawna. Jeśli wyeliminujesz możliwość edycji obu jednocześnie, nie musisz rozwiązywać tego lepkiego problemu.

Metoda polega zwykle na dodaniu pola 'modified' do wszystkich tabel i porównaniu zmodyfikowanego pola klienta pod kątem podany rekord w danym wierszu, z datą modyfikacji serwera. Jeśli nie pasują, wymieniasz dane serwera.

Bądź ostrożny z automatycznymi kluczami - musisz upewnić się, że integralność danych jest zachowana podczas kopiowania z Klienta na serwer. Ponowne uruchomienie poleceń SQL na serwerze może postawić cię w sytuacji, w której automatycznie wygenerowany klucz się zmienił i nagle twoje klucze obce będą wskazywać inne rekordy niż ty zamierzony.

Często podczas importowania danych z innego źródła, śledzisz klucz główny z obcego źródła, a także swój własny klucz główny. Ułatwia to określanie zmian i różnic między zestawami danych w trudnych sytuacjach synchronizacji.

 16
Author: Kieveli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-07 12:55:22

Twój synchronizer musi określić, kiedy dane mogą być po prostu aktualizowane i kiedy człowiek musi pośredniczyć w potencjalnym konflikcie. Napisałem artykuł, który wyjaśnia, jak to zrobić za pomocą logowania i algebraicznych praw.

 4
Author: Norman Ramsey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-21 23:41:20

Co najlepiej nadaje się jako magazyn danych po stronie klienta w Twojej aplikacji? Możesz wybierać spośród wbudowanej bazy danych, takiej jak SQLite, kolejki komunikatów lub jakiegoś magazynu obiektów lub (jeśli żaden z nich nie może być użyty, ponieważ jest to aplikacja internetowa) plików/ dokumentów zapisanych na kliencie za pomocą Web DB lub IndexedDB poprzez HTML 5 ' s LocalStorage API.

Sprawdź artykuł Gold Rush: Mobile Transaction Middleware with Java-Object Replication . Dokumentacja Microsoftu czasami systemy połączone opisują dwa podejścia: zorientowane na usługi lub zorientowane na wiadomości i zorientowane na dane. Gorączka złota przybiera wcześniejsze podejście. Późniejsze podejście wykorzystuje merge-replikację baz danych.

 0
Author: CruiZen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-03 15:10:06