![]() |
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? |
Re: Sperrung von Datensätzen über mehrere Standorten
Zitat:
|
Re: Sperrung von Datensätzen über mehrere Standorten
Zitat:
|
Re: Sperrung von Datensätzen über mehrere Standorten
Zitat:
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 |
Re: Sperrung von Datensätzen über mehrere Standorten
Zitat:
Zitat:
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 :? |
Re: Sperrung von Datensätzen über mehrere Standorten
Zitat:
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). |
Re: Sperrung von Datensätzen über mehrere Standorten
Zitat:
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: |
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
|
Re: Sperrung von Datensätzen über mehrere Standorten
Zitat:
|
Re: Sperrung von Datensätzen über mehrere Standorten
Für eine SQL-Datenbankverbindung sollte das eigentlich reichen.
|
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: |
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. |
Re: Sperrung von Datensätzen über mehrere Standorten
Zitat:
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:
|
Re: Sperrung von Datensätzen über mehrere Standorten
Zitat:
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. |
Re: Sperrung von Datensätzen über mehrere Standorten
Zitat:
Dies ist aber nicht mein Problem. Zitat:
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 19:44 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-2025 by Thomas Breitkreuz