App med SQLite databas, praktik

Diskussion i 'Frågor, support och diskussion' startad av Figgy, 2 okt 2012.

  1. Figgy

    Figgy Kid Droid Medlem

    Blev medlem:
    2 jan 2012
    Inlägg:
    61
    Mottagna gillanden:
    11

    MINA ENHETER

    När man har en app med en SQLite databas som hela tiden synkroniseras mot en webbtjänst finns det olika processer som jobbar med databasen samtidigt. I synkroniseringen använder jag mycke transactions och kan ibland vara kanska tidskrävande.

    Grejjen är den att när användaren gör något inom ui't som hämtar data från databasen medans en synkronisering är igång resulterar i att appen ibland inte får tillbaka någon data (i och med att databasen är i en transaktion).

    Hur gör man generellt för att motverka detta? Ska man läsa in databasen i minnet vid uppstart och jobba mot minnet, eller kan man praktiskt lösa realtids hämtningar från databasen utan att det krockar? En stor databas kan ju då också bli ganska resurskrävande...

    Problemet jag ser är att om synkroniseringen gör någon ändring i databasen måste man meddela detta i minnet lika så. Detta ser jag som lite moment 22. En rad i databasen kan ju även flaggas på olika sätt beroende på om den ändras lokalt eller har ändrats på servern.

    En annan lösning som jag ser det är att allt sköts via minnet, och när någon ändring sker publiceras detta till den lokala databasen.

    Hur gör man för att vara säker på att allt lokalt är i realtid men också utan att frysa tillgång till informationen?
     
  2. e7andy

    e7andy Professional Droid Hedersmedlem

    Blev medlem:
    14 okt 2009
    Inlägg:
    2 349
    Mottagna gillanden:
    835
    Telefon:
    Huawei P10 Plus

    MINA ENHETER

    Telefon:
    Huawei P10 Plus
    Telefon 2:
    Nexus 5
    Telefon 3:
    ADP1
    Övrigt:
    LG G Watch R, ChromeCast
    Går det att göra kortare transaktioner så att andra trådar hinner komma in och läsa oftare?
    När du ställer frågor mot databasen så bör den tråden vänta tills den får en databas-connection och kan ställa sin fråga. Vad är det som gör att den inte väntar?
    SQLite är jättesnabb så det borde inte ta någon märkbar tid att göra några uppdateringar.

    Här hittade jag en del matnyttigt:
    http://www.androiddesignpatterns.com/2012/05/correctly-managing-your-sqlite-database.html
    Använd en singleton eller en ContentProvider för att förenkla hanteringen vid när multipla trådar jobbar mot databasen.
     
    Last edited: 2 okt 2012