Datenbank-Abgleich Tablet <-> KundenDB Internet

T

Tom299

Stammgast
122
Hallo Leute,

wenn ich eine Kunden-DB aus dem Internet aufs Tablet abgleichen will (Größenordnung bis zu 4GB), welche Möglichkeiten hab ich da?

Meine erste Idee ist, ein Backup auf dem Server durchzuführen (evtl. eigenes Backup schreiben, da die DB auf dem Kunden-Server noch nicht festgelegt wurde und nicht SQLite sein muß). Das Backup zippen, mit dem Tablet runterladen, entpacken und dann die Inserts in die DB reinschaufeln.

Gibt es noch andere / bessere / performantere Möglichkeiten, den Abgleich zu machen? Bei 4GB Daten ist ein Webservice bzw. XML-Datenstrom wohl nicht so toll, oder? ;-)

Wegen DB-Limit hab ich mich schon umgeschaut, theoretisch sind 140TB möglich, also sollten 4GB in der DB keine Probleme machen? DB sollte vermutlich auf der SD-Karte dann liegen wegen der Größe.


Jemand noch Ideen, Vorschläge, Kritik dazu? Bin für alles dankbar :)


Gruß,
Tom

PS: Apropo Limits, gibts Größen-Limits, was das App-Verzeichnis betrifft? Vermutlich muß ich viele Dateien auch lokal ablegen, z.B. Bilder, Videos, PDFs des Kunden, um diese auch auf dem Tablet anzeigen zu können. Ich nehme an, auch hier sollte ich die SD-Karte benutzen und das Limit wird dann durch die SD-Karte bestimmt?
 
hmm ich finde die Grundidee eine 4 GB Datenbank auf das tablet zu schaufeln schon merkwürdig.

was steht denn in dieser datenbank?
Wenn das Tablet verloren geht hat im Zweifel jeder Zugriff auf die Datenbank die dann darauf rumliegt.
Das kann doch nicht gewollt sein.

Warum muss die Datenbank auf dem Tablet liegen?
Wie oft wird die Datenbank aktualisiert?
Webservice wäre eigentlich immer mein Vorschlag, wenn das Tablet Internetzugang hat, man muss ja nicht die komplette Datenbank kopieren in den meisten Fällen.

4GB ist jetzt auch keine besonders große Datenabank, nur wie schon gesagt warum muss die aufs tablet?!
 
der kunde will die daten aufs tablet ablegen, damit die mitarbeiter dann offline mit dem teil arbeiten. wie oft eine synchro stattfindet, weiß ich noch nicht. wir haben bis jetzt nur ein paar infos zu dem projekt.
es ist jedenfalls vom kunden vorgesehen, daß er die tablets kauft und selbst einrichtet und daß die mitarbeiter dann damit rumlaufen, aber nur offline arbeiten.

für mich sind 4GB schon ne menge an daten, grad wenn man sie aufs tablet schaufeln will. aber den einwand verstehe ich, mir würde auch ein webservice besser gefallen, aber dafür muß man online gehen können und das scheint wohl nicht der fall zu sein. also braucht man die db lokal auf jedem gerät.

ich kenn auch die bewegungsdaten bzw. deren menge nicht, vielleicht wäre ja auch ein abgleich möglich, anstatt immer die ganze db zu überbügeln.

denkbar wäre aber auch, die tabellen einzeln zu sichern und zu übertragen, dann könnte man das backup quasi in kleinere teile zerlegen und bei verbindungsproblemen müßte man nicht das komplette file neu laden.
 
Schwierig wird es wenn die Mitarbeiter selbst auch noch Änderungen an der DB vornehmen.
Die muss man dann nämlich irgendwie in die Haupt-DB zurück bekommen ohne dass diese sich gegenseitig überschreiben.

Sinn voll wäre dann evtl auf der Haupt-DB eine art Logging die sich merkt wann welche Aktion gemacht wurde, dann kann man mit dem Tablet hingehen und sagt der DB "Mein Letzter stand ist vom xx.xx.xxxx gibt mir alle änderungen seit dem"

Dann muss man auf das Tablet nicht immer die komplette DB kopieren.
So könnte man auch online backups einbauen, also kurz online mit dem Tablet neusten Daten holen fertig.

Aber ingesamt brauchts wohl noch mehr Infos um entscheiden zu können was für diesen Fall nun sinnvoll ist und was nicht.
 
Wenn es um so große Datenbanken geht, will man schon ein inkrementelles Syncen. Aber solche Sachen können je nach Schema recht komplizert und zu einer richtigen Wissenschaft werden. Ich würde schon versuchen, eine DB replication Library zu nutzen.

Wie schon angesprochen, wichtig ist, ob die sync in eine oder beide Richtungen gehen muss, wie groß die Änderungen zwischen zwei Syncs sind und wie kompliziert das DB Schema ist, ob referentielle Integrität ein Thema ist.
 
Also gestern wurde es mir so erklärt, daß ein Mitarbeiter NIE irgendwelche Daten ändert / ändern kann und daher kein Abgleich mit der "Haupt"-DB stattfindet sondern quasi immer nur ein Download der DB auf das Tablet, damit der Mitarbeiter die aktuellen Produkte zur Verfügung hat.
Später soll der Mitarbeiter dann wohl Aufträge bzw. Bestellungen generieren können, also muß er irgendwo dann doch online gehen. Das soll aber wohl erst in einem späteren Schritt kommen.
Die finalen Infos gibts wohl erst, wenn wir das Projekt wirklich bekommen, aber ich mach mich halt schon mal im Voraus schlau ;-)
 
Tom299 schrieb:
Das Backup zippen, mit dem Tablet runterladen, entpacken und dann die Inserts in die DB reinschaufeln.

