Delphi-PRAXiS
Seite 1 von 2  1 2      

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)

hsg 2. Feb 2007 08:46

Datenbank: ADS • Version: 8.1 • Zugriff über: TAdsDataSet

Sperrung von Datensätzen über mehrere Standorten
 
Hallo DP,

die grobe Aufgabenbeschreibung lautet so:
ich soll die mehrmalige Bearbeitung eines Datensatzes über mehrere Standorte hinweg verhindern, das Lesen des Datensatzes soll dabei aber noch möglich sein.

Die Rahmenbedingungen dazu sind: wir haben drei Standorte, die über Standleitungen miteinander Kommunizieren. In allen drei Standorten gibt es einen Datenbank-Server mit Advantage Database Server (8.1) mit den entsprechenden Datenbanken. An allen drei Standorten sind die Daten aller Standorte vorhanden (wird durch die Replikation des Datenbank-Servers sichergestellt).

Nun ist es ja theoretisch möglich, dass an Standort A und B der Datensatz X geöffnet und bearbeitet wird. Dieses soll ich nun verhindern, stellt sich nur die Frage wie?

Der erste Ansatz wäre ein zusätzliches Datenbank-Feld, das true ist, wenn der Datensatz an irgendeinem Standort geöffnet wird und beim Verlassen wieder auf false gesetzt wird. Hat aber eine Menge Probleme und Nachteile, hat irgendwer andere Vorschläge?

mkinzler 2. Feb 2007 08:53

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

Der erste Ansatz wäre ein zusätzliches Datenbank-Feld, das true ist, wenn der Datensatz an irgendeinem Standort geöffnet wird und beim Verlassen wieder auf false gesetzt wird.
Die Frage wäre hierbei nur, ob die Replikation schnell genug ist, um so eine mehrfache Bearbeitung zu verhindern.

sirius 2. Feb 2007 09:18

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

Zitat von mkinzler
Die Frage wäre hierbei nur, ob die Replikation schnell genug ist, um so eine mehrfache Bearbeitung zu verhindern.

Genau das war auch mein erster Gedanke. Hier müsste man wahrscheinlich direkter über Trigger gehen.

ManuelR 2. Feb 2007 09:26

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

Die Rahmenbedingungen dazu sind: wir haben drei Standorte, die über Standleitungen miteinander Kommunizieren. In allen drei Standorten gibt es einen Datenbank-Server mit Advantage Database Server (8.1) mit den entsprechenden Datenbanken. An allen drei Standorten sind die Daten aller Standorte vorhanden (wird durch die Replikation des Datenbank-Servers sichergestellt).
Hallo

wieso sind die Datenbanken 3-fach vorhanden, wenn die Standorte sowieso über Standleitungen verbunden sind ?

Lösung: nur 1 Datenbankserver, die 2 anderen Standorte greifen remote z.B. über Terminal-Sessions drauf zu.


Viele Grüsse

hsg 2. Feb 2007 09:54

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

Zitat von mkinzler
Zitat:

Der erste Ansatz wäre ein zusätzliches Datenbank-Feld, das true ist, wenn der Datensatz an irgendeinem Standort geöffnet wird und beim Verlassen wieder auf false gesetzt wird.
Die Frage wäre hierbei nur, ob die Replikation schnell genug ist, um so eine mehrfache Bearbeitung zu verhindern.

Trigger über mehrere Standorte? Wie würde sowas gehen?


Zitat:

Zitat von ManuelR

Hallo

Wieso sind die Datenbanken 3-fach vorhanden, wenn die Standorte sowieso über Standleitungen verbunden sind ?

Lösung: nur 1 Datenbankserver, die 2 anderen Standorte greifen remote z.B. über Terminal-Sessions drauf zu.


Viele Grüsse

Weil die Standleitungen öfters mal weg sind und in einem solchen Fall in den einzelnen Werken kein weiteres Arbeiten mehr möglich wäre.
I.d.R. sollte das Bearbeiten von zweimal desselben Datensatzes nicht auftreten, aber es kann eben auch nicht ausgeschlossen werden => Forderung der extrem hohen Sicherheit :evil:

Ich persönlich vermute eigentlich, dass das Problem nie auftreten wird (weil jeder Sachbearbeiter eben seine eigenen Daten bearbeitet) aber mein Chef sieht das etwas anders :?

joachimd 2. Feb 2007 09:54

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

Zitat von ManuelR
wieso sind die Datenbanken 3-fach vorhanden, wenn die Standorte sowieso über Standleitungen verbunden sind ?

Wahrscheinlich wegen Geschwindigkeit und Ausfallsicherheit. Und hier haben wir dann gleich ein Problem: Wenn die Daten editierbar sein sollen, auch wenn die Standleitung ausfällt, so dürfen die anderen Rechner nicht eine Zwangssperrung bekommen, weil sonst das ganze System steht!
Ich würde das mehrfache Editieren zulassen und über Konflikttrigger die Business Rules realisieren (zB einen Zeitstempel mitführen, der neueste Datensatz gewinnt...oder im Konfliktfall die entsprechenden Datensätze mitloggen und zur wiederbearbeitung vorlegen..oder, oder, oder).

hsg 2. Feb 2007 10:04

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

Zitat von joachimd
Zitat:

Zitat von ManuelR
wieso sind die Datenbanken 3-fach vorhanden, wenn die Standorte sowieso über Standleitungen verbunden sind ?

Wahrscheinlich wegen Geschwindigkeit und Ausfallsicherheit. Und hier haben wir dann gleich ein Problem: Wenn die Daten editierbar sein sollen, auch wenn die Standleitung ausfällt, so dürfen die anderen Rechner nicht eine Zwangssperrung bekommen, weil sonst das ganze System steht!
Ich würde das mehrfache Editieren zulassen und über Konflikttrigger die Business Rules realisieren (zB einen Zeitstempel mitführen, der neueste Datensatz gewinnt...oder im Konfliktfall die entsprechenden Datensätze mitloggen und zur wiederbearbeitung vorlegen..oder, oder, oder).

Die Konflikttrigger werden zusätzlich benötigt. Das Problem liegt aber eher weniger an dem Dateninhalt, sondern was mit dem Datensatz u.U. passieren kann: Der Datensatz könnte z.B. ein Angebot (bzw. Auftrag) sein, das abgegeben werden soll: Mitarbeiter A geht in Druckvorschau und bevor er das Angebot ausdruckt oder per Email verschickt, geht er erst einmal zu Mittag.
In der Zwischenzeit kümmert sich der Mitarbeiter B um das Angebot (z.B. weil der Kunde anruft und drängelt) und ändert was daran, druckt es aus und verschickt es.
Nach dem Mittag kommt A wieder, druckt Angebot aus und verschickt es. Folge: der Kunde erhält zwei Angebote mit gleicher Nummer und Änderungsindex und weiss nicht mehr was das soll.

Wie gesagt: ich halte dieses Scenario für relativ unwahrscheinlich, aber mein Chef will das eben so :cry:

mkinzler 2. Feb 2007 10:13

Re: Sperrung von Datensätzen über mehrere Standorten
 
Du kannst das szenario auch so ändern, das alle auf der zentralen DB arbeiten, welche an den Standorten repliziert wird. der Client überprüft dann beim Start ob zentrale Db erreichbar sonst Rückfall auf replizierte DB

hsg 2. Feb 2007 10:20

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

Zitat von mkinzler
Du kannst das szenario auch so ändern, das alle auf der zentralen DB arbeiten, welche an den Standorten repliziert wird. der Client überprüft dann beim Start ob zentrale Db erreichbar sonst Rückfall auf replizierte DB

Dagegen spricht die Geschwindigkeit der Standleitungen (eine ist zur Zeit nur 128K schnell, versuchen die gerade auf 2MBit hochzurüsten, ob das aber klappt weiss noch nicht mal die T-Kom).

mkinzler 2. Feb 2007 10:22

Re: Sperrung von Datensätzen über mehrere Standorten
 
Für eine SQL-Datenbankverbindung sollte das eigentlich reichen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:00 Uhr.
Seite 1 von 2  1 2      

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