14 Synchronisation in Shared-Disk-DBS
14.5 Token-Ring-Sperrprotokolle
Eine Alternative zur Nutzung eines Globalen Lock-Managers ist, globale Sperranforderungen durch alle Rechner zu gewähren. Ein solcher Ansatz kann durch eine logische Token-Ring-Topologie erreicht werden, bei der globale Sperranforderungen zusammen mit einem Token reihum an alle Rechner weitergeleitet werden. Dabei überprüft ein Rechner nach Eingang des Tokens, ob die globalen Sperranforderungen anderer Rechner mit den lokal laufenden Transaktionen verträglich sind. Die Ergebnisse dieser Überprüfungen werden dann mit dem Token an den nächsten Rechner in der Ring-Reihenfolge übergeben, so daß nach einem Ringumlauf das Ergebnis der Sperranforderung feststeht. Der Kommunikationsaufwand eines solchen Aufwandes ist relativ gering, da eine Nachrichtenbündelung quasi im Protokoll eingebaut ist (Übertragung mehrerer Sperranforderungen und Antworten in einer Nachricht). Der Kommunikationsaufwand läßt sich noch weiter reduzieren, indem das Token an jedem Rechner eine bestimmte Zeit festgehalten wird, um einen größeren Bündelungseffekt zu erzielen. Allerdings liegt für globale Sperranforderungen eine sehr hohe Bearbeitungsdauer vor, die mit der Token-Verweilzeit sowie der Rechneranzahl zunimmt. Token-Ring-Ansätze sind daher allenfalls für sehr wenige Rechner von Interesse.
Abb. 14-8: Prinzip des Pass-the-Buck-Protokolls von IMS
Ein solches Token-Ring-Verfahren namens Pass the Buck wird von IMS Data Sharing eingesetzt [SUW82, Yu87]. Es ist auf zwei Rechner beschränkt. Um die Anzahl globaler Sperranforderungen zu reduzieren, wird dabei eine spezielle Globale Hash-Tabelle (GHT) verwendet, die an beiden Knoten repliziert ist. Darin werden für jede Hash-Klasse der Sperrtabelle zwei Bits (interest bits) geführt, die anzeigen, welche der beiden Rechner "Interesse" für Objekte der Hash-Klasse haben (Abb. 14-8). Interesse eines Rechners liegt dabei vor, sobald eine seiner Transaktionen für ein Objekt der Hash-Klasse eine Sperranforderung gestellt hat. Zeigt die Hash-Tabelle, daß nur der lokale Rechner Interesse hat, dann können die zugehörigen Objekte sofort lokal synchronisiert werden. So zeigt die Bitkombination 10 (bzw. 01) an, daß nur in Rechner 1 (bzw. Rechner 2) Sperranforderungen für Objekte der Hash-Klasse vorliegen. Damit wird an Rechner 1 (bzw. 2) eine lokale Sperrvergabe für sämtliche Objekte der Hash-Klasse möglich, da ein Konflikt mit Transaktionen des anderen Rechners ausgeschlossen ist[61]. GHT-Änderungen sind nur bei Token-Besitz möglich. Sie werden mit dem Token an den anderen Rechner übertragen, damit dieser seine Version der Hash-Tabelle aktualisieren kann.
Die GHT realisiert offenbar Schreibautorisierungen auf Ebene von Hash-Klassen. Im Prinzip ist es auch bei diesem Sperrprotokoll möglich, Schreib- und Leseautorisierungen für andere Objektgranularitäten zur weitergehenden Einsparung globaler Sperranforderungen zu nutzen [HR85, Ra88b].
[61] Selbst bei einem 00-Eintrag kann eine lokale Sperrvergabe erfolgen, jedoch nur bei Token-Besitz. In IMS wird in diesem Fall aus Recovery-Gründen die Sperrvergabe zusätzlich verzögert, bis die GHT des anderen Rechners aktualisiert wurde.