Habe ich im letzten Projekt genau so gemacht ^^ Jedoch war die Datenbank erheblich kleiner, jedoch selbe Anforderungen.

Eventuell könnte man schauen das man die etwaige SD-Karten so vorkonfigurieren kann das die App direkt eine Datenbank zur Verfügung hat? Sprich SD-Karten am Recher konfigurieren/updaten/kopieren und dann nur noch ins Tablet stecken. Wie und ob das geht weis ich nicht, würde sich aber vermutlich lohnen das zu recherchieren :)

Je nachdem was das für Daten sind, wird sich das Tablet beim Anlegen der Datenbank vielleicht zu Tode inserten^^
 
Also der Kunde wird beim 1. Ausliefern die Tablets selbst installieren und die DB aufspielen (wie auch immer). Aber danach ist es nicht mehr angedacht, daß die Mitarbeiter bzw. Kunden ihre Tablets einschicken oder vorbeibringen, um Updates durchzuführen, das soll dann schon "online" funktionieren.

Neben der DB werden aber auch noch Medien-Dateien runtergeladen (Bilder, Videos, PDFs) und lokal installiert. Der Mitarbeiter soll quasi alle digitalen Inhalte offline zur Verfügung haben.

Vielleicht hat sich der Kunde auch noch keinen richtigen Kopf darum gemacht, was für ein Datenvolumen und Aufwand hier anfällt. Ohne WLAN geht da wohl eh nix, sonst gibts gleich ne Drossel ;-)
 
Hört sich auch nach einem Fall für ne Datencloud an die das automatisch auf allein Clients aktualisiert. Da muss das Rad nicht neu erfunden werden.
 
Je nachdem was das für Daten sind, wird sich das Tablet beim Anlegen der Datenbank vielleicht zu Tode inserten^^

Richtig erkannt. Es gibt nur ein praktikablen Weg:
SQLite-DB auf dem Server generieren und auf das Tablet kopieren.

Das soll aber wohl erst in einem späteren Schritt kommen.

Solche Schritte kenne ich. "Akademisch angeflanscht" :thumbup:

Mein Letzter stand ist vom xx.xx.xxxx gibt mir alle änderungen seit dem

Ansatz korrekt. Hinzukommt:

-Art der Änderung
-wer hat die Änderung durchgeführt
-wer ist der Ersteller des Datensatzes


Ich habe so etwas schon durch. Wenn die DB auf dem Server eine "Kopie"
ist, muss zum Abgleich diese um genannte Felder erweitert werden.
Sollte es die orginal-DB sein muss evtl. auch die Desktop-App die neuen
notwendigen Felder unterstützen.

Überlegungen zu Updates der Tablet-App und Strukturänderungen in der
DB sind sinnvoll. Evtl. ist es nicht möglich alle Tablets gleichzeitig auf den
neuen Stand zu bringen :smile:

Sicherlich wird es auch zu löschende Datensätze irgendwann geben.
Wenn die DB am Server die orginal-DB ist, muss die Desktop-App das
berücksichtigen. Wenn auf dem Server eine "Kopie" liegt nicht. Dann
würden die Datensätze nur markiert.

Ziel muss sein, dass die Synchronisation sich nur auf für diese speziell
erstellte Spalten einer Tabelle bezieht und auf Anwendungsdaten nicht
zurückgreift.

Fremdschlüsselbeziehungen müssen ebenso beachtet werden. Ist aber
nicht besonders kompliziert.

Probleme könnte es geben, wenn die orginal-DB keine UUID's verwendet !
Dann müsste der PK auf den Tablets aus zwei zusammengesetzten Spalten
bestehen, ( "AI"-Tablet, PK-Server-DB )

In dem Fall muss die AI-Sequenz von Dir geführt werden.

Das Thema würde auch FK's einbeziehen !

Das ist bei der Generierung der SQLite-DB auf dem Server zu beachten :thumbup:

Wenn Du den Sync über ein Webservice machst, wie oft empfohlen, dann
gestallte diesen generisch. Die Sync-Logik darf nichts über die Struktur
der Anwendungsdaten wissen. Je nach Anzahl der eingesetzten Tablets
wird eine Versionierung früher oder später zur Hölle.


Gehe davon aus, deine Aufgabe wird sein eine Lösung für Tablets
anzubieten ohne Einfluss auf die Desktop-App und Änderungen für diese
einzufordern. Oder kläre das genau vorher ab.

Sonst werden die "späteren Schritte" die Hölle oder zu Sackgasse :thumbsup:

Insgesamt eine interessante Aufgabe, die Du da evtl. bekommst.

TIP:
Ich selbst habe damals ein paar Diplomarbeiten zu dem Thema angesehen.

Vielleicht hat sich der Kunde auch noch keinen richtigen Kopf darum gemacht, was für ein Datenvolumen und Aufwand hier anfällt.

Mit Sicherheit, ist auch nicht seine Aufgabe.

Hört sich auch nach einem Fall für ne Datencloud an die das automatisch auf allein Clients aktualisiert.

Nicht jeder ist von Datencloud überzeugt. Evtl. sind nicht alle Voraussetzungen für die Automatik erfüllt, oder die Automatik erfüllt nicht alle Voraussetzungen.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Tom299
Tom299 schrieb:
Ohne WLAN geht da wohl eh nix, sonst gibts gleich ne Drossel ;-)

Das hängt von der Firma ab. Der Telekom dürften Volumenlimits am Arsch vorbei gehen :D
 

Ähnliche Themen

S
Antworten
33
Aufrufe
2.668
Sempervivum
S
Zurück
Oben Unten