Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Datenbankabgleich zu langsam, Ideen benötigt

Das Thema "Datenbankabgleich zu langsam, Ideen benötigt" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 12.05.2011, 22:00   #1 (permalink)
Junior Mitglied

Registriert seit: 26.02.2010
Beiträge: 40
Abgegebene Danke: 5
Erhielt 11 Danke für 10 Beiträge
Standard Datenbankabgleich zu langsam, Ideen benötigt

Hallo,

im Zuge des Studiums beschäftige ich mich gerade
mit Android Programmierung bzw mit der Kommunikation
zwischen Android und einer Datenbank im Netz und hab
nun ein kleines Problem.

Kurz zum Allgemeinen, es geht um eine Anwendung die sich Messwerte
aus dem Netz holt diese verarbeitet und aufbereitet.

Lokal habe ich eine DB mit 12 Tabellen, welche Messwerte von einer Datenbank im Netz aufnehmen sollen.
Das ganze läuft soweit auch schon, die Messwerte stellt ein
Rest Webservice als XML mit xlink Navigation zur Verfügung,
welche wider rum von einem SaxParser in Android gelesen werden.

Nur musste ich nun leider feststellen das das ganze bei einer großen
Anzahl von Messwerten unglaublich langsam ist, nach ner halben Stunde hab
ich abgebrochen, selbst 100 Messwerte parsen braucht schon
spürbar Zeit. Ich weiss ich könnte noch wegen des geringeren Overheads auf JSON wechseln, aber ich glaube nicht das der Unterschied so dramatisch ausfallen würde.

Nun überleg ich beim erstmaligen Start der Anwendung einen partiellen Dump der großen DB herunterzuladen und zu importieren. Danach würde dann ein Service im Hintergrund die Aktualisierung übernehmen, das sollte dann auch zu parsen sein, da nicht so oft ( alle 15min) neue Messwerte kommen.

So jetzt aber zur eigentlichen Fragen
Die Pros unter euch können doch bei meinen Ideen sicher nur müde lächeln, was wäre denn der einfachste bzw beste Weg das möglichst schnell & effizient zu implementieren?

Danke schonmal für eure Antworten...

Mfg

MrPink
-MrPink- ist offline   Mit Zitat antworten
Alt 13.05.2011, 08:34   #2 (permalink)
Android-Hilfe.de Mitglied

Registriert seit: 21.03.2011
Beiträge: 63
Abgegebene Danke: 1
Erhielt 3 Danke für 2 Beiträge
Standard AW: Datenbankabgleich zu langsam, Ideen benötigt.....

Bist du dir sicher, dass es am Parsen selbst liegt und nicht vielleicht am DB-Zugriff? Wie du ja bereits geschrieben hast, dauert es bei großen Datenmengen länger. Eventuell solltest du dir auch mal den Aufbau der DB anschauen, wie dort die Zugriffspfade sind. Ich kann mir gut Vorstellen, dass hier auch einiges an Performance liegen gelassen wird.
Was ich auch schon desöfteren gesehen haben, sind Programmierer, die anstatt einen Select auf die DB abzusetzen, für jede Satz einen einzelnen Select inclusive Aufbau der Connection machen.

Um wirklich zu schauen wo denn nun die Performance verloren geht, solltest du dir in deinen Code Zeitmessungen einbauen, die in die Logs geschrieben werden. So kannst du immer nachvollziehen, wie lange irgendwas gedauert hat.
ApeDick ist offline   Mit Zitat antworten
Alt 13.05.2011, 12:28   #3 (permalink)
Junior Mitglied

Registriert seit: 26.02.2010
Beiträge: 40
Abgegebene Danke: 5
Erhielt 11 Danke für 10 Beiträge
Standard AW: Datenbankabgleich zu langsam, Ideen benötigt.....

Danke erstmal für die Antwort, und nee sicher bin ich mir nicht wo genau
Zeit verloren geht.

