Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Replikation mit vielen Clients, FB (https://www.delphipraxis.net/105375-replikation-mit-vielen-clients-fb.html)

hoika 20. Dez 2007 20:34

Datenbank: Firebird • Version: 1.5 • Zugriff über: egal

Replikation mit vielen Clients, FB
 
Hallo #,

ich habe folgende Aufgabe:

- eine Master-DB
- 50 (jaja ;( ) Laptops, die bestimmte Tabellen
mit der Master-DB synchronisieren sollen

- Am Anfang sind Master-DB und Lappi-DG gleich.
- jetzt wird in die Lappi-DB was geschrieben
in eine bestimmte Tabelle Tab_Y
- wird der Lappi mit dem LAN verbunden,
soll er alle Änderungen aus Tab_Y in die Master-DB zurückschreiben


Ich benutze zur Zeit eine eigene Lösung über den Ansatz,
wie ihn IB (FB) Replicator benutzt.
Es werden alle Änderungen per Trigger (auf dem Lappi) protokolliert
und können dann per Insert/Update) in die Master-DB eingetragen werden.

Doppelte Primärindices werden durch Nummerkreise bei den Generatoren vermieden.

So weit, so gut.

Nur die Anzahl der Laptops (also zu snychronisierenden) DB's macht mir sorgen.

Ich benutze das Konzept zur Zeit mit 2 DB's,
is schon schlimm genug ;)

Kann ich hier in Probleme geraten,
von denen ich noch gar nicht ahne ?

Danke


Heiko

haentschman 20. Dez 2007 20:45

Re: Replikation mit vielen Clients, FB
 
ich denke schon...

Wenn ich das richtig verstehe... Sollen nach dem Synchronisieren alle Laptops auch wieder den Datenbestand der Masterdatenbank haben oder läuft die Synchronisierung nur von Laptop --> Masterdatenbank. :gruebel:

letzteres ist vom Aufwand nicht unbedingt dramatisch...
bei ersterem... kleine Lebensaufgabe :roll:

mkinzler 20. Dez 2007 21:47

Re: Replikation mit vielen Clients, FB
 
Grundsätzlich sollte es mit mehreren genau so wie mit 2 gehen. die ganze Sache wird halt komplexer. Soll nur die haupt-DB synchronisiert werden oder die Änderungen der laptops auch auf die anderen Laptops?

hoika 21. Dez 2007 10:37

Re: Replikation mit vielen Clients, FB
 
Hallo,

die Lappis sollen im "GPRS"-Modus nur Ihre Änderungen (eine Tabelle) in die
Master-DB schreiben.

Ist der laptop in der Firma erfolgt eine komplette Übertragung Master-DB -> Laptop,
so dass er wieder alle Daten hat.

Die Laptops untereinander haben nichts miteinander zu tun.

Ich habe immer so ein bissel Angst, dass die Nummernkreise nicht ausreichen.

Bisher mache ich das immer so.

Master-DB
Id's von 1 - 10 Mio.

Laptop 1
10Mio - 20Mio

Laptop 2
30Mio - 40Mio

usw.

Die Nummernkreise werden über die Generatoren in der DB abgebildet.

Ich habe mich aber noch nicht darum gekümmert, wenn einer der Kreise "voll ist".
Das müsste man dann wohl in der SP machen, die den Generator ausliest/hochsetzt.


Heiko

mkinzler 21. Dez 2007 10:45

Re: Replikation mit vielen Clients, FB
 
Ggf. auf BigInt IDs, zusammengesetze Schlüssel, kombinierte schlüssel (fester wert + Generator) oder GUIDs umsteigen

hoika 21. Dez 2007 13:23

Re: Replikation mit vielen Clients, FB
 
Hallo,

BigInt geht nicht(Dialect 1),
alles andere geht auch nicht, ich kann ja nicht die ganze DB umstellen
wegen der Replikation (gewachsenes System).

Ich denke über die Änderung der SP nach,
die sich die Id eines neuen Datensatzes holt.

Bis jetzt sieht die so aus:

SQL-Code:
CREATE PROCEDURE PERSONAL_NEWID
RETURNS (
    NEWID INTEGER)
AS
  begin newid=gen_id(gen_PERSONAL,1);
end
Ich müsste jetzt eine Tabelle mit den gültigen Nummernschlüsseln haben
(Min,Max) und wenn die neue Id nicht im aktuellen Nummernkreis ist,
beginnt er halt mit dem nächsten Nummernkreis.

Hat das schon mal jemand so implementiert?


Wie sieht es mit der Performance aus?


Heiko

mkinzler 21. Dez 2007 14:11

Re: Replikation mit vielen Clients, FB
 
Sollte eigentlich so funktionieren und auch von der Performance verkraftbar sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz