Results 1 to 7 of 7

Thread: Databasebeheer

  1. #1

    Databasebeheer

    Hallo,

    Ik wil een app schrijven waar ik gegevens naar een database wil schrijven.
    Maar op sommige plaatsen heb ik geen internetverbinding.
    Hoe kan ik dit doen werken zodat ik offline alles ingeef en kan raadplegen, en dat er dan later een sync is met mijn database op mijn remote server?
    Ik ben niet op zoek naar code, maar wel naar de aanzet om dit te starten.

    Alvast bedankt

    Lainkes

  2. #2
    Lainkes,
    Ik zelf maak gebruik van een SQlite database die ik lokaal op een android device benader. Als ik wil synchroniseren sluit ik de database en upload de database naar een plek in de (Amazon) Cloud. Ik maak gebruik dat de wijzigingstijd van het bestand om te kijken welk bestand nieuwer is.
    nadelen:
    [] er kan maar 1 iemand kan werken in de database.
    [] SQLite is aleen voor simpele databases.
    voordelen:
    [] SQLite zit al ingebakken in de besturingssystemen en platform onafhankelijk
    [] SQLite is gratis.
    [] andere gebruikers kunnen ook eenvoudig de actuele database uit de Cloud halen.
    Ik heb hetzelfde probleem dat internet niet altijd beschikbaar is.
    Groet Ronaldo

  3. #3
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Iets dergelijks heet een roadwarrior scenario, en is vrij bewerkelijk. (hetzij complexe frameworks of veel handwerk).

    Als een workaround heb ik wel eens voor offline activiteiten apps gemaakt die alles in een soort transactie formaat vastleggen.

    Gewoon textfile. En deze dan afspelen aan de server kant. Het kan natuurlijk zijn dat dat niet goed gaat (iemand op kantoor ook een mutatie gemaakt), maar dat was zo zeldzaam dat we dat handmatig oplosten.

    Bij mijn huidige werkgever zetten we vroeger de database wel eens (iedere 2 jaar) lokaal op de laptop voor beurs dagen (vast internet is erg duur op zo'n beurzen, en wifi werkt niet echt, te dicht op elkaar), en de database op de server readonly. Kon hij in de avond uren na de beurs ook nog wat admin wegwerken in het hotel. De een-na-laatste keer had ik echter te veel problemen om de database in de windows versie van postgres te importeren agv collations/encoding issues. De laatste keer heb ik het niet eens geprobeerd (en dan had ik waarschijnlijk een rpi met een postgres server geprobeerd). Ook makkelijk mee te nemen 's avonds, je wilt je CRM database niet in je stand laten :-)

    Dus als je maar af en toe een groot evenement hebt, en als de hoofd gebruikers daar dan ook zijn, is gewoon de db meenemen ook een optie. Als sommige gebruikers alleen b.v. data entry als hoofd activiteit hebben, is een logger app soms nuttig en minder werk.

  4. #4
    Sommige dataset componenten hebben een mogelijkheid om lokaal te persisteren. Die kunnen ook versies bijhouden, dus bv wijzigingen of toevoegingen aan een dataset. kbmMemtable is er zo een, maar volgens mij kan zelfs de standaard client dataset dat ook al. Dat werkt echter alleen als de dataset beperkt is en je dus de hele boel in memory kunt hebben.

    Zo'n briefcase model opzetten is best lastig. Zo zit je bv al met je PK's als je een record gaat toevoegen, in een master-detail opzet. Een van de trucs die je daar zou kunnen toepassen is een UID toepassen als key. Die zijn in theorie altijd uniek, zodat het later syncen makkelijker zal zijn. Wijzigingen zou je kunnen bijhouden door een timestamp per record te gebruiken. Je hoeft dan alleen records met een timestamp later dan x (de vorige sync) te verplaatsen naar de server.

    Bij dat syncen heb je ook nog de standaard uitdagingen in een multi-user opzet. Want wat doe je bv met een record dat jij offline hebt aangepast terwijl een ander datzelfde record al heeft aangepast.

  5. #5
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Hoe kom je erbij dat uids gegeneerd op twee verschillende machines theoretisch uniek zijn ? Communiceren die machines stiekem via hyperspace zodat ze die uniekheid kunnen garanderen?

    In de replay scenarios hadden we de FK/PKs gemarkeerd als zijnde "lokaal". Deze werden dan bij afspelen van de replay naar de database gekoppeld aan _nieuw_ uitgegeven door de database met een lookup tabel van roadwarrior addities FK/PK naar database FK/PK.

    Bij problemen tijdens de replay wordt de transactie geabort. Met een errorlog fixte wij dan het spul handmatig (zeer zelden). Dat kan je natuurlijk ook steeds makkelijker maken (b.v. met een soort trace applicatie enz)

    In de transacties zat overinges ook de verwachtings waarde van het te muteren veld (de oude waarde uit de db van de "roadwarrior"). Hiermee kan je dan conflicten checken, en voorkomen dat een oude waarde (8 dagen geleden gedaan door roadwarrior maar pas vandaag gesynchronizeerd een nieuwere waarde (3 dagen geleden gemaakt door iemand die telefoontje van roadwarrior afhandelde)) overschrijft zonder waarschuwing.
    Last edited by marcov; 04-Jul-19 at 16:53.

  6. #6
    Hoe kom je erbij dat uids gegeneerd op twee verschillende machines theoretisch uniek zijn ?
    Dat is een redelijk breed geaccepteerde aanname, net zoals met GUID's.

    Communiceren die machines stiekem via hyperspace zodat ze die uniekheid kunnen garanderen?
    Vast wel .

  7. #7
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Quote Originally Posted by Benno View Post
    Dat is een redelijk breed geaccepteerde aanname, net zoals met GUID's.
    Nee, geen aanname. Tot vroeg in de jaren 2000 was dit gegarandeerd vanwege verwerking van uniek mac. Maar dit is dus al 10 jaar + gestopt uit security overwegingen. Al zingen die verouderde opvattingen dus nog wel rond, ze zijn tegenwoordig incorrect.

    En aannames gebaseerd op lage kansen zijn nu net niet theoretisch

    (G)UIDs als PK zijn de lamballen optie als in "het kan me nu even niks schelen". Alleen dat zegt nooit iemand hardop.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •