Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Sperrung von Datensätzen über mehrere Standorten (https://www.delphipraxis.net/85610-sperrung-von-datensaetzen-ueber-mehrere-standorten.html)

Mavarik 2. Feb 2007 10:23

Re: Sperrung von Datensätzen über mehrere Standorten
 
Wenn die Standleitung weg ist kannst Du doch auch nicht mehr sperren, also muss doch sowieso eine bessere Lösung her, oder?

Frank :coder:

sirius 2. Feb 2007 10:31

Re: Sperrung von Datensätzen über mehrere Standorten
 
Varaiante 1:
Da kann man nur einzelne Arbeitschritte in unterschiedliche Kategorien einstufen. Sodass Aktionen aus Kategorie 1 (Briefe verschicken an Kunden) nur durchführbar sind, wenn alle 3 Datenbanken verfügbar sind und damit durch einen Lcient oder durch die Datenbanken selber oder... vorherabgeglichen und damit freigegeben werden können.


Varainte 2:
-Festlegen, dass nur Datensatz A (=Kunde xyz) auf Server 1 der einzig Richtige ist (und Datensatz B auf Server 2; je nachdem wo es wichtiger ist).
-Diese Informationen auf allen 3 Servern hinterlegen. also, dass jeder weis, auch wenn er grad keine Verbindung zu Server 1 hat, dass nur dort die richtigen Daten liegen und er eine (womöglich falsche) Kopie hat.
Dadurch kann jemand, der auf Server 2 arbeitet sehen, dass er den einen Datensatz unbedingt mit Server 1 vorher (vorm Versenden) abgleichen muss.

hsg 2. Feb 2007 10:37

Re: Sperrung von Datensätzen über mehrere Standorten
 
Zitat:

Zitat von mkinzler
Für eine SQL-Datenbankverbindung sollte das eigentlich reichen.

Bei 120 Usern die intensiv mit dem Programm arbeiten? Ich finde das schon alleine manchmal sehr träge.
Meine Applikation muss sich mit der Geschwindigkeit von mehreren Dos-Programmen messen, da sieht es lokal schon manchmal traurig aus (wobei ich auch wesentlich mehr Information auf einmal zur Verfügung stelle als die DOS-Programme und versucht habe mich dabei nur auf das Wesentliche zu konzentrieren, die GL will dort manchmal noch viel mehr Möglichkeiten haben)

Zitat:

Zitat von Mavarik
Wenn die Standleitung weg ist kannst Du doch auch nicht mehr sperren, also muss doch sowieso eine bessere Lösung her, oder?

Frank :coder:

Wenn du eine hast: her damit!

kalmi01 2. Feb 2007 11:59

Re: Sperrung von Datensätzen über mehrere Standorten
 
Zitat:

Wenn die Standleitung weg ist kannst Du doch auch nicht mehr sperren, also muss doch sowieso eine bessere Lösung her, oder?

Wenn du eine hast: her damit!
Ich mache soetwas ähnliches ungefähr so:
1.) Server "unterhalten" sich per UDP untereinander (Jeder mit Jedem)
2.) Sobald 1 Server nicht mehr mit den anderen "spricht" schalten alle die Protokolierung ein
3.) Wenn wieder alle online sind, gleichen sie untereinander die Protokolle ab
4.) werden Transaktionen an gleichen Datensätzen festgestellt ==> Warnmeldung an den Anwender

In den Protokollen werden relevante Transaktionen festgehalten, z.B. wenn der Datensatz verändert wurde.
Jeder Server vergleicht die Protokolle der anderen beiden mit seinem eigenen.

UDP, weil es einfach ein Packet versendet, ohne sich drum zu kümmern, ob es ankommt.
Das ist wichtig, sonst wird bei Verlust der Verbindung der Server ausgebremst, weil er
versucht seine Packete los zu werden.

hsg 2. Feb 2007 12:23

Re: Sperrung von Datensätzen über mehrere Standorten
 
Zitat:

Zitat von kalmi01
Ich mache soetwas ähnliches ungefähr so:
1.) Server "unterhalten" sich per UDP untereinander (Jeder mit Jedem)
2.) Sobald 1 Server nicht mehr mit den anderen "spricht" schalten alle die Protokolierung ein
3.) Wenn wieder alle online sind, gleichen sie untereinander die Protokolle ab
4.) werden Transaktionen an gleichen Datensätzen festgestellt ==> Warnmeldung an den Anwender

In den Protokollen werden relevante Transaktionen festgehalten, z.B. wenn der Datensatz verändert wurde.
Jeder Server vergleicht die Protokolle der anderen beiden mit seinem eigenen.

UDP, weil es einfach ein Packet versendet, ohne sich drum zu kümmern, ob es ankommt.
Das ist wichtig, sonst wird bei Verlust der Verbindung der Server ausgebremst, weil er
versucht seine Packete los zu werden.

Was du machst, macht für mich die Replikation des Datenbank-Servers. Bei Kollisionen auf den Daten gibt es entsprechende OnConflict-Trigger die dann von mir irgendwie behandelt werden müssen.
Dies ist aber nicht mein Problem.


Zitat:

Zitat von sirius
Varainte 2:
-Festlegen, dass nur Datensatz A (=Kunde xyz) auf Server 1 der einzig Richtige ist (und Datensatz B auf Server 2; je nachdem wo es wichtiger ist).
-Diese Informationen auf allen 3 Servern hinterlegen. also, dass jeder weis, auch wenn er grad keine Verbindung zu Server 1 hat, dass nur dort die richtigen Daten liegen und er eine (womöglich falsche) Kopie hat.
Dadurch kann jemand, der auf Server 2 arbeitet sehen, dass er den einen Datensatz unbedingt mit Server 1 vorher (vorm Versenden) abgleichen muss.

Die Lösung hört sich schon mal nicht schlecht an, innerhalb eines Standortes wird dann noch der Datensatz gelockt damit gleiche Zugriffe innerhalb eines Standortes nicht gehen......
Muss ich mal weiter durchdenken und mit meinem Chef bequatschen, hat mir aber schon mal viel weiter geholfen.
Für weitere Ideen bin ich natürlich auch noch offen
:dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 Uhr.
Seite 2 von 2     12   

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