1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Datenbank Synchronisierung

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von rpoelzl, 20.10.2009.

  1. rpoelzl, 20.10.2009 #1
    rpoelzl

    rpoelzl Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    19.10.2009
    Hallo,

    ich entwickle eine Applikation auf dem Android in der mehrere SQLite Tabellen gepflegt werden (Geräteverwaltung für ein Unternehmen). Dabei werden laufend Daten am Android geändert erfasst (soll offline in der Android DB sein) - diese Daten sollen dann über eine Funktion synchronisieren mit einer WEB Datenbank abgeglichen werden. Über das Web Interface kann man ebenfalls Daten einsehen und ändern.

    Hat jemand einen Vorschlag bzw. wie stelle ich am besten die Verbindung vom Android zur Webdatenbank her. Falls die Infos zu ungenau sind - einfach bescheid geben.
     
  2. Shinigami, 21.10.2009 #2
    Shinigami

    Shinigami Fortgeschrittenes Mitglied

    Beiträge:
    436
    Erhaltene Danke:
    69
    Registriert seit:
    08.04.2009
    Moin.

    Ich denke Du wirst noch an der Web Applikation etwas bereitstellen/entwickeln müssen in Form eines Web Services o.ä.

    Auch zu berücksichtigen: Welches System ist führend bei parallelen Änderungen am gleichen Datensatz?!

    Mal sehen was die anderen Pros hier noch so vorschlagen :)

    Gruß,
    Shini
     
  3. rpoelzl, 21.10.2009 #3
    rpoelzl

    rpoelzl Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    19.10.2009
    Hallo,

    an WebServices habe ich auch schon gedacht - mal schlau machen wie performant das ganz ist.

    Bezüglich Synchronisierungsverhalten - der Plan ist folgendermaßen - es gibt kein führendes System - die neueste Änderung gewinnt - d.h. in den Tabellen gibt es einen Änderungszeitpunkt oder einen Counter zum vergleichen. Über eine Einstellung kann aber ein führendes System festgelegt und somit ein anderes Synchronisierungsverhalten definiert werden.
     
  4. RED-BARON, 21.10.2009 #4
    RED-BARON

    RED-BARON Android-Hilfe.de Mitglied

    Beiträge:
    146
    Erhaltene Danke:
    19
    Registriert seit:
    06.10.2009
    Ich arbeite gerade an einem schmalen mysql connector. weil:
    1) ich eigentlich in Java nicht so firm bin :rolleyes:
    2) ich von Webservices null Ahnung habe
    3) ich mich nicht mit parsen der HttpResponse beschäftigen will
    4) ich in der Vergangenheit einen solchen connector schon erstellt habe
    in java ( blackberry ) und C ( mda, vpa, htc )
    5) in der Vergangenheit Datenvolumen noch teuer waren und
    das mysql protokoll doch erheblich schlanker als http als Basis ist
    6) ich nur INT und CHAR Typen verwende womit sich der
    Implementierungsaufwand in Grenzen hält
    7) ich auf jedes Stück Code was nicht unbedingt notwendig ist verzichten
    möchte ( weniger Fehler, weniger administrativer Aufwand )

    Nachteil: der Code gehört nicht mir :eek:

    kann aber die ein oder andere Frage beantworten

    MySQL Internals ClientServer Protocol - MySQL Forge Wiki
     
  5. SirMArtin, 23.10.2009 #5
    SirMArtin

    SirMArtin freier Samsungsupporter

    Beiträge:
    113
    Erhaltene Danke:
    7
    Registriert seit:
    05.08.2009
    REST-Webservices könnten ggf. etwas für Dich sein. Ansonsten ein "einfacher" HTTP-Call mit JSON-codierten Daten.
    Je nach Datenmenge lohnt es sich die Daten zu clustern, bevor Du sie überträgst (also bspw. in 10er oder 100er Pakete).
    Die HTTP-Technologien scheinen mir hier am brauchbarsten, da sie am wenigsten selbstimplementierten Code erfordern. Auf dem Android gibt es bereits Klassen, die Dir die HTTP-Kommunikation abnehmen. Server-seitig brauchst Du ein Servlet, welches die Daten entgegennimmt und sie in Deine Fachobjekte parst. Da Du eh eine Web-Oberfläche bauen willst, hast Du bereits Servlet-Technologien (JSP, Struts o.ä.) im Einsatz. Hier hält sich der Zusatzaufwand also in Grenzen. Für das Parsen von JSON-Daten gibt es bereits fertige Libs. Sowohl in Java, als auch für Android.

    Wenn Du Server-seitig kein Java einsetzen willst (warum auch immer), kannst Du auch jede andere Server-Technologie nutzen (bspw. PHP, Ruby on Rails, Python...). Ein weiterer Vorteil, wenn Du HTTP-Calls verwendest.

    Umzusetzen ist das ganze eigentlich recht simpel. Man nimmt die Daten, codiert sie nach JSON. Da kommt dann sowas wie {user{name=Hans;id=123;datum=12.12.2009},user{name=peter;id=124;datum=13.12.2009}} raus (habs aus dem Kopf geschrieben, Abweichungen in der konkreten Syntax möglich). Dann machst Du einen POST-Call auf und schickst die Daten an den Server:
    PHP:
    (...)
          
    HttpClient httpclient = new DefaultHttpClient();

          
    // Prepare a request object
          
    HttpPost httppost = new HttpPost("http://myhost.tld/context");
          
    httppost.setParams(params);

          
    // Execute the request
          
    HttpResponse response;
          try {
            
    response httpclient.execute(httppost);
    (...)
    Serverseitig lädst Du die Daten aus dem Request, decodierst sie, speicherst sie in Deiner DB und gibst dem Android ein OK zurück. (Status 200 reicht wohl)

    SirMArtin, meinend :cool:
     

Diese Seite empfehlen