Synchronizacja MySQL z Androidem poprzez JSON

0

Witam,

Muszę napisać synchronizację bazy SQLite w Androidze bazą MySQL na serwerze z PHP. Jako framework do webservice w PHP używam Slima. Synchronizacja powinna odbywać się za pomocą JSONa. Pytanie jest tego typu: w jaki sposób po stronie serwera sprawdzić czy dane w bazie androida(SQLite) są aktualne z bazą po stronie serwera(sprawdzam w sumie 3-4 tabele po max 1000 rekordów). W jaki sposób zrobić to najefektywniej ?

Moim pomysłem było stworzenie tymczasowych tabel do których w chwili zapytania do API ładowane byłyby dane JSONa(wysyłam go POSTem). Po ich załadowaniu wykonane byłyby zapytania SQLa porównujące tabelę tymczasową z właściwą tabelą. Na koniec zwracamy jsona do apki adroida opisującego co dodać, co wywalić itd w SQLite.

Czy takie podejcie jest ok ? Można to zrobić lepiej/bardzije wydajnie/bezpieczniej ?

0

Najlepiej ajak byś jeszcze napisał jakiego rodzaju dane mają być synchronizowane oraz jakie operacje może wykonywać użytkownik na bazie danych po stronie telefonu (edycja, dodawanie, usuwanie, tylko edycja , tylko usuwanie , etc).

0

Tylko tekst i liczby ( baza produktów) i obrazki jpg (poza bazą ale będzie tabela z odnosnikami do nich). Na telefonie user nie może zrobić nic z bazą . Jest tylko do odczytu . Będzie uzupełniania od strony serwera .

0

Jeżeli użytkownik ma możliwość tylko do odczytu to zrobiłbym synchronizacje różnicową. W bazie danych na telefonie zapisywał bym zawsze datę ostatniej wykonanej aktualizacji. Podczas aktualizacji danych pobierał bym z bazy danych wszystkie rekordy dodane po "Dacie ostatniej aktualizacji.". Takie rozwiązanie wymaga aby każda wartość dodana do oryginalnej bazy danych również miała swój znacznik czasowy (moment dodania). Plus takiego rozwiązania jest tylko taki że z telefonu wysyłasz tylko jeden request z Datą, a zwracasz tylko brakujące dane.

0

Moim zdaniem najprościej pewnie jakby na serwerze była w jakiś sposób trzymana informacja o dacie ostatniej zmiany, wtedy klient, który by miał u siebie zapisaną datę ostatniej pobranej aktualizacji, najpierw by sprawdzał czy data się zmieniła i jeśli tak to ciągnął by co trzeba. Tylko jeszcze pytanie jak często te dane się zmieniają (ciągła edycja przez wielu użytkowników czy raz na kilka dni coś się zmienia)

EDIT: Nie zdążyłem :D

0

Ok dziękuję za sugestię. Zastanawiam się tylko czy same daty aktualizacji wystarczą do stwierdzenia czy dane zostały usunięte z głównej bazy. Taka sytuacja będzie dość częsta . Z drugiej strony wysłanie tych kilku tysięcy rekordów (a w sumie tylko kluczy rekordów)do serwera jsonem to nic w porównaniu z tym że synchronizowane będą też w pewnym momencie pliki jpg.

0

W takim razie opcja kolejna :
Każda akcja edycji, usuwania oraz dodawania musi mieć swój znacznik czasowy. Zasada działania podobna jak przy dodawaniu.

Pytanie czy wysyłanie wszystkich zdjęć jest wymagane ? Może wystarczy tylko część, np stronicowanie/paginacja ? może wystarczy wysłać zdjęcia z kompresowane lub w gorszej jakości ?

0

Obrazki będą sychronizowane tylko w razie zmiany danego obrazka. Zastanawiam się czy warto się bawić w osobne daty edycji usunięcia itd. Może w ten sposób . Jakie są potencjalne problemy z moim pomysłem z 1 posta

1 użytkowników online, w tym zalogowanych: 0, gości: 1