Datenbank Synchronisierung

R

rpoelzl

Neues Mitglied
0
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.
 
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
 
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.
 
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
 
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:
 

Ähnliche Themen

S
Antworten
33
Aufrufe
2.674
Sempervivum
S
S
  • softwareunkundig
Antworten
1
Aufrufe
886
jogimuc
J
Zurück
Oben Unten