ich stehe vor folgenden Herausforderung. Ich möchte bestimmte update die einige Minuten daueren können auf einer Datenbank durchführen welches erst einmal kein Problem darstellt. Leider läuft auf der gleichen Maschiene ein anderes Programm das in unregelmäßigen abständen die Datenbank runterfährt und diese dann sichert.
Ich möchte nun natürlich die Situation ausschließen, daß währen das Programm welches die Updates durchführt die Datenbank runtergefahren wird. Demzufolge müssten die beiden Programme sich gegenseitig ausschliessen.
Meine erste Idee war dies mit Semaphoren zu realisieren. Was haltet Ihr davon ???
Bin natürlich für eleganteren Lösungen und eure Meinung offen.
Semaphor ist schon mal nicht schlecht. Für derartige Verriegelungen nimmt man gern eine Sonderform, die Mutex heißt und ein paar spezielle Eigenschaften hat. Die wichtigste in diesem Zusammenhang ist: Ein belegter Mutex kann nur von dem Thread oder Prozess wieder freigegeben werden, der ihn zuvor belegt hat.
Die Sache kommt mir irgendwie merkwürdig vor. Warum muss die Datenbank runtergefahren werden, um ein Backup zu machen? So was sollte jedes RDBMS live können -- du musst deinen Kram halt nur in Transaktionen packen. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra