AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird Master/Slave Replikation
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird Master/Slave Replikation

Ein Thema von Kostas · begonnen am 2. Sep 2024 · letzter Beitrag vom 3. Sep 2024
Antwort Antwort
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.095 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Firebird Master/Slave Replikation

  Alt 2. Sep 2024, 20:41
Datenbank: Firebird • Version: 3.0 • Zugriff über: FireDac
Hallo Zusammen,

die Frage vorab: 120MB FB 3.0 Datenbank replizieren ohne Trigger und Log-Table, oder Backup-/Restore Variante?

ich habe ein Projekt mit einer Firebird 3.0 DB auf einem Server laufen. Im LAN funktioniert alles perfekt. Jetzt soll für ein Event für drei Wochen, von einer Webanwendung zugegriffen werden. Dieser Event wird jedes Jahr wiederholt. Die Web-Anwendung haben wir in Next.js umgesetzt, die über ein Node.js Projekt auf die Firebird DB zugreift. Wenn die Webanwendung über diesen Weg auf die DB zugreift, könnte es wegen der vielen Userzugriffe zu Problemen führen da die Internetleitung nur eine SDSL 100MBit Leitung ist.

Jetzt ist die Idee entstanden die Datenbank zu replizieren und zwar NUR vom Master zum Slave. Die zweite DB hat NUR die Aufgabe irgendein Blödsinn auf eine Webseite darzustellen also NUR lesender Zugriff. Mit Replikation habe ich mich noch nicht beschäftigt. Aus früheren Jahren habe ich mal gelesen, dass Firebird die Replikation so macht, dass jede Änderung in einer Tabelle über Trigger geschrieben wird und diese Daten werden dann abgeglichen. Dieses Konzept wäre nicht so gut geeignet da alle 5min. ca. 50000 Records gelöscht, berechnet und wieder geschrieben werden. Dieselbe Menge würde dann auch auf dieser Log-Tabelle geschrieben werden müssen. Der Vorgang die 50000 Records zu generieren und zu schreiben über SPs dauert übrigens ca. 1.2min. Meine Versuche in diesem Zeitraum die Daten im LAN über die Webanwendung darzustellen schafft FB spielend und die Webseite reagiert in Echtzeit. Nur die 100MBit SDSL-Leitung die ein Upload von ca. 30MBit hat, wird vermutlich ein Problem werden.

Gibt es mit FB 3.0 eine andere Form der Replikation die komplett ohne Trigger und Log-Tabelle auskommt? Ich meine gelesen zu haben, FB 3.0 kann so etwas wie ein inkrementelles oder so ähnlich Backup erzeugen. Gibt es eine Möglichkeit im laufenten Betrieb ein Restore gekapselt in einer Transaktion durchzuführen oder muss die DB zu diesem Zeitpunkt down sein? Die DB ist übrigens ca. 130MB groß nach einem halben Tag ohne Backup und Restore. Nach einem Restor wird die DB sicherlich ca. 50MB groß sein wegen den gelöschten Records.
  Mit Zitat antworten Zitat
Amanda

Registriert seit: 31. Mär 2019
21 Beiträge
 
#2

AW: Firebird Master/Slave Replikation

  Alt 2. Sep 2024, 23:19
https://www.ibexpert.net/ibe/uploads...eplication.pdf
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
672 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Firebird Master/Slave Replikation

  Alt 3. Sep 2024, 09:47
oder (relativ neu von uns) out of the box
https://ibexpert.net/cms/ibexpert-re...nterprise-iber
damit kannst du die tabelle dann rausfiltern, die so einen mumpitz macht, ich geh davon aus das es für dein replikat begrenzt wichtig ist
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#4

AW: Firebird Master/Slave Replikation

  Alt 3. Sep 2024, 15:41
Dieses Konzept wäre nicht so gut geeignet da alle 5min. ca. 50000 Records gelöscht, berechnet und wieder geschrieben werden. Dieselbe Menge würde dann auch auf dieser Log-Tabelle geschrieben werden müssen. Der Vorgang die 50000 Records zu generieren und zu schreiben über SPs dauert übrigens ca. 1.2min.
Wahrscheinlich ändert sich nicht jeder Wert alle 5min.
Jeder Datensatz den man nicht schreibt, spart Zeit.
Also besser jeden Record erst berechnen, mit dem alten Wert vergleichen und dann erforderlichen Falls aktualisieren.

Handelt es sich um eine Folge von Werten, bei der aufeinander folgende Werte häufig gleich sind?
Dann würde es vieleicht reichen nur die Datensätze zu schreiben, die sich zum Vorgänger ändern.
Muss man zwar beim Lesen der Daten berücksichtigen, aber weniger Daten spart Zeit beim Schreiben und Lesen.
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.095 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Firebird Master/Slave Replikation

  Alt 3. Sep 2024, 16:06
Wir versuchen jetzt einen anderen Weg über Backup/Restore. Die DB ist klein. Das Backup File kann gut komprimiert werden. Die Idee ist nun, der Server mach ein Backup, zipt und sendet über VPN das File auf dem WebServer. (Windows Maschine) Auf dem WebServer läuft ein Dienst der den Restore durchführt. Anschließend beendet die Node.js Anwendung die Connection, ersetzt die DB und startet wieder. Die down time der DB wäre damit 2-3 Sekunden. Da die Web-Anwendung über Next.js Statuslos ist, sollte es kaum Probleme geben. Das wollen wir so mal versuchen.
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#6

AW: Firebird Master/Slave Replikation

  Alt 3. Sep 2024, 16:21
Alternativ die Übertragung der betreffenden Tabelle vom Client starten.
Damit sollten alle Datensätze in einem Block übertragen werden und die Latenzzeit für jeden einzelnen Datensatz entfällt.
Code:
insert into tabelle
  (id, ...)
select (id, ...) from server.tabelle
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#7

AW: Firebird Master/Slave Replikation

  Alt 3. Sep 2024, 16:24
Man könnte auch auf dem Client immer zwischen zwei DB umschalten.
Eine die gerade übertragen wird und eine für die Abfragen.
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.095 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Firebird Master/Slave Replikation

  Alt 3. Sep 2024, 16:31
Wir bauen gerade so einen Versuch auf. Mal sehen wie die Webseite reagiert.
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:06 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