sql >> Database teknologi >  >> RDS >> Mysql

iOS - Best Practices for Core Data and Server Database Synchronization

Jeg gemmer et sidst ændrede tidsstempel i databasen på både kernedataposterne på telefonen og mysql-tabellerne på serveren.

Telefonen søger efter alt, der er ændret siden sidste synkronisering og sender det op til serveren sammen med et tidsstempel for den sidste synkronisering, og serveren svarer med alt, hvad der er ændret på dens ende siden det angivne synkroniseringstidsstempel.

Ydeevne er et problem, når mange plader har ændret sig. Jeg laver synkroniseringen på en NSOpeartion i baggrunden, som har sin egen administrerede objektkontekst. Når baggrundstråden er færdig med at foretage ændringer i dens administrerede objektkontekst, er der en API til at flette alle ændringerne ind i hovedtrådens administrerede objektkontekst - som kan konfigureres til simpelthen at smide alle ændringerne væk, hvis der er nogen konflikter forårsaget af brugeren ændrer data, mens synkroniseringen foregår. I så fald venter jeg bare et par sekunder og prøver derefter at foretage en synkronisering igen.

På ældre hardware, selv efter mange optimeringer, var det nødvendigt at afbryde synkroniseringen helt, hvis brugeren begynder at gøre ting i appen. Det brugte simpelthen for mange systemressourcer. Jeg tror, ​​at mere moderne iOS-enheder sandsynligvis er hurtige nok, så du behøver ikke gøre det længere.

(i øvrigt, da jeg sagde "mange poster er ændret", mente jeg, at omkring 30.000 rækker blev opdateret eller indsat på telefonen)




  1. Ydelsesovervejelser for midlertidige data i Oracle

  2. Udpakning af tekst mellem understrenge i MySQL

  3. Fremmednøgler og NULL i mySQL

  4. Forespørgsel inden for længde- og breddegrad i MySQL