Datenbankzugriff erfolgt in beide Richtungen via Singleton, das mit
den Zeitmessungen hab ich mir aber auch schon überlegt und nur mal kurz ausprobiert, ein Datensatz parsen und einfügen lag jeweils bei 500ms
Ich hab allerdings jetzt noch einiges "optimiert" (zumindest hoffe ich das ), z.b. alles auf Stringbuffer umgestellt und darauf geachtet beim iterieren nicht massenhaft Objekte zu erzeugen usw, werd damit nachher mal noch weitermachen und dann heute abend mal schauen wies jetzt läuft, und vor allem was wieviel Zeit braucht.
Aktuell konnte ich immerhin in 18min mal 5000 Datensätze parsen, aber das ist
natürlich immer noch viel zu lang

Ich glaub immer noch, dass mein Problem architekturbedingt ist, durch xlink ist es mir möglich auf jeden einzelnen Datensatz von Messdaten als XML File zuzugreifen, das hatte ich eigentlich als Vorteil gesehen, bedeutet aber auch das ich jeden einzelnen Eintrag parsen & inserten muss,
Also z.b. meinserver.de/sensor01/1 bis meinserver.de/sensor01/5000 sind dann jeweils generierte XML Files mit einzelnen Datensätzen.

mfg
-MrPink- ist offline   Mit Zitat antworten
Alt 13.05.2011, 12:56   #4 (permalink)
Android-Hilfe.de Mitglied

Registriert seit: 06.10.2009
Beiträge: 60
Abgegebene Danke: 10
Erhielt 1 Danke für 1 Beitrag
Standard AW: Datenbankabgleich zu langsam, Ideen benötigt.....

Hmm,

nur weil die Zahl 5000 Datensätze auftaucht. Bei mir dauern die Inserts
in die sqlite-db ca. 2 Minuten. 1 Datensatz = 12 Spalten. Der Download
incl. "parsen" ca. 20 Sekunden. Übertragen werden die Daten komprimiert
und in einem binären Schema | Länge/Wert Format. Die Werte können also
sequenziell "angesprungen" werden.

Als Server wird eine MySQ-DB verwendet. Bisher hat sich noch niemand
beschwert, dass es zu langsam wäre.

Vll. bist Du was die Schnittstelle zur DB angeht doch etwas flexibler. XML,
JSON ist vll. ned das passende für Dich - oder Du beschränkst Dich eben
doch auf den Sync nach einer DB-Initalisierung. Evtl. kannst Du die Daten
auf dem Server schon in eine sqlite exportieren und läds die fertige Datei
auf das Gerät !?

Grüße und viel Erfolg, RB
RED-BARON ist offline   Mit Zitat antworten
Alt 13.05.2011, 13:01   #5 (permalink)
Ehren-Mitglied
 
Benutzerbild von Thyrion

Modell: HTC Desire

Registriert seit: 21.07.2009
Beiträge: 9.876
Abgegebene Danke: 93
Erhielt 1.785 Danke für 1.389 Beiträge
Standard AW: Datenbankabgleich zu langsam, Ideen benötigt.....

Ich vermute mal, die 5000 (synchronen?) Web-Requests bremsen das ganze aus.
__________________
Thyrion
Siemens C25 / Nokia 6510 / SE K700i / Samsung Galaxy I7500 (rooted) / HTC Desire (rooted / S-ON)

Kein Support via PN und E-Mail. Bitte das Forum nutzen!
Traut Euch, die Suche beißt nicht! - Android-Hilfe.de - Forenregeln - Eine Bitte an alle Android-Neulinge...

Kein Punkt? Kein Komma? Keine Hilfe!
schreibst du alles klein? dann sind deine shift-tasten aber ganz schön einsam. DRÜCK sie mal öfter!
Thyrion ist offline   Mit Zitat antworten
Alt 13.05.2011, 13:12   #6 (permalink)
Ehren-Mitglied
 
Benutzerbild von Kranki

Modell: Nexus One

Registriert seit: 19.07.2009
Beiträge: 4.329
Abgegebene Danke: 127
Erhielt 1.372 Danke für 871 Beiträge
Kranki eine Nachricht über ICQ schicken
Standard AW: Datenbankabgleich zu langsam, Ideen benötigt.....

Das vermute ich auch. Tausende kleiner XML-Dateien einzeln laden klingt für mich auch unglaublich langsam.
__________________
CyanogenMod 7 Nightly - AmonRa Recovery 2.0 - Nexus One
Kein Support via PN und E-Mail. Bitte das Forum nutzen.
"Es ist Mode geworden, die Freiheitsrechte des Bürgers in den Mittelpunkt zu stellen." - Siegfried Kauder
Kranki ist gerade online   Mit Zitat antworten
Alt 13.05.2011, 13:42   #7 (permalink)
Junior Mitglied

