E
enrem
Erfahrenes Mitglied
Hallo,
ich möchte eine lokale SQLite-Datenbank (Tabellen) mit bzw. über die Dropbox synchronisieren. Dabei können mehrere Geräte den selben Account der Dropbox verwenden!
Diaro macht es genauso wie ich das gerne hätte. Dort kann ich bspw. An 3 Geräten gleichzeitig Daten erfassen und diese werden anschl. korrekt synchronisiert (kann man selbst anstoßen).
Und zwar legt Diaro (verschlüsselt mit SQLCipher) für jeden Datensatz eine Datei in der Dropbox an. Eine Tabelle mit 100 Datensätzen hätte somit in der Dropbox 100 Dateien.
Was ich mir auch überlege, wird am Ende durch Abhängigkeiten in den Tabellen (Referentielle Integrität) zu kompliziert, wenn ich das weiterdenke.
Eine Lösung wäre, nur bei einem Gerät eine Neuanlage zu gestatten und die anderen Geräte dürfen nur ändern. Dann könnte man es wie unten leicht und sicher umsetzen.
Beispiel (Tag und Sekunden lasse ich in Feld Update zum erklären einfachhalber weg):
Datenbank Gerät1 „stunden.sqlite“. Tabellenname „Kunde“. Felder _id, Name und update.
_id Name update
1 Homer 19:00
2 Marge 19:01
3 Bart 19:30
Datenbank Gerät2 „stunden.sqlite“. Tabellenname „Kunde“. Felder _id und Name.
_id Name update
1 Thomas 20:00
2 Michael 18:00
3 Heinz 17:00
Als erstes synchronisiert Gerät 1:
Ich möchte nun auf der Dropbox in den Ordner App/stundenapp/kunde folgende Dateien anlegen. Dabei steht die erste Zahl für die _id in der Tabelle und die zweite für die Zeit in Feld Update. In der Textdatei schreibe ich den kompletten Datensatz. Somit existiert Pro Datensatz eine Datei in der Dropbox. Der Ordnername „Kunde“ entspricht dem Tabellennamen.
Zuerst vergleiche ich die Daten von Gerät (Quelle) mit dem Server (Ziel). Da noch keine Dateien in der Dropbox existieren werden diese angelegt (_new.txt).
00000000001_1900_new.txt (Inhalt Homer..)
00000000002_1901_new.txt (Inhalt Marge..)
00000000003_1930_new.txt (Inhalt Bart..)
Jetzt synchronisiert Gerät 2:
_id 1 wird überschrieben da der Eintrag 20:00 Uhr Thomas jünger ist als 19:00 Uhr Homer.
00000000001_2000_update.txt (Inhalt Thomas..)
_id 2 wird nicht überschrieben da der Eintrag 18:00 Uhr Michael älter ist als 19:01 Marge.
00000000002_1901_neu.txt (Inhalt Marge..)
_id 3 wird nicht überschrieben da der Eintrag 17:00 Uhr (Heinz) älter ist al 19:30 Uhr Bart
00000000003_1930_new.txt (Inhalt Bart..)
Somit wurde nur 1 Datensatz geändert.
Bei den gelöschten Datensätzen würde in der Dropbox folgende Datei stehen.
00000000004_2100_del.txt (Inhalt leer oder lassen zum wiederherstellen)
Nun zu meinem Problem!
Ich möchte das andere Geräte Neuanlagen durchführen können. Dann jedoch muss ich die Tabellen mit den unterschiedlichen _id´s zusammenführen. Was bedeutet das ich für jede Tabelle eine zusätzliche ID einführen muss. Also für den Kunden gäbe es dann _id, idKunde, und Name.
Und nun bin ich am Ende. Ab jetzt sehe ich keine Bäume mehr. Bin total verwirrt. Keine Ahnung wie ich jetzt zwei SQLite-Datenbanken sicher zusammenfummeln kann.
Hab Ihr einen Lösungsansatz?
Freue mich über jeden Kommentar.
Nachtrag:
Was haltet Ihr davon wenn ich die IMEI Nr. vom Smartphone in die eigene ID´s packe. Beispielsweise wäre die IDKunde = _id+IMEI-Nr.
Gruß enrem
ich möchte eine lokale SQLite-Datenbank (Tabellen) mit bzw. über die Dropbox synchronisieren. Dabei können mehrere Geräte den selben Account der Dropbox verwenden!
Diaro macht es genauso wie ich das gerne hätte. Dort kann ich bspw. An 3 Geräten gleichzeitig Daten erfassen und diese werden anschl. korrekt synchronisiert (kann man selbst anstoßen).
Und zwar legt Diaro (verschlüsselt mit SQLCipher) für jeden Datensatz eine Datei in der Dropbox an. Eine Tabelle mit 100 Datensätzen hätte somit in der Dropbox 100 Dateien.
Was ich mir auch überlege, wird am Ende durch Abhängigkeiten in den Tabellen (Referentielle Integrität) zu kompliziert, wenn ich das weiterdenke.
Eine Lösung wäre, nur bei einem Gerät eine Neuanlage zu gestatten und die anderen Geräte dürfen nur ändern. Dann könnte man es wie unten leicht und sicher umsetzen.
Beispiel (Tag und Sekunden lasse ich in Feld Update zum erklären einfachhalber weg):
Datenbank Gerät1 „stunden.sqlite“. Tabellenname „Kunde“. Felder _id, Name und update.
_id Name update
1 Homer 19:00
2 Marge 19:01
3 Bart 19:30
Datenbank Gerät2 „stunden.sqlite“. Tabellenname „Kunde“. Felder _id und Name.
_id Name update
1 Thomas 20:00
2 Michael 18:00
3 Heinz 17:00
Als erstes synchronisiert Gerät 1:
Ich möchte nun auf der Dropbox in den Ordner App/stundenapp/kunde folgende Dateien anlegen. Dabei steht die erste Zahl für die _id in der Tabelle und die zweite für die Zeit in Feld Update. In der Textdatei schreibe ich den kompletten Datensatz. Somit existiert Pro Datensatz eine Datei in der Dropbox. Der Ordnername „Kunde“ entspricht dem Tabellennamen.
Zuerst vergleiche ich die Daten von Gerät (Quelle) mit dem Server (Ziel). Da noch keine Dateien in der Dropbox existieren werden diese angelegt (_new.txt).
00000000001_1900_new.txt (Inhalt Homer..)
00000000002_1901_new.txt (Inhalt Marge..)
00000000003_1930_new.txt (Inhalt Bart..)
Jetzt synchronisiert Gerät 2:
_id 1 wird überschrieben da der Eintrag 20:00 Uhr Thomas jünger ist als 19:00 Uhr Homer.
00000000001_2000_update.txt (Inhalt Thomas..)
_id 2 wird nicht überschrieben da der Eintrag 18:00 Uhr Michael älter ist als 19:01 Marge.
00000000002_1901_neu.txt (Inhalt Marge..)
_id 3 wird nicht überschrieben da der Eintrag 17:00 Uhr (Heinz) älter ist al 19:30 Uhr Bart
00000000003_1930_new.txt (Inhalt Bart..)
Somit wurde nur 1 Datensatz geändert.
Bei den gelöschten Datensätzen würde in der Dropbox folgende Datei stehen.
00000000004_2100_del.txt (Inhalt leer oder lassen zum wiederherstellen)
Nun zu meinem Problem!
Ich möchte das andere Geräte Neuanlagen durchführen können. Dann jedoch muss ich die Tabellen mit den unterschiedlichen _id´s zusammenführen. Was bedeutet das ich für jede Tabelle eine zusätzliche ID einführen muss. Also für den Kunden gäbe es dann _id, idKunde, und Name.
Und nun bin ich am Ende. Ab jetzt sehe ich keine Bäume mehr. Bin total verwirrt. Keine Ahnung wie ich jetzt zwei SQLite-Datenbanken sicher zusammenfummeln kann.
Hab Ihr einen Lösungsansatz?
Freue mich über jeden Kommentar.
Nachtrag:
Was haltet Ihr davon wenn ich die IMEI Nr. vom Smartphone in die eigene ID´s packe. Beispielsweise wäre die IDKunde = _id+IMEI-Nr.
Gruß enrem
Zuletzt bearbeitet: