![]() |
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 |
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: |
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?
|
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 |
Re: Replikation mit vielen Clients, FB
Ggf. auf BigInt IDs, zusammengesetze Schlüssel, kombinierte schlüssel (fester wert + Generator) oder GUIDs umsteigen
|
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:
Ich müsste jetzt eine Tabelle mit den gültigen Nummernschlüsseln haben
CREATE PROCEDURE PERSONAL_NEWID
RETURNS ( NEWID INTEGER) AS begin newid=gen_id(gen_PERSONAL,1); end (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 |
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 23:31 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