Online/Offline Datenbanksynchronisation

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von MrTrebron.

    Online/Offline Datenbanksynchronisation

    Guten Tag sehr geehrte Community,

    ich habe bereits vor einigen Monaten die folgende Frage gestellt, jedoch leider keine hilfreiche Antwort bekommen, weshalb ich es nochmal probiere. Im Groben geht es darum, das mein Programm unter anderem 2 Datenbanken per Klick auf einen Button synchronisieren soll, wobei eine der Datenbanken Offline nur auf dem PC vorhanden sein soll und die andere wie eine Cloud funktioniert, auf die auch andere zugreifen können. Der Sinn dahinter ist, das zukünftige Benutzer so genannte Prüfprotokolle verschiedener Geräte erstellen müssen. Diese Protokolle sollen auf dem PC (z.B. in einer Datenbank) gespeichert und falls eine Verbindung zum Internet besteht, direkt automatisch auf einen Cloud-Server hochgeladen werden. Das System soll jedoch in beide Richtungen funktionieren, damit die Benutzer auch ältere oder von anderen erstellte Protokolle jederzeit ohne eine Verbindung zum Internet einsehen/bearbeiten können. Nun meine Fragen: Wie schaffe ich es, das Offline und Cloud Datenbanken per Knopfdruck, auf dem selben Stand sind? Könnte mir jemand dazu vielleicht ein hilfreiches, für leien verständliches Code-Beispiel zeigen? Im Übrigen bin ich auch gerne dazu bereit hilfsbereite Personen mit Geld zu entlohnen! :)

    Vielen Dank!
    Was für eine DB ist es lokal und online? Wie sieht das Datenmodell aus und was davon muss alles synchronisiert werden? Werden lokal nur neue Daten erfasst, oder bestehende (gedownloadete) Daten geändert?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    ChrisBe schrieb:

    wobei eine der Datenbanken Offline nur auf dem PC vorhanden sein soll

    ChrisBe schrieb:

    Ich hatte da an Mysql gedacht

    MySQL ist eine serverbasierte DB.
    Willst du auf jedem lokalen PC einen MySQL-Server starten?

    In die Cloud kannst du ja einen SQL-Server stellen, aber lokal solltest du auf eine dateibasierte Lösung wie SQLight setzen.

    Ggf. kannst du auch die Kombination MS-SQL als Server- und als Express-Version verwenden, dann hast du die (fast) selbe Technik bei beiden DBs.

    Oder ist dein lokaler PC immer derselbe und kann auch als MySQL-Server agieren?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Der gleiche Datensatz wird auf 2 Clients geladen und dort verändert. Dann von beiden wieder hochgeladen. Was soll mit den Daten nun passieren?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Wie sehen denn die Daten der Protokolle aus?
    Vielleicht bietet sich ja auch NoSQL, wie MongoDB, an.
    Zwei wichtige Dinge:
    1. Wenn neue Datensätze auf einem offline Client erzeugt werden sollen, bietet es sich an statt einer UniqueID vom Server eine GUID auf dem Client erzeugen zulassen und somit eine Eindeutigkeit zu erstellen.
    2. Wie soll vorgegangen werden wenn zwei Personen offline einen Datensatz ändern. Oder einer Online, einer Offline. Hier benötigst du ein Merge-Feature wie zum Beispiel bei GIT.
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.