AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Thread getriebene SQLite Zwischenschicht?!

Ein Thema von Mavarik · begonnen am 4. Nov 2014 · letzter Beitrag vom 6. Nov 2014
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.152 Beiträge
 
Delphi 10.3 Rio
 
#1

Thread getriebene SQLite Zwischenschicht?!

  Alt 4. Nov 2014, 16:50
Hallo Zusammen!

Ich habe folgende Situation:

Eine Software die in verschiedenen Filialen eingesetzt wird.
Zur Zeit hat jede Filiale einen eigenen MySQL-Server und es gibt einen globalen MySQL-Server im Internet.
Direkt auf dem globalen Server zu arbeiten ist zu langsam, da teilweise die Internetverbindung zu schlecht, langsam und instabil ist.

Es gibt zwei "FEDERATED" Tabellen. Eine für die Log's die andere für die Datenbank-Versionsverwaltung.

Wenn eine Datenbank geöffnet wird, schaut die Software erst nach, ob auf dem Server Datensatzänderungen sind, die erst auf den lokalen Server übertragen werden müssen. Nach dem Close schreibt die Software die geänderten Datensätze auf den globalen Server und gibt die Datenbank wieder frei.

Soweit so "gut"... Das funktioniert so recht gut seit ca. 3 Jahren.

Leider:
a.) passiert es immer wieder, dass während dem Datentransfer die Verbindung zum Server abraucht.
b.) ist ggf. die Wartezeit nach einem Open der Datenbank recht lange, wenn die andere Seite viele Daten eingefügt hat.

Daher überlege ich eine Zwischenschicht auf beiden Seiten ein zu führen. Diese soll als eigenständige Software oder als Thread im Hintergrund für den Abgleich sorgen.

Als Idee hatte ich eine Firedac Memtable gedacht, diese soll sowohl als Cache als auch als Puffer für die Übertragung dienen.

Oder hat jemand eine bessere Idee. (Bitte nur, wenn ich nicht das komplette Konzept umstellen muss)

Grüsse Mavarik
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: Thread getriebene SQLite Zwischenschicht?!

  Alt 4. Nov 2014, 17:12
Ich hab jetzt keine Ahnung von MySQL, aber kann man das die Datenbank(server) nicht selber (mit entsprechenden Tools) erledigen lassen? Stichworte vllt. Replikation oder Spiegelung von Datanbanken?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von rapante
rapante

Registriert seit: 3. Jun 2009
Ort: OPR
172 Beiträge
 
Delphi 12 Athens
 
#3

AW: Thread getriebene SQLite Zwischenschicht?!

  Alt 4. Nov 2014, 17:14
Was spricht denn gegen eine Master/Slave-Replikation?
Wir haben das bei uns zumindest so implemntiert, dass jede Filiale einen eigenen Slave-Server für Lesezugriffe hat
und geschrieben wird auf dem entfernten Master.
Micha
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Thread getriebene SQLite Zwischenschicht?!

  Alt 4. Nov 2014, 18:16
Schau mal hier rein, ich denke, daß sollte Dir weiter helfen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.152 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Thread getriebene SQLite Zwischenschicht?!

  Alt 4. Nov 2014, 18:24
Das hat sich eigentlich von Anfang an ausgeschlossen, da SlaveA nicht die Datenbank auf SlaveB sperren kann.

Daher funktioniert das nicht..

Mavarik

PS.: Die Frage lautet... Firemonkey MemTable oder "nimm besser einen balSchnickschnackProviderComanndqueryproducer" <- keinen Plan...

Dachte sowas mit ApplyUpdates (noch nie versucht Schnickschnack...)

Geändert von Mavarik ( 4. Nov 2014 um 18:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Thread getriebene SQLite Zwischenschicht?!

  Alt 4. Nov 2014, 19:51
Das mit dem Thread verstehe ich nicht. Was ich verstehen würde wäre eine Service-Anwendung, die für den Abgleich sorgt. Allerdings sehe ich die nicht auf der Seite vom Hauptserver, der braucht die nicht.

Der Service kümmert sich fortlaufend um den Abgleich mit dem Hauptserver. Dazu sperrt er die Datenbank (so wie die Anwendung z.B. Status 1), trägt die Daten vom Hauptserver ein und gibt die Datenbank wieder frei (Status 0).

Während die Anwendung läuft erfolgt kein Abgleich. Wird die Anwendung beendet, dann wird die nicht freigegeben, sondern in den Status 2 (neue lokale Daten vorhanden) und ist damit für die Anwendung weiterhin gesperrt.

Jetzt verbindet sich der Service wieder mit der Datenbank, setzt den Status auf 1, überträgt die Daten zum Hauptserver und macht ansonsten den normalen Abgleich vom Hauptserver.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#7

AW: Thread getriebene SQLite Zwischenschicht?!

  Alt 4. Nov 2014, 20:26
Die Idee von Sir Rufo würde bedeuten, irgendwie irgendwo ein zweites Programm zu starten. Fände ich auch naheliegend, wobei dann eventuell noch kleinere Synchronisationsprobleme gelöst werden müssen (Datensatz wird aktualisiert, während er in Bearbeitung ist).

Die Idee mit dem Thread ist dann verständlich, wenn kein zweites Programm laufen soll. Dann ist dieser 'Service' eben ein Thread.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#8

AW: Thread getriebene SQLite Zwischenschicht?!

  Alt 5. Nov 2014, 16:20
...
Leider:
a.) passiert es immer wieder, dass während dem Datentransfer die Verbindung zum Server abraucht.
b.) ist ggf. die Wartezeit nach einem Open der Datenbank recht lange, wenn die andere Seite viele Daten eingefügt hat.
...
@Dejan Vu & @Sir Rufo
Ihr macht Euch viel zu viele Gedanken. Das Funktioniert doch schon alles...

OnBeforeOpen
- Get New & Lock
OnAfterClose
- Post New & Unlock
Also wenn alles funktioniert, was willst Du dann? Ich denke, es geht gerade so *nicht*. Da kann man dann schon mal nachdenken. Aber da alles funktioniert, ist ja auch alles klar und es gibt keine Probleme.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.152 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Thread getriebene SQLite Zwischenschicht?!

  Alt 5. Nov 2014, 16:31
Also wenn alles funktioniert, was willst Du dann? Ich denke, es geht gerade so *nicht*. Da kann man dann schon mal nachdenken. Aber da alles funktioniert, ist ja auch alles klar und es gibt keine Probleme.
- wie gesagt. Es gibt Abbrüche und ich will die MySQL Componenten wechseln.
- und modernisieren.

Nur weil etwas funktioniert bedeutet es doch nicht, dass es nicht noch besser funktionieren kann...
Aber meine Frage war ja Firedac Memtable ja oder etwas anderes.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Thread getriebene SQLite Zwischenschicht?!

  Alt 5. Nov 2014, 16:44
Also wenn alles funktioniert, was willst Du dann? Ich denke, es geht gerade so *nicht*. Da kann man dann schon mal nachdenken. Aber da alles funktioniert, ist ja auch alles klar und es gibt keine Probleme.
Mann, es läuft nicht optimal und er wehrt sich alles auf den Müll zu schmeißen, nur um die Superduperdistributetobjectorienteddatastoragelösu ng zu installieren, bei der in 3 Jahren jeder die Schulter zuckt und fragt was das alte Zeug soll.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz