Laden...

Datenspeicherung auf mobilem Gerät

Erstellt von loocie vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.000 Views
L
loocie Themenstarter:in
11 Beiträge seit 2007
vor 15 Jahren
Datenspeicherung auf mobilem Gerät

Hallo,

ich habe folgende Anforderungen:

Es soll eine Software für ein mobiles Gerät (Windows Mobile 6) erstellt werden. Da die Internet-Verbindung nicht zuverlässig ist, müssen Anwendungsdaten auf dem mobilen Gerät gespeichert werden. Es müssen zum Beispiel Adressdaten in einer Art Queue gespeichert werden. In dieser Queue wird sehr oft auf die Daten zugegriffen und die einzelnen Daten werden oft geändert.

Bisher habe ich das Ganze so gelöst:
Die Queue wird in einem XML-File gespeichert.
Bei jedem Update auf einem Datensatz der Queue wird die gesamte Queue gespeichert.

Problem bisher:
Die Performance des Systems leidet. Ab und zu treten XML-Exceptions auf und lassen das Programm abstürzen. Dem Benutzer der Software hilft es nicht, wenn ich ihm eine Fehlermeldung anzeige, in der steht, dass es ein Problem mit dem Speichern der Queue-Daten gab. Für den Benutzer muss nur sichergestellt werden, dass die Daten immer und fehlerfrei verfügbar sind.

Meine Fragen:

  1. Ist der Ansatz des Speicherns der Daten in einem XML-File richtig? Gibt es eventuell bessere Lösungen?

  2. Unter Umständen kann es passieren, dass an mehreren Stellen in der Software auf die Queue gleichzeitig zugegriffen wird. Wie kann man das Zugreifen auf die Queue synchronisieren ohne das die Applikation ins Stocken gerät?

  3. Wie behandelt man eventuell auftretende Exceptions beim Speichern der Queue? Eine Nachricht an den Benutzer kommt nicht in Frage.

Viele Grüße, Loocie

G
497 Beiträge seit 2006
vor 15 Jahren

XML ist aus zwei Gründen eher ungeeignet:

zum einen muss ein XML-Dokument als ganzes validiert werden. Das ist auf einem schnellen Server kein großes Problem, auf einem mobilen Gerät wird es jedoch sehr schnell zu einem Problem. Es gibt, wie du festgestellt hast, auch keine einfache Möglichkeit, einfach nur Daten anzuhängen. Man liest und schreibt immer die gesamte Datei.

Zum anderen produziert XML einen gewaltigen Overhead, der die reine Datenmenge ganz schnell auf ein vielfaches aufbläst. Auf einem Desktop oder Server sind ein paar MB XML-Daten kein Problem, der mobile Client hat daran aber ziemlich zu schlucken.

Wenn du eine Datenbank benutzen möchtest, kannst du u.a. SQLite ausprobieren. Speichert ebenfalls alles in eine Datei, ist relativ einfach zu benutzen und bietet zudem SQL-Datenbankabfragen, man muss also nicht selbst in der Datei navigieren.

Ansonsten kommt es stark auf die Art der Daten an. Wenn die Datenstruktur simpel genug ist, kann man auch ganz einfach eine Textdatei benutzen und die Daten im CSV-Format darin ablegen. Ob das im Vergleich zu SQLite aber sinnvoll ist, hängt davon ab, wie viele verschiedene Daten du speicherst und wie du darauf zugreifen musst.

313 Beiträge seit 2006
vor 15 Jahren

Master Slave Prinzip
Ein zentraler Datenvwerarbeiter der die Daten behandelt, auf den kann man zugreifen, er gibt zurueck ob er noch schreibt oder nicht, falls ja, probiert der Slave einfach spaeter nochmals aus zu schreiben.

F
10.010 Beiträge seit 2004
vor 15 Jahren

Weswegen hat sich denn MS mit dem Synchronisations Service solche mühe gegeben?

L
loocie Themenstarter:in
11 Beiträge seit 2007
vor 15 Jahren

Hallo,

ich habe mich nun für eine embedded Database (SqlServerCe) entschieden. Danke für die Hinweise.

Gruß, Loocie