Registriert seit: 26.02.2010
Beiträge: 40
Abgegebene Danke: 5
Erhielt 11 Danke für 10 Beiträge
Standard AW: Datenbankabgleich zu langsam, Ideen benötigt.....

Ja eben, das wars was ich ja vermutet hatte (sollte man eigtlich mit logischen Denken selbst drauf kommen), mittlerweile weis ich es auch sicher
Die Webrequests gehen pro Vorgang 200-300ms, den Datensatz (5 Spalten) dann in die DB schreiben ca 10ms.

@RED-BARON
Danke erstmal, bezogen sich deine Werte auch auf 5000 Datensätze ?
Hättest du zufällig ein Beispiel bzw noch ein paar Stichwörter für mich wie ich die Daten komprimiert im Binärformat übertrage, ich glaube ich stehe gerade etwas auf dem schlauch?

Ich denke es wäre kein Problem den Inhalt der MySQL Datenbank auf dem Server noch jeder Aktualisierung in sqlite zu exportieren und zum Download anzubieten, das war ja auch meine erste Idee nachdem ich gemerkt habe wie langsam das ganze ist. Sollte mithilfe von talend Arbeit von ein paar Minuten sein.

Ein anderer Ansatz wäre, wenn ich einfach auf dem Server ein PHP Skript ablege, das mir dann je nach Aufruf die ganze Tabelle, oder was eben gewünscht wäre als JSON File ausliefert. Damit hätte ich zumindest mal die große Anzahl an Requests umgangen, wie lang das ganze dann zum parsen braucht müsste ich halt mal noch schauen.

Was würdet ihr denn empfehlen ?

Geändert von -MrPink- (13.05.2011 um 13:47 Uhr)
-MrPink- ist offline   Mit Zitat antworten
Alt 13.05.2011, 15:04   #8 (permalink)
Ehren-Mitglied
 
Benutzerbild von Thyrion

Modell: HTC Desire

Registriert seit: 21.07.2009
Beiträge: 9.876
Abgegebene Danke: 93
Erhielt 1.785 Danke für 1.389 Beiträge
Standard AW: Datenbankabgleich zu langsam, Ideen benötigt.....

a) Wieso überträgst du in XML und nicht in z.B. JSON oder Plain CSV (und dabei einfach im WebServer HTTP-Compression aktivieren)? Es ist doch immer die gleiche Datenstruktur, oder? Und bei "Messwerten" wohl auch immer nur Zahlen, das sollte sich super komprimieren lassen - ok, dadurch hast du wieder etwas Verlust beim dekomprimieren, aber denk auch an "kleine" Bandbreiten im Mobilnetz.
b) Lass dir pro Sensor alle benötigten Werte geben und nicht einzeln
__________________
Thyrion
Siemens C25 / Nokia 6510 / SE K700i / Samsung Galaxy I7500 (rooted) / HTC Desire (rooted / S-ON)

Kein Support via PN und E-Mail. Bitte das Forum nutzen!
Traut Euch, die Suche beißt nicht! - Android-Hilfe.de - Forenregeln - Eine Bitte an alle Android-Neulinge...

Kein Punkt? Kein Komma? Keine Hilfe!
schreibst du alles klein? dann sind deine shift-tasten aber ganz schön einsam. DRÜCK sie mal öfter!
Thyrion ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Auf was für Ideen XP kommt :) geminga Smalltalk und Offtopic 18 10.11.2010 10:46
Android-Projekt, suche Ideen... mephisti Android App Entwicklung 10 09.10.2010 13:35
Noch mehr Speed Ideen dahool Root / Hacking / Modding für Samsung Galaxy S 43 13.09.2010 21:02
2D Spiel - Wegfindung, Ideen funcoder Android App Entwicklung 4 25.01.2010 11:12
Ideen für ne Applikation? mastix Android App Entwicklung 2 17.08.2009 14:31




Du liest gerade: "Datenbankabgleich zu langsam, Ideen benötigt" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.